1. Qiita
  2. 投稿
  3. Qt

GUIのGitクライアントアプリを作ってみた

  • 24
    いいね
  • 0
    コメント

Qt Advent Calendar 25日目の記事です。

私ごときが、最終日の記事を担当するなど10年早いです。なんとおこがましいことか。(笑)

この記事では自作アプリの宣伝と協力者の募集をしますので、「Qt Advertisement Calendar」でもあります。

Gitを使うよ

唐突ですが、GUIのGitクライアントを自作してみました。コマンド版 gitgit.exe)のラッパーとして動作します。

ソースコードバージョン管理システムの歴史の中で、Subversion全盛の時代、TortoiseSVNは使いやすかったのに、急にGitを使わないといけなくなって、分からん、怖い、と、Git初心者なら一度は思ったことがあるでしょう。私も例にもれず、Git入門などと書かれた本を購入したものの長い間積んであったのですが、時代の流れには逆らえず、みんなが「Gitはいいぞ」というので、重い腰を上げてGitを使い始めることにしました。

とりあえず、clonecommitpushpullbranchcheckoutmergeを覚えたものの、ちゃんと理解して使わないと、やっぱり怖いです。コミットログを汚したら怒られるんじゃないだろうか、なんて思ったりします。

WindowsやMacではお馴染みのSourceTreeというアプリがあれば、基本的なこと(というか、大抵のこと)は実現できますが、いざ始めてみると、Gitってどういう仕組みで動いてるんだろう? という興味が湧いてきました。そこでまずはGitの仕組みを理解しようと思いました。そのためには、gitコマンドを使い倒してみるのがいいと考え、それならGitクライアントを自作してみようと決意しました。

既製品が気に入らない問題

よく知られているGUIで操作できるGitクライアントには、いくつか問題があります。

  • $79くらい払わないといけない。
  • 無料でもメールアドレスなどの個人情報を登録しないとダウンロードできない。
  • Windows版とmacOS版はあるのにLinux版がない。
  • ソースコードが公開されていない。
  • アイコンが不気味で気持ち悪い。
  • 起動するまでに時間がかかる。
  • 日本語対応していない。
  • 機能が貧弱すぎる。

これらを解消するのが目標です。最後の「機能が貧弱」に関しては、まだバージョン 0.0.0 なので、他者のことをあれこれ言う資格は無いのですが、コミットログの一覧さえ見れないようなツールはGitクライアントアプリとしてどうかと思ったりします。

自作するよ

Gitクライアントを自作しようと思った動機は、私自身がGitを理解するため、というのが第一、で、どうせ作るのなら、上に挙げた問題を解消した「使えるツール」にしたいからです。まだ習作の域を脱していませんので、足りない機能は今後追加していきます。

とりあえず、以下のような方針で作っていきます。

  • 開発言語はC++、フレームワークは Qt 5 を採用。
  • WindowsとmacOSとLinuxのデスクトップ環境で動作。
  • LinuxについてはRaspberry Pi版も作成。
  • フリーソフトとして公開。

プログラムのタイトルは「Guitar」です。
「GUI」+「Git」+「er」を混ぜ合わせたらGuitarになりました。

こんな感じ

とりあえず、スクリーンショットです。

guitar.png
図の右上に書かれているGetItというのは、Guitarにする前の仮の名前です。ここに、現在操作中のリポジトリ名とブランチ名が表示されます。

そしてアイコンです。

icon.png

これはデザインとしてどうなのか、と思わなくもありません。良いセンスの持ち主がいらっしゃったら、改良にご協力ください。よろしくお願いします。

Qtはいいぞ

この記事は Qt Advent Calendar ですので、Qtについても触れておきましょう。UIをデザインしている画面をお見せします。画面設計は、このような Qt Creator という統合開発環境上で行います。機能の実装はC++で記述します。

qtcreator.png

Qt Creator は、統合開発環境としては、尋常ならざる開発効率を発揮します。入力補完はもちろんのこと、シンボル名変更などのリファクタリング支援機能など。Qt Creator に慣れたら Visual Studio には戻れないレベルです。そんな素晴らしい開発環境が Windows と macOS と Linux で動作するのです。

開発にご協力ください

こんなものを作っている私自身が、まだあまりGitを使いこなしていません。ソースコードはGitHubで公開していますので協力者歓迎です。コミットログが汚いとか言って怒ったりしないので大丈夫です。どんな過酷な現場にも耐えられるよう、汚いコミットログもそれはそれで必要なテストになります。開発には参加しなくても、新機能のアイディアや改良の要望、デザインや操作性に関する意見などをもらえるだけでも嬉しいです。

ソースコード:https://github.com/soramimi/Guitar
ウェブサイト:http://www.soramimi.jp/guitar/

おわりに

それでは、2017年も幸せなQtライフを送れるよう、盛り上げていきたい思います。みなさま良いお年を!