Hatena::ブログ(Diary)

新・たけぞう瀕死の日記 このページをアンテナに追加 RSSフィード

2013-07-03

[]GitBucket 1.0リリースしました GitBucket 1.0リリースしましたを含むブックマーク

warファイルサーブレットコンテナデプロイするだけで利用可能なGithubクローン、GitBucket 1.0をリリースしました

当初の目標6月末)からは少し遅れてしまいましたが、Gitリポジトリ作成リポジトリビューア、Wiki、Issuesなどは一通り実装しており、なんとか実用に耐えうる機能は揃っているのではと思いますフォークやプルリクエストタイムライン、チーム管理メール通知などまだまだ未実装の機能は多いですが、今後のバージョンアップで随時機能を追加していきます

フレームワークとか

少し話は変わりますが、GitBucketはScalaで書かれており、フレームワークとして以下のものを組み合わせて使用しています

Scalatra、scalatra-forms、Twirlの組み合わせでほぼPlay2と同じ感覚コントローラを実装することができます。Play2と比べるて不便だなと感じるのはroutesによる逆引きがないのとTwirlのコンパイルエラーがわかりにくいというくらいでしょうか。

とはいえ、なぜメジャーなPlay2じゃなくてScalatraを採用したかというと、

  • GitBucketはとにかくセットアップの簡単さを追求しており、できればwarで配布したい
  • 基本的にイントラで限られたメンバーで使うことを想定しているので並列性が売りのPlay2を使うメリットがない

という感じです。Play2には仕事でいろいろと苦労させられましたが、Scalatraは特にフレームワークに悩まされたということは(少なくとも現時点では)一切ありません。もともとPlay2も大規模なアプリケーションの開発にはいろんな意味で向いていないので、同時接続数を重視するケースでなければScalatraでいいんじゃないかと思います

SQLはそれほど難しいものはなかったので、今のところFOR UPDATEが必要クエリ以外は全てSlickのタイプセーフDSLで実装できています最初は難しくて同僚の作ってくれたサンプル集を見ながらでないとなかなかクエリが書けなかったのですが、慣れると割とすらすら書けるようになりました。やはりタイプセーフなのはいいですね。ただ、Slickに関してはまだバグもそれなりにあるなぁ…という印象です。

ただ、なによりも一番大きかったのはJGitの存在ですね。若干APIに使いにくいなと感じる部分はありますが、そもそもJGitがなかったらGitBucketを作ろうとは思っていなかったです。

そんなわけで

4月くらいからコツコツ作っていたGitBucketもこれでいったん一区切りです。

もともとチームで使うために作っていたものなので、まずは社内のリポジトリを移行してから残りの機能に優先度を付けて実装していこうと思います。もしフィードバックがありましたらGithubのIssueなりプルリクエストなりいただければと思います