FOLIO Advent Calendar 2019 - Qiita 10日目代打です。
9日目はlotzさんの 挿入ソートと選択ソートは双対 - Qiitaでした。 recursion schemesの応用って融合変換くらいしか知らなかったんですが身近なアルゴリズムの性質を表現できるのは面白いですね。 自分で学ぶことで見通しよく効率化のアイディアを出せたりad-hocに見えていたアルゴリズムに横のつながりが見えてきて理解が深まりそうです。
最近ブログ書かなさすぎて書き方を忘れていた まっちゃら (@matsu_chara) | Twitterです(´・_・`)
今回は今まで作ってきたボットや社内用サービスをまとめようと思います。 やや内輪ネタっぽいですが、こういうのあると便利かもしれないというアイデアのきっかけになればと思います。 似たようなのあるけどうちはもっと便利だぜ!っていうのあったらぜひ教えて下さい。
社内ブックマーク gol
新しく入社したメンバーに、consulのurlはこれで、prometheusはこれで、ああサービス画面はこっちで。 と教えることはよくあると思いますが、それぞれのリンクを覚えるのは結構大変だったりします。
ドキュメント管理ツールにブックマーク集みたいなページを追加しても慣れてる人は使わないからメンテされない。なんてこともよく起こります。
golはそれらの問題を解決するブックマーク共有&検索サービスです。
まあ実際はただの管理画面付きkvsなんですが、結構便利だったりします。
例えば画像のように、consulと検索するだけで各環境のconsulがすぐに出てきたり
chrome拡張(これは同僚が作ってくれました!)を使うとgolのページに行かなくてもcommand + gとかでさっと検索できます。
検索キーワードをかなり雑に指定してもヒットするようになっていて、 space区切りで適当に「cons stg」と入れれば「consul_stg」だろうが「stg-consul」だろうがヒットしてくれるのが割と気に入っています。 こういう規約とか覚えるの面倒ですしね。
ちなみにgoを書き始めて初めて作ったものなので実装はあれな感じになっています。 許して
slack_user_avatar_emojis
GitHub - matsu-chara/slack_user_avatar_emojis: register slack user avatars to emoji
slackの全ユーザーのiconを取得して、slackのemojiとして登録するものです。 本文に含めてもいいですし、emoji reactionにしても良しで社内の文化作り的にも良いです。 emojiだと名字よりもちょっとほんわかしますしね。
アイコン変更イベントを取ってきて自動で更新し続けてくれるデーモンにしようと思って100年くらいたってるので誰かお願いします(他力本願)
というかこのemoji、公式で実装されて欲しいですね。
ちなみにトークン設定とかが結構必要なので動かすのは結構ダルめです(´・_・`)
reacjira
emoji reactionをつけると特定のチャンネルに通知してくれるreacji-channelerにインスパイアされた、 emoji reactionをつけると特定のjira projectにチケットを切ってくれるボットです。
reaction + jira で reacjiraってわけですね。
アイコンはいらすとやで見つけたかわいいクジラです。(ダジャレ・・・)
↓の感じで、 :○○_story: みたいなemojiをつけてやるとチケットが作成されスレッドとして投稿されます。
この際、チケットの中身として↓の画像のようにdescription欄にslackのスレッドのリンクがデフォルトで記載されます。
reacjiraを使うと依頼を受けた際にすぐチケットを作成できて以下のようなメリットが生まれます。
- 頼んだ人: どのチケットを見れば進捗が分かるのか分かりやすい
- 頼まれた人: 詳細を書くのを忘れてしまっても、slackリンクがあるのでどういう文脈で作られたチケットなのか最悪分かる*1
一説によるとzappierとかでできるらしいという話があったりなかったりするんですが、 自作botだとjiraのあらゆるフィールドをいじったり、結構強引なルールを設定したりできるので便利です。
ちなみにjiraの公式integrationとかが進化してくると要らなくなる存在になりそうです(´・_・`) *2
jobdiff
これはかなり社内限定で便利なやつで、jenkins-job-dsl*3のjenkins反映済みcommit ~ 最新masterまでのcompareリンクを生成してくれるというただそれだけのものです。*4
正直bot化するものでもないんですが、jenkins見る => compareリンク作るみたいなのは手間だったので一発で生成してくれるようにしました。
jenkins叩くコードがすでに手元にあったので5秒くらいで完成したし、botデプロイ環境+token登録環境が割と整備されてるので思いついてサクッと作ってすぐデプロイみたいなことがしやすいんでこういう、微妙〜〜〜に不便ってのも解決できていいですね。(環境整備してくれているチームに感謝)
ところでjenkins-job-dslのリポジトリが大きくなりすぎて、job-seedに時間がかかりすぎたりいろいろな問題があるので 脱jenkinsも含めて最高のジョブ基盤を作ろうとしています。
それができたらjobdiff君は消え去ることになります。(宿命)
consul bot
これも社内限定で便利なやつで、サービスディスカバリとして利用しているconsulから情報をとってきて、各環境の各サービスのバージョンを一覧として取ってきたり、ip+portを取ってきたりするやつです。
version stg,prod ac
のように書くと「stg,prod環境」にある 「acから始まるサービス」のバージョン情報を取得します。*5
サービス名は省略してもいいしフルネームでも大丈夫です。
デプロイしたあとにちゃんと切り替わってるよね?といった確認に使ったり、トラブルシュートする際に参照したりしています。
consulは今の所困っていないんですがServicMeshとか入ってきた時にうちのconsulが生き残るかは不明です。頑張って(´・_・`)
まとめ
作ったけどボツになったやつとかも結構ある(公式機能で対応されてボツとか、使いにくかったりとか)んですが、 社内でも使ってもらえてるのを見るとちょっと嬉しいです。(新しく入ってきた方が早速使ってたりすると特に)
これからも地味だけどあるのが当たり前みたいな便利さを目指して頑張っていきます。