業務効率化の施策を紹介! 〜アプリ開発編〜

はじめに

NTTレゾナントテクノロジーでiOS/Androidアプリケーション開発を行っている、長谷川と申します。複数のプロジェクトでiOS/Androidアプリの運用・保守を担当しています。
現在弊社では、開発メンバー全員がリモートワークで開発を行っております。その環境下でも、複数のプロジェクトを受け持っている開発チームが少しでも効率よく作業ができるよう、その工夫や施策を紹介しようと思います。 リモートワークが世の中に広まっている今、いまさらではありますが、少しでも参考になれば幸いです。

1. Gatherを使ったコミュニケーション

普段はSlack上にてコミュニケーションを取っています。Slackのみですと通知に気付かず反応が遅くなってしまったり、みんなの集中度が見えないため遠慮して質問しづらい環境となっていました。そのため、実際に「皆さんが忙しいかどうかがわからず、なかなかSlackで質問しにくかった」という意見も出ていました。また、完全リモートワークでみんなが各自宅で仕事をしている以上、Slackだけでは雑談もできず、少し寂しい感じもあります。
そんなコミュニケーションロスを少しでも解消したいと思い、今話題のバーチャルオフィスサービス「Gather」を試験的に導入しました。

「Gather」を選定した理由は、画面共有や音声・映像品質の面が良かったのはもちろんのこと、レトロゲームを思わせるUIで遊び心が感じられた点などがありました。
現在は毎週金曜日にこのGatherに集まるようにしています。たまに雑談しつつ、業務で分からないことがあればその場で発言、みんなで解決するという場面も多々あり、良い流れが定着しつつあります。
ちなみに今の部屋の雰囲気はこんな感じです(重要なところは伏せております)。 今はハロウィンが近いということで、いつの間にか有志の手でハロウィン仕様の部屋が作られておりました。

Gather:部屋内部の様子

2. 分報の導入

上記のGatherの導入でコミュニケーションは少しでも取りやすくなりましたが、それだけでは解決できない問題もありました。

  • 各開発メンバーが今何をしていて、どんな問題に直面しているのか

  • 問題が起きた場合の解決法は見つかり、それはどんな方法だったか

  • 上記内容の他のメンバーへの共有

1、2点目については各メンバーがメモ等に残して保存したり、朝会などで進捗を確認すれば、ある程度掴むことは可能です。しかし、3点目については、他の人に分かりやすいようにドキュメントにまとめ、置き場所を決め、Slackで連絡をして...など、普段の開発とは別に時間を取って実施するとなるとハードルが高くなってしまう点を懸念していました。
実際、躓いた時に質問しづらい状況だと業務が滞ってしまうことが散見されていたため、対策として分報を取り入れてみました。

現在、終業時には「日報」として全員がSlackに毎日以下の内容を投稿する形で報告を行っています。

  • 今日やったこと

  • 次の日にやること

  • 問題点

これらを概要としてまとめて記載するだけなので、1つ1つのタスクにどんな問題があったのか、それらはどう解決したのか、などの詳細な情報は含まれていません。こうした状況下をどうすべきかと検討していたところ、以下の記事を発見しました。

上記の記事にある課題感は私たちの感覚と類似しており、同様の取り組みを進める価値はあると判断し、実施することにしました。

本取り組みを進める上でルール・ガイドラインを用意しており、現在は以下のようにしています。

  • 各メンバー専用の分報用チャンネルを用意する

  • 共有したいことができたら投稿する

  • ノルマは設けない

  • 各チャンネルはワークスペースのメンバーが誰でも閲覧できるようPublicに設定

今でも毎日何らかの投稿が続いており、チーム内で分報が浸透しているように感じます。各メンバーもメモ代わりとしても投稿していて、それらの状況をたまに確認しつつ、何か問題が起きていそうであれば声をかけるようにしています。

3. チーム勉強会

現在、チーム全体の技術力向上を目的として、毎週火曜日の夕方に1時間程度の勉強会を実施しています。
テーマは特に限定しておらず、チームメンバーがその時に必要と感じたものを選択しています。以下はこれまで取り組んできたものの中の一部を抜粋したものです。

  • SwiftUIを使った簡単なゲームアプリの作成

  • iOSやAndroidの簡単なリスト表示をするアプリの作成

  • 各プロジェクトで不明点をモブプロで確認しながら解決する

  • 読書会

SwiftUIを使った簡単なゲームアプリの作成

SwiftUIに関する知見を得るための取り組みです。背景としては、普段開発しているプロジェクトはサポートするiOSバージョンの関係上、SwiftUIの導入が難しいことが多いです。しかし、新規アプリの開発や将来的な移行を見越して実施しました。

iOSやAndroidの簡単なリスト表示をするアプリの作成

アプリ開発経験が少ないメンバーが参入したことに伴い、アプリ開発の基本を理解するための取り組みです。具体的にはAndroid/iOS上でのリスト表示機能の実装を行いました。それぞれの実装方法の差異を確認できるようにすることで、新規参入のメンバーはもちろん、他のメンバーも色々な気付きがありました。

読書会

チーム全体のスキル向上を目的として、技術書の読書会を実施しています。各個人でそれぞれ技術書を読むのも良いですが、全員で読むことで新しい気付きや発想を得ることができるのでは、という仮説から始めた取り組みです。

現在は「オブジェクト指向でなぜつくるのか 第3版」をメンバー全員で読み進めています。

この読書会で本を読み進めていく際、疑問点や個々で気になる部分や重要だと思う部分が出てきたら、「FigJam」のボードに気軽に付箋を貼っていきます。これは、内容の備忘的な意味のほか、後でチーム内で挙がった疑問など調査を行う際のリストとしても利用します。

4. ビルドの自動化

アプリのビルドはそれなりに各マシンのスペックを使い、時には並行して別の作業ができないほどリソースが取られてしまうこともあります。特にiOSアプリのビルドはCPUを使うので、ビルド完了を待たないと別のことができないこともあります。そこで、CI/CDのサービスを使い、クラウドでビルドを行うようにしました。

Android/iOSの両方をビルドできるサービスとして以下が候補に挙がりました。

その中でも今回は「Bitrise」を使うこととなりました。
選定した理由は以下のとおりです。

  • ワークフローの作成がWebブラウザ上のGUIで完結するため、設定が簡単で誰でも操作できる

  • ビルドやテストコードの実行、dSYMアップロードなどのステップが用意されているため、独自のステップを作成せずにワークフローを完成できる

まだ完全な自動化まではできておらず、現段階ではBitriseのWebページ上でビルド開始を指示することで、ビルドやTestFlight、DeployGateにアップロードするまでが自動で走るようになっています。
今後はGithubでのイベント(Pull Requestやマージなど)をトリガーとしてビルドを自動的に開始する、などを実施していきたいと思っています。


いかがでしたでしょうか?
まだ発展途上なところもありますので、今後もチームにとって良い施策がありましたらどんどんチャレンジしていきたいと思っています。

最後に

NTTレゾナントテクノロジーでは、絶賛iOS/Androidアプリ開発メンバーを募集しています。
少しでも興味がありましたら、ぜひ採用ページを見ていただき、応募していただければ幸いです。


この記事が気に入ったらサポートをしてみませんか?