社内のスマフォ開発用ライブラリの管理方法を公開しちゃいます!

カテゴリ
ブックマーク数
このエントリーを含むはてなブックマーク はてなブックマーク - 社内のスマフォ開発用ライブラリの管理方法を公開しちゃいます!
このエントリーをはてなブックマークに追加
こんにちは!こんにちは!
最近JavaやObjective-Cで開発をしていて、やっぱりPerlって使いやすい言語なんだなぁと改めて感じている栗原です。
#と言いつつもJavaもObjective-Cも好きだったりします。

今回は「スマフォのライブラリなどの管理をどげんかせんといかん」とCTOに言われたために考えた、弊社のスマフォ開発チームが行なっているAndroid、iPhoneそれぞれの社内用ライブラリやスニペットの管理方法についてご紹介したいと思います。

ソースの管理方法

まずソースの管理についてですが、現在弊社のスマートフォン系のアプリはGitを使って管理しています。
通常のアプリも含めて「android」と「iphone」というプロジェクトを作成し、その中でそれぞれのプラットフォーム毎にリポジトリを作成しています。
以下のようなイメージですね。

git://example.com/iphone/app01.git
git://example.com/iphone/app02.git
git://example.com/android/app01.git
git://example.com/android/app02.git
共通ライブラリに関しても、アプリと同レベルの階層にAndroidであれば「common」、iPhoneであれば「ldtouch」という名前でリポジトリを作成し、その中にライブラリやスニペットをつっこんでいます。(なぜ名前が違うかは気にしないでくださいw)

git://example.com/iphone/ldtouch.git
git://example.com/android/common.git

ガイドライン

リポジトリを作ったら、その中になんでもつっこめばいいってもんじゃないですよね。
のちのち「ほげほげするライブラリがあった気がするけどどこだっけな…」とか「このライブラリちゃんと動くんかな」とか「このライブラリどう使うかわかんねーYO、まぁソース読みゃーいいけどさ」とかなるのは目に見えています。

そこで現在スマフォ開発チームでは、共通ライブラリやスニペットを管理する上で以下のようなガイドラインを設けています。

  • なんでもできる1つの大きな便利ライブラリは作らない
  • ライブラリを作成するときはユニットテスト必須(作れないものナシでもOK)
  • ライブラリにもならないようなものは簡単にコピペして使えるようにスニペットとして管理する
  • ドキュメントを書く(JavaDoc形式)
  • 可能な限り(常識の範囲内で)下位互換性を保つ(@Deprecatedを付けるとか)

プラットフォーム別の管理方法


Androidのライブラリ管理


まずAndroidについてですが、common/以下のディレクトリ構成は下記のようになっています。

common/
+ android-common-lib01/
    + AndroidManifest.xml
    + res/
    + src/
    + pom.xml
+ android-common-test-lib01/
    + AndroidManifest.xml
    + res/
    + src/
    + pom.xml
+ android-common-lib02/
    + AndroidManifest.xml
    + res/
    + src/
    + pom.xml
+ android-common-test-lib02/
    + AndroidManifest.xml
    + res/
    + src/
    + pom.xml
+ android-common-snippet01/
    + AndroidManifest.xml
    + res/
    + src/
    + pom.xml
+ pom.xml
ライブラリは「android-common-ライブラリ名」というフォーマットでディレクトリを掘っていくと同時に、そのライブラリのテストも「android-common-test-ライブラリ名」というフォーマットでディレクトリを掘っています。

各ディレクトリの中には、そのライブラリとそのライブラリを使ったサンプルプログラムが含まれており、どのように使うのかがすぐにわかるようになっています。

上図をよく見るとそれぞれのディレクトリにpom.xmlというファイルがあります。これはビルド管理ソフトウェアであるMavenの設定ファイルになっています。各ライブラリのビルド管理はこのMavenを使用して行なっており、ビルドフェーズの中でユニットテストもできるような形になっています。なお、トップ階層にもpom.xmlがありますが、これはライブラリ全体でも個別でもビルド管理をできるようにしているからです。

また、スニペットに関してもライブラリと同じ位置付けで「android-common-スニペット名」みたいな形で個別のスニペットとサンプルプログラムを同梱させていたりします。

iPhoneのライブラリ管理


iPhoneのldtouch/以下の構成は下記のようになっています。

ldtouch/
+ Classes/
   + LDFooView/
      + LDFooView.h
      + LDFooView.m
   + NSArray+Bar/
   + NSData+Baz/
   + QuxAuth/
+ Externals/
+ GHUnitOSTestMain.m
+ LDTouch-Info.plist
+ LDTouch-.xcodeproj/
+ LDTouch_Prefix.pch
+ Scripts/
   + RunTest.sh
+ Tests/
   + LDFooView/
      + LDFooViewTest.m
   + NSArray+Bar/
   + NSData+Baz/
   + QuxAuth/
+ UISample/
   + Classes/
iPhoneのライブラリですが、現状フレームワーク(foo.framework)のような形は取っていません。基本的にはldtouch/Classes/にあるライブラリのファイル(foo.mとfoo.h)を自分のプロジェクトにコピーして使うようになっています。

この方法はのちのちライブラリがバージョンアップした際に追従できないなど、いろいろと問題もありますが、現状ライブラリとしてまとめられるほどの数もないため、一旦はこの形式を取っています。この管理方法については今後変わっていく可能性があると考えています。

テストに関しては、ライブラリと同じ名前でldtouch/Tests/の中に入れています。テストフレームワークはGHUnitというものを使っています。GHUnitを使うと以下のようなGUIを使ったテストができます。なんかカッコイイ!

ldtouch_ghunit


また、UISampleというアプリも同梱されています。このアプリはView系のライブラリのサンプルアプリになっていて、そのライブラリを使うとどういう動きが作れるのかを見ることができるサンプルアプリになっています。起動すると以下のような感じになっています。
これを見ることによってぐっとそのライブラリの動作がイメージしやすくなりますね!

uisample

ということで、現在スマフォ開発チームで進めている社内用ライブラリをどのように管理しているかのご紹介しましたがいかがだったでしょうか。
今回ご紹介した管理方法については、このようにライブラリをまとめること自体始めたばかりですし完璧なものではないと考えていて、今後もブラッシュアップしていこうと考えていたり、有用なライブラリができたら公開等も考えていますので、ぜひ楽しみにしていてください。



あ、あと余談ですが、最近弊社スマフォ開発グループではFacebookのグループで日報を書くのが流行っています(他のグループでもやっているらしい)。

「普段あまり話さないあの人はこんなこと考えてたのか」とか「この人が紹介しているこのライブラリ、あまり興味なかったけど確かに面白いな」とか、いつも自分の頭の中だけで考えていることだったり、やっているプロジェクトには直接関連しないから話さないけど仕事自体には関連する事柄や意見などを共有しようとしています。

普段面と向かって話す時間はあまりないけど、こんなこと思ってるんだ考えてるんだというのを共有できたりするとコミュニケーションの幅が広がりそうですね!興味のある方はやってみては如何でしょうか。

facebook_group


ということで、今回はこの辺で。
ではでは。
レスポンス
コメント(1)
トラックバック(0)

このエントリーをはてなブックマークに追加