こんにちは。Yahoo! JAPAN でモバイルアプリのCI環境や社内配信システムの開発運用を行っている堀です。
最近 OSS として公開した AppFeedback というモバイルアプリ向けの SDK を紹介します。
AppFeedback とは
AppFeedback はアプリからバグ報告や改善要望といったフィードバックを簡単に Slack に投稿できるようにするモバイルアプリ向けの SDK です。iOS と Android に対応しています。
開発中のアプリに組み込むことで、アプリの動作確認やドッグフーディングする人は小さなフィードバックでも気軽に送ることができ、アプリ開発者は多くのフィードバックを受け取りアプリの品質向上に役立てることができます。Yahoo! JAPAN のアプリ開発で利用されてきた SDK を OSS 化しました。
主な機能
SDK を組み込むとアプリの画面上にカメラアイコンのフローティングボタンが表示されます。このボタンは邪魔にならないようにドラッグすることで好きな位置に移動できます。
ボタンをタップするとフィードバックの投稿モーダルが表示されます。この画面でカテゴリー、タイトル、詳細な説明、投稿者名を入力し「送信」ボタンをタップすると Slack にフィードバックを投稿できます。ボタンを押した瞬間のスクリーンショットも添付されます。
スクリーンショットの注目してほしい部分をアノテーションする簡単な画像編集機能もあります。また、操作手順の説明を行いたい場合はスクリーンショットの代わりにスクリーンキャプチャーの動画の撮影もできます。SDK の UI は日本語と英語に対応しています。
Slack に投稿されるメッセージには入力した内容に加え端末の OS やモデル、アプリのバージョンといった情報も自動で追加されます。
CI での組み込み
Slack へのメッセージ送信のために Slack API を使用します。API の利用に必要なトークンは SDK のメソッドを呼び出すことで設定できますが、そのトークンをソースコードに直接記述してしまうと管理上社内では問題になってしまいます。
そこで、iOS 向けの SDK では開発フロー自動化ツールのデファクトスタンダードとなっており社内でも利用されている Fastlane のプラグインを用意しています。
https://github.com/yahoojapan/fastlane-plugin-setup_app_feedback_sdk
このプラグインのアクションはパラメータとして Slack のトークンなどの情報を受け取り、その値をプロジェクトの Info.plist
に追加します。SDK はメソッドで明示的に指定されていなければ Info.plist
から読み込んだ設定を利用します。CI の Secrets などに保存したトークンをプラグインのアクションに渡すことでソースコードに直接トークンを記述する必要がなくなります。
このプラグインにはビルド時の git のブランチ名をメッセージに追加する機能もあります。複数人で開発を行うアプリではいくつもの案件の開発が並行して行われることも多く、その場合どの案件に対するフィードバックなのか区別するためです。
Android 向けの SDK では Gradle で BuildConfig に設定を行うことができます。詳しくは SDK の README.md を参照してください。
OSS公開の経緯
アプリ内から簡単にフィードバックを送信できるようにする取り組みはもともとヤフオク!のアプリ開発で行われてきました。有効な取り組みだったため、そこで使用されていた SDK をどのアプリでも使えるようにし社内のさまざまなアプリに展開してきました。
フィードバックの送信先は MYM という社内で独自に開発されたチャットシステムでしたが、全面的にSlackへ移行することになったため、送信先を Slack に変更する改修が必要になりました。そうすると SDK 内に社内技術に依存した処理がなくなるため OSS として公開できそうだということになり検討した結果、品質や機能追加、利用拡大の面でもメリットがあるとして OSS 化することにしました。
まとめ
OSS として公開した AppFeedback の紹介を行いました。フィードバックを楽にできる仕組みを用意しておくことで、アプリの品質向上やチーム内の議論の活発化といった効果も見込めるので良ければお試しください。IssueやPull Requestもお待ちしています!
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました