日報

普段Qiita:Teamに日報書いてて、後から振り返るときにすごい重宝してるんだけど、仕事とそこまで関係のないことだと日報に残ってない。ので、OSSでやった部分については雑にブログにでも書いとけばいいんじゃないかと思い、たまに思い付いたときにその日書いたコードについてちょっと書くみたいなのをやる。1日で飽きそう。

autodoc

autodocというテストからドキュメント自動生成するツールをつくってて、それまではテストのファイル名からドキュメントのファイル名を自動生成してたんだけど、変えられるようにしたいという旨のPull Request が来てたので取り込んだ。取り込んだのだけど、結局自分で書き直した 。元のPull Requestが無駄だったかというと絶対にそういうことはなくて、フィードバック上げてくれて議論した末にこういう結末に至ったので、直接Mergeできなかったのはなんか申し訳ない気持ちになった。Pull RequestやIssueのCloseにまつわるこの辺の微妙な空気感難しいと思う。

ruboty-alias

SlackでQiitanというBotに「@qiitan ランチ」って言ったら近所のおすすめランチ情報から1件選んで教えてくれるという機能をつくったんだけど、これは「雑に書いた店名一覧から Array#sample で一件選んで返す」というコマンドを「@qiitan ランチ」で呼べるようにaliasを貼っている。そのaliasの機能がruboty-aliasで実現されてて、久しぶりに使ったら改行を含むaliasに対応してなかったので対応した

qiita-markdown

QiitaのMarkdownをHTMLに変換するためのライブラリで、@9m みたいに2文字のユーザ名を持つユーザに対してメンションを送れないという不具合があったので直した 。Qiitaは僕が入社した頃にはもう3文字以上のユーザ名しか取れないようになってたんだけど、古の時代に2文字を許可していたことがあったみたいで、その塩対応。ライブラリ自体については Markdownを拡張して独自記法をつくる - Qiita が参考になる。

qiita-elasticsearch

Qiitaの検索ボックスから渡された文字列をElasticsearchに与えるJSON形式のクエリに変換するためのライブラリで、tag:Ruby user:r7kamura みたいなクエリが書けるんだけど、「tagについては値の部分を必ずlower-caseに変換して使ってくれ🙏」というルールを与えられるようにコードをリファクタリングした 。タグはcase-insensitiveなので全て小文字でElasticsearchに保存されている。ライブラリについては 文字列からElasticsearchに渡すクエリをつくる - Qiita が参考になるはず。

serverkit

前からブログにたまに書いている通りAnsibleのRuby版みたいなやつをつくってて、Ansibleのlineinfileというやつが便利そうだったので、Serverkitにもlineというリソースを追加した 。「もしこの行がそのファイルにまだ存在していなかったら、この正規表現に一致する行の後ろに追加してほしい」というような定義をできるので、例えば /etc/hosts とか /etc/sudoers を変更する場合に有用そう。lineinfile自体は アプリケーションの開発環境を Ansible でつくる - Hatena Developer Blog で /etc/hosts を編集するのに便利であるという話を見たときにああ初めて便利そうだなと認識したけど、確かに便利。最初は /etc/hosts パーサを自前で書いていい感じにやろうとしてたけど、新しい設定ファイルの形式が出てくるたびにパーサやそのためのリソースを定義していては定年を迎えてしまいそう。

その他

夕飯ミスってなぜか2.5人前ぐらい頼んでしまって、行きつけの店で残すのも申し訳ないので全力で食べた結果案の定厳しい体調となった。明日は寝不足も相まって常にぐったりしてると思う。