開発中のアプリを1コマンドで共有する方法
こんにちは!最近はおつまみ昆布にハマってるエンジニアのhentekoです!
今回は現在DeployGate開発チームで行っている取り組みについてご紹介します。
IPA/APKファイルの作りかたを誰かに教えるのは難しい
DeployGateというサービスを運用してきた中で、これまでに分かったことが数多くあります。その中でも突出するものが、そもそも Android/iOSアプリを配布できるようにするための準備が大変 というものです。
特にiOSアプリの場合、やってる方は分かると思うんですが至る所に罠があり、これを人に教えようと思ったらすごく大変です。
世の中には解説記事や、配布準備(ビルドなど)を手助けするツールは沢山あり、いろんな場面で取り上げられるのですが、私たちが見てきた中ではそれでも実際に導入できている開発現場はまだまだ少なく感じています。使うことで本来は使うと幸せになれる人々が「将来的には…」「もう少し勉強したら…」と二の足を踏んでいるような状態です。
実際のところ、これらのツールは導入にある程度の学習が必要だったり、試すとすぐにエラーにぶつかって試行錯誤を繰り返す必要があったり、ちょっと試してみようと始めたことで丸一日掛かってしまうようなことがしばしばあります。
最初のこの壁を、もっと下げることはできないのだろうか?
DeployGateでは、この課題を解決するための一環として新しいCLIツール、dgコマンドの開発をはじめました。
dgコマンドについて
まずはこのgifをご覧ください。

このgifでは実際にiOSプロジェクトをビルドしてipa生成、DeployGateへのアップロードまでを行っています。このように、実際のAndroid/iOSのプロジェクトをビルドから共有までワンステップで行えたら便利ですよね!
この操作は以下の1コマンドで実行できます。設定ファイルを別途用意するなどの準備も必要なく、いきなり実行できます。もし何か不足しているものがあれば、必要なときにそれを聞くよう設計されています。
$ dg deploy
インストールは、 OS X (10.10 Yosemite以降) のターミナルで以下のコマンドでインストールできます。(sudo が必要な場合があります)
gem install deploygate
これからは、「作ってるアプリを人に渡したいんだけど…」と質問されたら、「 Mac のターミナルで gem install deploygate
して dg deploy
と叩くだけだよ!」と答えれば大丈夫です!
いまできること
現在 dgコマンド v0.0.3 は、 iOS プロジェクトのビルドから配布までをワンコマンドで実行 できる機能のみが実装されています。
まだプロトタイプに近く、機能が不足していたり(Android未対応、とか)正しく動作しなかったりする場合がありますが、今後継続的にアップデートも続けていき、DeployGateのミッションである全世界の開発者の不便をなくすを実現していきます。
dg
はオープンソースです。他のツールやサービスとの連携を簡単にできるような仕組みも提供していく予定ですが、気軽にプルリクエストを送ってください。
試して、動かなかったら教えてください
ちょっと面白そうと思ったら、ぜひいま dg deploy
を試していただきたいです。
もしエラーで失敗した時は、 GitHub の Issue を立てるか聞いてくるようになっているので、どうなってるのこれってのがありましたら報告いただけると幸いです。どこでも一発で動かせるようにしたいと思っています!
使っている技術について
dg
は、 iOSのビルド周りにfastlaneの一部ツールを使用しています。先日Fabricに統合されたことが発表され、fastlaneのさらなる飛躍が期待されるので嬉しく思っています!

(ちなみにfastlane開発者のFelixはこの夏にDeployGateに遊びに来てくれました!イケメン!)
既存ツールについて
DeployGateではすでにCLIツールであるdgateを公開しています。
このdgateについては、今後アップデートは行わずに、dgコマンドによる改修を行っていきたいと思いますので、すでにお使いの方はdgコマンドが正式リリースされた際に移行をお願いいたします。
おわりに
DeployGateでは、皆様のフィードバックをもとに日常的に継続的な改善を行っておりますので、何かありましたらTwitter(Twitterで#deploygateでつぶやく)や、フォーラムにてよろしくお願いします。
また、DeployGate開発チームではメンバーの募集もしております!
Android/iOSの開発を日常的に行っていて「ここが不便だな、ここをこうしたらもっと開発が便利になるのに!!」というような方や、小さなチームでの開発に興味がある方が居ましたら、是非一緒にDeployGateをよりよくしていきましょう!
よろしくお願いします!
余談
なおこのブログはMackerelブログに感化されています。
今後も継続的にブログを書いていきます!