2017年ふりかえり

GitHub 調べによると 2017 年に送った Pull Request 数は 395 で、Ginza.rb への自己紹介 PR などを引いたとしても、だいたい毎日何かを PR していたらしい。2月に yahonda さんに Oracle enhanced adapter のコミッターに推薦してもらったのは、OSS まわりへの関わり方について改めて考えたり行動したり GitHub 上でのソーシャルな繋がりが増えたりした大きな契機になっていて、今年一番大きな変化をもらったことだったと思っている。例えば RubyKaigi の楽しみ方が少し変わったり増えたりしたように思う。

https://github.com/pulls?q=is%3Apr+author%3Akoic+archived%3Afalse+created%3A2017-01-01..2017-12-31+is%3Aclosed+is%3Apublic

春から秋口くらいの間は Rails 、夏の終わりくらいからは RuboCop でのアクティビティが多めだったと思う。それぞれ全然異なるコミュニティ構成、文化だったりするのでそういった話も需要があれば 2018 年のどこかで話してみても面白いかもしれない。

github.com

github.com

プレゼンは公開している分には 8 スライドで、公開していないものがあったりそもそもスライドなしでのプレゼンもしていたりするので正確な数は分からないけれど、だいたい月イチくらいではどこかで話していたと思う。そのプレゼンの中では Rails Developers Meetup で話した育成の話は 2017 年のプレゼンでの代表作だと思っている。

www.slideshare.net

そういえば来年度は勤務先で見る新卒氏が今のところいないので、我こそはと思う人はワンチャン考えてもらえるとガッツポーズとかあったりするかもしれない。

新卒氏といえばミートアップという新しい試みがはじまった OSS Gate ではミートアップのイベント運営を swamp09 氏が引き受けて継続してくれていて頼もしい限り。OSS をこれから初めてみよういう人はちょっと顔を出してみると、面白いきっかけがあったりするかもしれない。

https://oss-gate.doorkeeper.jp/

日記は1回休みを多用しつつも継続している状態。あくまでの GitHub でのアクティビティなど日常での開発が主にあって、日記はその内容に追随する位置づけで書いているのでそんな感じで来年もぼちぼちやっていく気持ち。

RuboCopの--onlyオプションの改善

平野さんのパッチが元ネタのここ数日前の話。

github.com

RuboCop で特定の department や cop のみ適用する場合に使える --only やその逆の --except での Cop 名の指定にタイプミスがあった場合に、本来入力しようとしていたと思われる Cop の候補が補完表示される EoD なパッチ。次の RuboCop のリリース (0.53.0 かな?) から適用されると思う。

bbatsov/rubocop#5300 では候補の探索が正規表現の前方一致だったのを、pocke さんのコメントにあったようなレーベンシュタイン距離か何かでやれると良さそうだったので、以下のように DidYouMean でのモジュールで解決しようとしたけれど、このインタフェースだと Ruby のバージョン縛りがあるので断念 (あと後方互換が担保されるインタフェースか判断できなかったのも理由のひとつ) 。

DidYouMean::SpellChecker.new(dictionary: cop_names).correct(name)

PR としては、pocke さんに教えてもらった StringUtil.similarity を使った類似文字列の探索という実装にしたのだった。

そのあたりの経緯は PR のコミットメッセージ (と Description) に記してあるので詳細はそちらにて。

github.com

仕事納めの日だった

明日は休暇にしたので今日が仕事納め。Ruby と異なり Rails はリリース日が決まっているわけではないので予想でしかないけれど、来年4月の RailsConf 2018 までには Rails 5.2 が出ると思うので、Rails のアップグレード準備業は来年のそれまでにいくつか持ち越し。

railsconf.com

Ruby 2.5 のビルドを GCC 4.4 で試みる

みよひでさんが立ててくれたイシューが元ネタ。さっそく対応して頂けていたので GCC 4.4 での Ruby 2.5.0 をビルドを試してみた。

bugs.ruby-lang.org

まず、Ruby 本体のコードについて v2_5_0 タグをもとに nobu さんが対応してくれたコミットを cherry-pick したブランチが以下。

github.com

さらにそのブランチを使ったビルドをする定義を加えた ruby-build のブランチが以下となる。

github.com

これは以下の定義を記した share/ruby-build/2.5.0-gcc4 ファイルを追加したもの。

install_package "openssl-1.1.0g" "https://www.openssl.org/source/openssl-1.1.0g.tar.gz#de4d501267da39310905cb6dc8c6121f7a2cad45a7707f76df828fe1b85073af"  mac_openssl --if has_broken_mac_openssl
install_git "ruby-2.5.0-gcc4" "https://github.com/koic/ruby.git" "v2_5_0_gcc4" ldflags_dirs autoconf standard_build standard_install_with_bundled_gems verify_openssl

これで rbenv install 2.5.0-gcc4 とすれば GCC 4.4 系でのビルドを進めることができるが、そもそも GCC 4.4 という点でその環境の Autoconf も古い可能性があり、その場合は configure.ac:6: error: Autoconf version 2.67 or higher is required で終わるかもしれない。

とここまで書いていたところ nagachika さんから頂いたコメントが以下なので、その先についての進捗が出たら加筆をあとで書く気持ち。

Hacktoberfest 2017のTシャツが届いた

期間中に 4 Pull Requests 送ると T シャツがもらえる Hacktoberfest の T シャツが US から会社に届いていたけれど、会社に忘れたまま飲みに行ってしまったので写真はお預けで1回休み。

hacktoberfest.digitalocean.com

今年の 24 Pull Requests が終わった

年末行事の 24 Pull Requests は 32 Pull Requests でフィニッシュだった。 24pullrequests.com

参加している日本人だとたぶん 48 Pull Requests の y-yagi さんの次くらいという結果で、また来年。 24pullrequests.com