みずぴー日記

人間の再起動ボタンはハワイのビーチにある

🍮 Prpr: bot for github pull request

prprというgithubのプルリクエストに反応するボットを作った。

プルリクエストに関する運用が増えてきたので、ガーっと作った。

プラグイン

gemを追加することで、挙動を追加できる。

source 'https://rubygems.org'
ruby '2.2.3'

gem 'prpr'

# メッセージの通知先をslackにする
gem 'prpr-slack'

# 「REVIEW」ラベルをつけたときに、チャットサービス(例: slack)にレビュー依頼を通知する。
gem 'prpr-review_label'

# コメントで @mention をしたときに、チャットサービス(例: slack)に通知通知する。
# mention名は適宜読み替えられる。
gem 'prpr-mention_comment'

# プルリクエストの作成時に、チェックリストを投稿する。
gem 'prpr-checklist'

# コンフリクトしているプルリクエストに「conflict」ラベルをつける。
gem 'prpr-conflict_label'

# Gemfile.lockを更新する際に、マイナー・メジャーバージョンが変わっている箇所に注釈を付ける
gem 'prpr-gemfile'

実行例

f:id:mzp:20150909072921p:plain

Herokuへのデプロイ

prpr-templateをHerokuにデプロイすれば、ほぼそのまま動く。 Deploy to Herokuボタンをつけてあるので、簡単にデプロイできると思う。

Deploy

Tl; dr

Ruboty

いくつかの箇所でrubotyのアイデアやコードを参考にしている。 gemによって挙動を拡張する点や、クラスごとの責務の切り方などについては特に強い影響を受けている。

このおかげでだいぶ速く開発することができた。

Github上のボット

Github上のボットはすでにいくつか作成されている。

例えば、今回やっていることはアプリ開発の品質底上げ施策をWebhooksでBotが支援する世界 - クックパッド開発者ブログに近い。 また、Webhookに反応するわけではないが行末のスペースを自動で消すWhitespace botもある。自分もタブとスペースの混在を検知するSpace tab botを作ったことがある。

ただコードが公開されていて挙動を自由に拡張できるボットは見つけれなかったので、今回作った。 もしあるなら、教えてほしい。

名前

というのが名前の由来だが、mzp/prprというレポジトリ名がちょっと嫌になったので、特に読み方は指定しないことにした。 もしくはぷるぷる。

設計

なぜこのような設計にしたかについては別エントリを書いた。

mzp.hatenablog.com

🐸FlickSKK 1.4.1: 細かな修正

iOSSKK: FlickSKKにいくつかの修正を行ない、1.4.1としてリリースした。 iPhone 6sがそろそろ発表される気配があるので、その前に修正をリリースしておきたかった。


https://itunes.apple.com/jp/app/flickskk/id944678753?mt=8

修正内容

補完候補を半透明に表示する

f:id:mzp:20150903214533p:plain:w300

今までは自動で補完される候補(ダイナミック補完)は灰色で表示していた。 しかし、絵文字は灰色では表示できないため、通常の変換候補と区別ができなかった。

そこで、半透明で表示するように変更し、区別できるようにした。

謝辞の表示

f:id:mzp:20150903215214p:plain:w300

1.4.0でAlamofireを使うようにしたが、謝辞を表示するのを忘れていたの追加した。

次のバージョンでやりたいこと

iPhone 6sでフォースタッチでついたら、#120 フォースタッチを実装してみるのまともな実装を作りたい。 シフトから開放されたい。

それはそれとして、そろそろ#21 ユーザー辞書をiCloud同期するにも手をつけたい。

⌚️進捗どうですか

AppleWatchアプリの練習で、アリスもしくはカレンが進捗を問い詰めてくるアプリを作った。

作ったのがWWDC2015前なので、watchOS 2ではない。

f:id:mzp:20150727220334j:plain

グランス

グランスに画像を表示しているので、腕をもちあげると常に進捗を問い詰められる。

通知

LocalNotificationを使って毎時30分に進捗を聞いてくる。

watchOSの通知にはstaticとdynamicの2種類があり、以下のルールで使い分けられる。(と@が言っていた)

  • 通知のカテゴリーが合っている(staticでもdynamicでも)
  • NotificationControllerで.Custom返す
  • NotificationControllerがもたもたしない(どんだけでstaticにフォールバックするか謎だけど,コンソールみてるとそこそこフォールバックしてる)
  • 通知が来たときだけ(あとから通知センターでみるのはstatic)
  • バッテリーがある
  • 他の通知と重ならない

iOS アプリ

iOSアプリでは、進捗を問いつめる画像を選択できる。

iOSアプリとwatchkitアプリの間でのデータのやり取りはAppGroupを用いる。

その他知見

FlickSKK 1.4: 追加辞書対応

iOSSKK: FlickSKKに追加辞書機能を追加し、1.4としてリリースした。


https://itunes.apple.com/jp/app/flickskk/id944678753?mt=8

新機能: 追加辞書

f:id:mzp:20150714213631p:plain

これまでFlickSKKで使えたのはL辞書とユーザ辞書のみだったが、今回から任意のSKK辞書を追加できるようした。

より正確には以下の辞書を追加できるようになった。

また辞書一覧はOpenlab SKK Wikiにあったはずだが今は落ちてるので、 Index of /skk/skk/dicから選ぶのがいいと思う。

余談

ノウハウの共有

FlickSKK開発で(@banjunが)つちかった知見を外部に切り出した。

長野旅行

今回は長野を旅行しながらリリース作業を行ないました。星空が最高だったので、夏の大三角を指さしてきました。

f:id:mzp:20150718072640p:plain

f:id:mzp:20150718072626p:plain

2000年ごろのインターネットを懐しむ会 #インターネット老人会

2000年ごろのインターネットを懐しむ会を開催した。

発端

@のプロジェクトが一段落したらやる計画だったが、色々あってプロジェクトが終わる前に開催することとなった。

なお開催日の案としては、8月6日のミートパイ記念日にやる案もあったが、わりと先だったためボツとなった。

命名

関連

知見の共有

施設

会場は刈谷市生涯学習センターを借りた。

  • 安い。30人の部屋を半日借りて3500円だった。プロジェクタとホワイトボードもついてくる。
  • 安く借りるには、刈谷市およびその近隣の市に在住・勤務している必要があるが、愛知県の特殊性として知り合い数人いれば条件に該当する人がいる。
  • 設備が充実してて、各部屋の前に電光掲示板がある。これにイベント名が表示されると、結構おもしろい。(参考)
  • となりがスーパーになっているのでおやつを買いにいける。鯛焼きとかアイスを買うとよい。
  • LANポートはあるがWifiはない。

ustream

ネットワーク環境が確保できるか怪しかったのと、リモートを意識して話すのが難しそうだったので、わりと初期に断念した。実際、後半は全員でわいわい話す感じになっていたので、ustreamでの視聴は難しかったと思う。

「愛知は遠い。ustreamしてほしい」という声は何人かからもらったので、東京で誰か開催するといいと思う。

伺か

伺かWindows 8.1でも問題なく動作する。 ただしヘッドライン等は更新が停止してしまっているので、事実上動作しない。

f:id:mzp:20150629074913p:plain

盛り上ったテーマ

写真で見るインターネット老人会

f:id:mzp:20150627125904j:plain f:id:mzp:20150627134008j:plain f:id:mzp:20150627142440j:plain f:id:mzp:20150627144724j:plain f:id:mzp:20150627151940j:plain f:id:mzp:20150627162230j:plain f:id:mzp:20150627174647j:plain f:id:mzp:20150627174713j:plain

🔡AquaSKK 4.2.6(コード署名の追加)

MaciOSの開発プログラムが統合されMac用アプリにコード署名が行なえるようになったので、AquaSKKインストーラにコード署名を行なった。

簡単に言うと以下の警告がでないようになった。

f:id:mzp:20150624214355p:plain:w350

ダウンロード

https://github.com/codefirst/aquaskk/releases/tag/4.2.6

変更内容

インストーラパッケージの変更

これでのAquaSKKIcebergを用いてインストーラの作成を行なっていた。 しかし、このインストーラでは形式が古く署名が行なえなかったので、インストーラの作成方法を変更した。

主な変更点は以下の通り。通常使う上で気にする内容はない。

  • Icebergではなく、標準的な pkgbuild / productbuild を使うようにした。
  • インストーラ内で起動していた、TSM版AquaSKK(Leopard以前で動作していたバージョン)からの移行スクリプトを廃止した。
  • コード署名を行なうようにした。

OpenJDKへの対応

OracleJDKで作成されたアプリケーションはl/L/qでの入力切り替えがうまくいかない問題があるので回避策が実装されている。 同様の回避策がOpenJDKで作成されたアプリケーションでも動作するように変更を加えた。

WWDC合宿

HaLakeおよびその周辺でWWDC合宿をやってきた。WWDCでの発表内容自体は各所で解説されているので、それ以外について書く。

スケジュール

WWDCのセッションは日本時間の1:00 AMに開始されるので、その前までに寝ておかないといけない。そのため、夕方に仮眠したのち、深夜に起きて活動する、という生活をしていた。

f:id:mzp:20150613072121p:plain:w300

視聴

WWDCの視聴はAppleTVの専用チャンネルが便利だった。

Keynotemacwebcasterによる同時通訳があったが、それ以外は英語のまま聞いていた。単語くらいしか聞きとれなかったが、スライドをみていればなんとかなった。

f:id:mzp:20150613072808p:plain:w400

プログラム統合

iOS Developer ProgramとMac Developer Programが統合されたことがわかった直後の@の反応がおもしろかった。

Mac

Apple製品が集まったので、だいぶおもしろいことになっていた。

HaLake

合宿(と仮眠)以外の時間は、HaLakeでリモート勤務していた。 広くてキレイで最高だった。あと1階下がカフェになってて、すぐにコーヒー買いにいけるのがかなりよかった。

f:id:mzp:20150610163938j:plain:w400 f:id:mzp:20150610151238j:plain:w400 f:id:mzp:20150608112159j:plain:w400 f:id:mzp:20150608112208j:plain:w400