リプレイスしている話モバイルはじめにこんにちは、コミューン株式会社でソフトウェアエンジニアをしている牛嶋です。用いてコミューンのモバイルアプリ開発に従事しております。利用したクロスプラットフォーム開発に取り組んでいます。側で実装し直すことに取り組んでおり、その結果として、ユーザー体験の向上させることを目的としています。利用したリプレイスプロジェクトの概要について書いていきたいと思います。「企業とユーザーが融け合う社会を実現する」です。実現するために、コミュニティサクセスを支援するプラットフォーム「commmune」を提供しています。つのステップが必要だと考えています。上記で示したステップのうち、特に「コミュニティの活性化」に関して、モバイルアプリは重要な手段となります。モバイルアプリの操作自体をよりスムーズにするとともに、アプリへの通知等の機能を拡充することで、ユーザーが利用しつづけたくなるアプリ体験へと進化させます。それにより、アプリでのユーザー体験が向上することで、コミュニティ活性化へとつながり、「企業とユーザーが融け合う社会」の実現に近づいていきます。上記のような世界観を実現するために、モバイルアプリの開発により注力するべく、リプレイスプロジェクトが始まりました。使って表示していただけであったため、技術選定に関しては、比較的ゼロベースで行われました。採用した理由は大きく以下になります。限らず、クロスプラットフォーム開発全般にいうことができるメリットですが、少ない人数で開発効率を最大ができる点は一つの理由です。ネイティブアプリエンジニアをそれぞれ採用する場合と比較して、実装の工数や開発に必要な人員などを、ある程度減らすことができます。コミューンでも、ネイティブアプリ開発経験者が少なく、かつリソースも限られていたため、クロスプラットフォーム開発を選択しました。チャレンジしたいと気持ちの高まりがありました。モバイルアプリ開発をリードしたことがある人が在籍しており、知見が既に存在したことも意思決定の要因でした。よって積極的に開発されています。数年後を考えてみても、技術が廃ることなく、モバイルアプリの基盤として十分に効力を発揮するであろうと判断しました。段階的リプレイス計画リプレイスをするにあたって、リリースを複数回に分けて、段階的にリリースをしていく戦略を取りました。ビッグバンリリースをするのではなく、段階的にリリースするに至った理由として、既に生じている課題の解決が急務だったことが大きかったです。改善が難しい課題が生じていました。そのため、できるだけ早く生じている課題の解決し、アプリ内での体験を改善する必要がありました。同時に技術負債を産まないことも考慮する必要がありました。内の処理が相互にやり取りを行う部分の実装に関しては、アプリケーションの複雑性増加に直結してしまうため、できる限り減らしていきたいという気持ちがありましたコミューンでは、この辺の話は非常にフラットに行われていて、今回もプロダクトマネージャーとエンジニアが何回も意見交換を重ねました。具体的には、プロダクト視点から見た課題と、開発視点から見た課題の双方を机上に並べて、お互いが状況を理解しあった上で、意思決定につなげていきました。コミューンでは、エンジニアチーム以外の人間も技術に対する理解があるため、無駄なコミュニケーショントラブルに巻き込まれることなく、本質を追求したプロダクト開発ができます。弊社のバリューである「超本質主義」と「チームコミューン」は、単なるバリューではなく、実際に会社内に浸透しており、非常に仕事がしやすい環境だと感じています。プロダクト観点と技術観点を総合的に鑑みた時に、最も効率的な形でリリースをしていくことを目的として、段階的に期間を区切り、アプリをリリースしていく方針を取りました。第一弾リプレイス第一弾リプレイスでは、モバイルアプリ開発の基盤乗り換え、コンテンツ表示速度やタッチ感度の改善等を中心としたユーザー体験の改善にフォーカスして行いました。アプリを新規に立ち上げ、モバイルアプリ開発の基盤乗換えを行いました。基盤乗り換えコミューンでは、クライアント様のアプリも含め、複数のモバイルアプリを管理しており、ビルド・リリース時間の短縮は生産性向上に大きく貢献します。コミューンはアメリカにも進出しており、アプリケーションを開発する際には、多言語化を考慮必要があります。利用した多言語化基盤の導入を行いました。可能な範囲で画面の描画処理をモバイルアプリに寄せました。アプリ内に実装を持ってきました。時よりもタッチ感度を改善していく狙いがありました。速度改善を行いました。こちらは社内で別のプロジェクトとして、速度改善プロジェクトが立ち上がり、そちらのチームで担当して取り組んでいました。側の改善をすることによって、コンテンツの表示速度を改善していく狙いがありました。結果として、以下のような成果を上げることができました。モバイルアプリ基盤の乗り換えに関して多言語化対応なども含め、今後モバイルアプリをスケールさせていくための基盤導入できました。導入したことにより、ビルド・リリースを手動で行っていた状態から、自動で行える状態になり、生産性が向上しました。ボタンの反応感度が上がるなど、アプリの操作性を向上させることができました。表示速度の改善でも以下のように一定の成果を上げ、ユーザー体験を向上させることができました。第一弾リプレイスにあたり、苦労した点を数点紹介したいと思います。複数アプリを一つのリソースからビルドするコミューンでは、さまざまなコミュニティを利用することができ、クライアント様ごとにアイコン等をカスタマイズした専用のアプリが存在します。そのため、複数のモバイルアプリが管理対象となります。アプリごとに切り分けるための仕組みが必要となります。上記の課題に対して、素材やアプリの設定などを書き換えるシェルスクリプトを用意しました。ビルドを行う前に任意のスクリプトを実行することができます。用意したシェルスクリプトをビルドの前に実行する設定を追加することにより、アプリごとの設定を反映できるようにしました。利用している部分はまだ残っています。内の実装とでやり取りを行う必要がある箇所がある程度生じました。Channelを利用することによって、やり取りを行うことができ、それを用いて一部の処理を実装しています。側の実装を行うチームやプロダクトチームの快い協力等によって、リリースまで持っていくことができました。知見にキャッチアップしていく必要がありました。経験者のエンジニアを中心としたペアプログラミングの開催、また業務で得られたナレッジをシェアする会を定期的に開催するなど、チーム全体で知見をシェアすることに努めました。未経験者が入ってきた場合でも、自分達が辿ってきた道のりを把握することができるように努めました。今後の取り組み今回のリプレイスで、モバイルアプリ内のユーザー体験改善で一定の成果を上げたとともに、今後アプリ体験をより良くしていくための基盤を整えることができました。現在は既に第二弾リプレイスに取り掛かっております。上記で示したように、コミューンでは会社全体でプロダクト開発に対する理解があります。ユーザーからのニーズに基づいたやるべきことはたくさんあり、開発を加速させていくことがビジネスの成長につながることを確信できています。今後も、引き続きモバイルアプリへ実装を寄せていくと同時に、モバイルアプリならではのユーザー体験を追加していくことによって、コミューンの目指す世界観を実現できるようなアプリ開発をしていく予定です。リプレイスプロジェクトの概要について書かせていただきました。課題は多いですが、グローバルで利用されるユーザー体験の優れたアプリを作るべく、チームコミューン一丸となって奮闘しております。今後も少しずつ改善を加えていき、ユーザー体験向上に寄与していければと思っています。(1)引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。