クックパッド開発者ブログスマートフォン用の表示で見るクックパッド開発者ブログ2017-03-01クックパッドのiOSアプリ開発を加速させるスクリプト群こんにちは、技術部モバイル基盤グループの茂呂(@slightair)です。今回は、ちょっと地味ではありますが、クックパッドのiOSアプリ開発を支えているスクリプト群について書きたいと思います。日々iOSアプリ開発を行うとすれば、Xcodeまたはその他のお気に入りのエディタでコードを書き、ビルドと実行を繰り返して開発を進め、アプリが完成したらサブミット、めでたくリリースという流れになると思います。場合によってはこうした開発の所々をサポートするツールを使うこともあるでしょう。クックパッドでもいくつかのツールを使っていますし、場合によっては自作することもあります。ツールを導入することで解決できることであればそれでよいですが、もうちょっと気の効いたことをして欲しい、リリースフローなど自分たちのアプリ開発の進め方の都合で発生する繰り返しタスクを省力化できないか、というような比較的小さな問題を解決するために、僕たちは今回紹介するようなスクリプトを用意しています。開発支援系アプリ開発を支援するスクリプト群を紹介します。ツールを使っています。数が多い上にこれらのツールの更新頻度はバラバラで、バージョンによって動きが違ったりします。複数人でアプリを開発しているので、環境によって期待している効果が得られないと困ってしまいます。そのため、各開発者の環境に期待しているバージョンがインストールされているかチェックするスクリプトを用意しています。ライブラリ群をインポートするために使っています。フレームワークが増えるほどアプリ起動に時間がかかってしまう問題を防ぎたいというのも理由です。マージするスクリプトを用意しています。この記事を書いている時点では更新のあったライブラリだけをビルドし直す仕組みがなかったので、ビルド時間を抑えるために更新が必要なライブラリだけをビルドするスクリプトを用意していました。出てマージされているので、新しいバージョンではこの処理は必要なくなりそうです。この操作を実行できるようにしています。コマンドを実行することで、チームで期待されている開発環境にそろえて開発に取り掛かることができるようになります。これらのツールを使ってもよいのですが、ちょっとした工夫をしています。かけたい範囲を指定できるので、開発者が変更を入れた箇所にだけフォーマッタをかけるスクリプトを用意しています。ファイル単位でも良いのですが、PRを出した時に変更とは関係のないフォーマッタによる修正が混ざるとレビューする側がつらくなってしまうので、こうしています。仕込むこともできると思いますが、意図的にしていません。これは、フォーマッタによって自動的に変更されたコードを開発者に確認してもらいたいからです。リリースフローに関係するタスク補助系クックパッドのリリースフローに含まれるタスクのうちスクリプトで解決しているものを紹介します。アプリのバージョンを繰り上げるアプリのバージョンを変更するというただそれだけのスクリプトを用意しています。いくつもあるので地味に面倒な作業であることがわかると思います。クックパッドではこの部分の変更作業を複数人で回しているので、スクリプトで行えるようにしているのは作業する人によって微妙に違う内容になってしまうのを避ける目的もあります。開発に関わった人ごとのマージコミットをリストにするリリースフローに、次にリリースしようとしているバージョンのコードに自分がいれた変更が正しく含まれているか各開発者が確認する手順があります。このチェックリストをつくるスクリプトがあります。コマンドを利用してマージコミットのリストを作るだけのものですが、このような単純な作業こそスクリプトにしやすく、単調で間違いやすいタスクなので、スクリプトで片付けるようにしています。開発に直接関わるものではなく、開発環境がどういう状態であるか計測するためのスクリプトもあります。コードの割合がどれくらい変化しているか計測・記録し、グラフに描画するようにしています。書き換えを進めています。この進行具合が可視化されると、少しだけやる気がでたり達成感が得られます。ビルド時間の計測アプリのビルドにどれくらい時間がかかっているのか、バージョンを重ねるたびに変に伸びたりしていないか計測しています。ビルドに時間がかかっているということは、それだけ開発者を待たせてしまい生産性を下げていることになるので、状況を把握するために記録しています。ここで計測している時間をもとに、ライブラリの選定や場合によっては直接的な対策を行います。使って具体的な場所を特定したりもします。して実装し直そうという動きもあります。して分離できるものがあれば、公開していきたいと考えています。クックパッドではiOS/Androidに詳しいモバイルアプリ開発エンジニアはもちろんのこと、このようなモバイルアプリ開発をより効率よくするために活躍できるエンジニアを募集しています。19:27クックパッドのiOSアプリ開発を加速させるスクリプト群Tweet関連記事2019-10-21クックパッドアプリ(Android)の開発効率化のためにやったこと/やっていることモバイル基盤部のこやまカニ大好き(id:nein37)です。モバイル...2019-04-26XcodeGenによる新時代のiOSプロジェクト管理こんにちは。モバイル基盤部の@giginetです。