- 経緯
個人的にgit commit -m " うっ、英語でなんて書けばよいんだろう。。。。ってなることが多くて、GitHubの公式の検索ってソースコードは検索できても、コミットメッセージをリポジトリ横断的に検索したいなんてことはできないんですよねぇ。まぁネイティブな人にはそんなこと思いもしないのかも知んないですが。調べてみたらGitHub APIでコミットメッセージ取れるようなので、現場のリアルな生の文例を集めて検索できるようにすればよくね?ということで勉強がてら作ってみたので、需要あるか分からないけど同じこと思ってた人のために晒す。
- 作ったもの
http://commit-m.minamijoyo.com/
- 使い方
- テキストボックスにキーワード「fix bug」などを入力してSearchボタン押すと検索結果が表示される。以上。
- 機能の補足説明
- キーワードはスペース区切りでAND検索になる。
- 3文字未満の単語(IPとか)、いわゆるストップワード(theとかforとか)は引っかからないです。
- コミットメッセージは1行目だけで、複数行あっても切り捨ててる。全文保持してるわけではない。
- 検索結果にコミットのハッシュ値へのURLリンクを貼ってあるので、各コミットの詳細見たければ各自リンク先を参照。
- データはGitHub公開リポジトリの有名ドコロ(stars>10000)のリポジトリ78個のコミットメッセージが計88万件程度。
- データはGitHub APIで予め取得したものを表示してるので固定です。動的にAPI検索するには全然遅すぎるのと、バッチ処理で定期的に文例増やしても大して嬉しい事なさそうというのもある。
- 技術的な補足説明
- WebアプリはRailsで書いた。Railsチュートリアルを最近やった程度の初心者なのでツッコミ歓迎。
- Webアプリ部分のコード: https://github.com/minamijoyo/commit-m
- クローラーはRubyで書いた。octokit.rbというGitHub APIのラッパーライブラリ使ってる。
- クローラ部分のコード: https://github.com/minamijoyo/commit-crawler
- デザインは一体なにストラップなのかというプレーンなかんじの仕上がりです。
- 全文検索部分はMySQL5.6標準で使えるInnoDB FTSというのを使ってて、検索モードはboolean mode。検索ロジック自体は特に凝ったことしてない作りなので、なんかいい方法あれば教えて下さい。
- インフラはAWSのt2.microインスタンスなのであまりいじめないで下さい。
- 個人的にAWSの勉強したかったので今のところRDS/EC2/ELB/Route53という無駄に豪華な構成になってるのだけど、AWSの無料期間が過ぎたらコンパクトに縮小するか、もっと安いところに引っ越すかもしれないです。未定。
- とりあえず最低限の監視としてELBの振分先インスタンス落ちたらCloudWatch/SNS経由でGmailにアラートメール飛ばしつつ、Route53のDNSフェールオーバでS3のソーリー画面出すという小細工を仕込んでみましたが、ずっと落ちっぱなしで気付いてなさそうだったらお声がけ下さい。
- その他
- Webサービスとか作ってみたの初めてなんだけど、やっぱり作ったものが動くのたのしいいいい。
- 感想、ご意見、質問などあれば@minamijoyoまでフィードバック頂けると喜びます。