GitHubで何か自動化するならdeploy keysが便利だ

GitHubで特定リポジトリに対して何かを自動化する時、専用のアカウント用意しないとダメかなー、なんて考えていたらDeploy Keyと言うものがあった。

Managing deploy keys | GitHub Developer Guide

deployという名前だけど、deploy以外にも使える。
ReadOnlyにするなど、権限の制御も可能。

リポジトリ単位での作業なら、deploy Keysでほとんど事足りそうだ。

参考

CircleCIでメモリ上限値越えエラー #circleci

現象

CircleCIのビルドが TIMED OUT で失敗して、見に行ってみたら下記のようなメッセージが表示されていた。

Your build has exceeded the memory limit of 4G on 1 container. The results of this build are likely invalid. We have taken a snapshot of the memory usage at the time, which you can find in a build artifact named memory-usage.txt. The RSS column in this file shows the amount of memory used by each process, measured in kilobytes.

原因

どうやらCircleCIのビルドコンテナのメモリ上限は4Gらしく、それをオーバーしてしまったよう。 circleci.com

対応

前述のページを参考に、 circle.ymlJVMのオプションを設定する。
これでJVMのメモリ使用上限は抑えられるはず。
数値は適宜見直す。

machine:
  environment:
    _JAVA_OPTIONS: "-Xms512m -Xmx1024m"

補足

メモリ上限値越えの場合、CircleCIが memory-usage.txt というartifactsを生成してくれる。 どこにコストがかかっているか分かるので、調査の際に役立つ。

IntelliJ IDEA でJavaScriptをデバッグ

前提

拡張機能を入れる

Chrome Extensionを導入する。

chrome.google.com

ローカルデバッグ

プロジェクト内にある HTML + js のような形であれば、HTMLファイルを右クリック→デバッグ実行でOK。
ビルトインサーバーが起動して、デバッグできる。

http://localhost:<built-in server port>/<project root>/<path to the HTML file relative to the project root>

リモートデバッグ

リモートと連動したデバッグも可能。
たとえばSpring-Bootで作成したアプリケーションの画面を操作しつつデバッグできる。

  1. Run/Debug Configurationsウインドウを開く(Run→Edit Configurations)
  2. 「+」で「JavaScript Debug」を追加
  3. Nameは適当に
  4. URLにリモートデバッグしたいURLを入力(ex: http://localhost:18080/demo/ )
  5. リモートが起動しているうえで、作ったConfigurationをデバッグ実行する

その他

  • ChromeのDevlopper toolと共用はできない模様

余談

Spring-Boot + Thymeleafで開発している時、Thymeleafのキャッシュ( spring.thymeleaf.cache=false )をoffにしても再起動しないと反映しなくて困っていた。

Thymeleaf templates cache even when spring.template.cache: false · Issue #34 · spring-projects/spring-boot · GitHub

Then,after edit html template, must use CTRL+F9 to make the project.

MacだとCmd + F9 で明示的にリビルドが必要なだけだった。。

参考

IntelliJ IDEA 2016.3 Help :: Debugging JavaScript

社内勉強会でライトニングトークしてきた

社内勉強会でライトニングトークしてきた。
フリーテーマだったので何話そうか迷っていたけれど、最近いい感じになってきたチームのコードレビューについて話してみた。

コードレビューを題材にしたものの、チーム開発が単なる個人の集合じゃなくて、コラボレーションが生まれた時に、チームの力は何倍にもなるんだってことが少しでも伝わっていたら嬉しい。

久々に人前で話したけどやっぱり緊張する。。
なお、サッカーチームのたとえの話が一番熱を帯びてたというフィードバックを頂きました笑

speakerdeck.com

QA勉強会に行ってきた #QAアーキ

12/20にQA勉強会に参加してきたので、印象に残ったことや思ったことなどを残しておく。
品質評価に焦点を当てた勉強会に参加したのは初めてだったかも。

connpass.com

テスト観点は意図を明らかにする

  • 仕様をなぞるのではなく、意図を明らかにするのがテスト観点
  • そのテストでは何を気にしているのか、意図を明らかにする
    • ✕: 1M以上のファイル、ファイルサイズによる挙動(仕様書のコピーにしかなっていない)
    • ◯: ディスクをいっぱいにして動かなくしたい(意図を明らかにする)
  • その意図は開発者が気にすることになる
  • 観点が正に開発者が気にすることにつながるので、開発・QAのコラボレーションがすごく期待できそう
  • 開発者が気になるけども、気付いていない観点をQAが出せるようになったらさらに素晴らしい
  • 観点洗い出しができるようになると、設計やレビューでQAが可能になる

品質保証を選択する

  • どのQA観点をどう作り込みどう検証するかまとめる→アシュアランスフロー
  • どこで何をするか整理すると品質保証が取捨選択できるようになる
    • 品質保証は選択ができないといけない
    • どこで何を保証するかが整理されていないといけない
  • 工程の責務が明らかになれば、自動化の注力先も分かる
  • 捨てる選択ができるようにするアプローチはイイネ!!

スピード感が求められる中でのアプローチ

時間があったので質問してみました。

質問
  • QA観点を洗い出して、アシュアランスフローに落とし込むのはとても有用だと思う
  • Webサービス開発のようにスピードが求められる場合、QA観点の段階から取捨選択が必要になるのではないか
  • そのあたりに何かアドバイスあれば
回答
  • 大切にしたいものによって、やり方は色々ある
  • 品質に網羅性を求めるのか、機動性を上げたいのか、開発能力を上げたいのかで異なる
  • 特にスピードが求められる現場であれば、「これはやらなくていいよね、大丈夫だよね」の納得感が得られるようなアプローチ
  • 妖精型
    • 気になるところや気にしているところを集めて整理していく
    • ティータイムを設けて、最近自分が出したバグを共有する会を設けているところもある
    • 決してプロセスを整理したりハンコを増やしたりするものではない

感想

とても有意義で面白かった。
QAと開発のコラボレートが具体的にイメージできるようになったのが一番の収穫かもしれない。

その他メモ

  • チェックを増やすと精度は下がる
  • (主に上層部批判の)組織論的な話が出るのはどこでもだなぁ
  • バグを出したら怒られる、っていうのが無駄なプロセスを増やす根源な気がした

資料

www.slideshare.net

iTunesで曲名がオンラインで見つからなくなった。。

どのタイミングでなったのか分からないけどiTunesでCDを読み込もうとしたら「このCDの曲名がオンラインで見つかりませんでした。曲を読み込みますか?」と言われて曲名が読み込めなくなった。

備忘のための解決策メモ。

発生した環境

対応

下記のファイルを削除する

$HOME/Library/Preferences/

  • CD Info.cidb
  • com.apple.iTunesHelper.plist
  • com.apple.iTunes.plist
  • com.apple.iTunes.eq.plist
  • com.apple.iTunes.eq.plist.lockfile
  • com.apple.mobile.iTunes.store.plist
  • com.apple.mobile.iTunes.store.plist.lockfile

多分 ll | grep iTunes とかして、関係ありそうなファイルは削除しちゃうのがよさげ。。
※バックアップ忘れずに

au iphone6s を UQ mobile に乗り換えた

au との契約期間はまだまだ残っていたんだけども、解約金を払ってもすぐに回収できるくらい価格差あるなぁーと思って UQ mobile に乗り換えた。

ただ au版iPhone6sについてはまだもうしばらく使う予定なので、simロック解除して使うことにした。

あんまり詰まるところなかったけど、まとめておく。

simロック解除の申し込み

店頭に行かなくても、「auお客さまサポートサイト」から申し込みできる。
simロック解除する場合の注意事項などは下記に載っている。

www.au.kddi.com

なお、すぐに解除されるわけではないらしいので、UQMobile申込みより余裕をもってやっておくようにする。

MNP予約番号発行

店頭に行かなくても、電話での発行が可能。
ポイントくれるとか引き止めのお話をされるけど、断ると発行してくれる。
解約月の割引の扱いとか、基本料金に日割りあるのかとか、解約にあたっての料金の話も詳しくしてくれる。

www.au.kddi.com

MNPの予約番号には有効期限があるので注意。 番号や有効期限は電話でいわれるので控えたけれど、その後SMSで送ってきてくれた。

UQ Mobileの申し込み

オンラインで完結する。 便利な世の中になったものだ。。

www.uqwimax.jp

以降はsimが届いた後の手順。

iPhoneのバックアップ

普段から最低限のバックアップはiCloudなりに取ってるけど、念のため直前にもしておく。

回線切替

my UQ mobile から手続きを行う。
初期IDとパスワードは同封された資料に記載されていた。

同資料の手順に従い回線切替を実行する。

simの差し替え

simが届いたら、差し替える。
下記を参考にやった。

plus1world.com

なんと差し替えには専用の器具があったとは。。

プロファイルをインストール

iPhone6s用のプロファイルをインストールする。
Safariじゃないとだめっぽい。

www.uqwimax.jp

ついでにauのプロファイルはもういらないかー、と削除した。

動作確認

なんとなく再起動した後「111」にテストコールする。 wifiをオフにして、ブラウジングでデータ通信を確認。