たった6日間で作ったPawooのAndroid版アプリ
三津山雅規氏(以下、三津山):一番目に発表したnorioさんからアプリのアップデート版を今すぐにリリースしていいと言われたので、ちょっとこの場でリリースします。
(会場笑)
三津山:今、リリースしました。どうもです(笑)。
司会者:おめでとうございます!
(会場拍手)
三津山:弊社で昨日PawooのAndroid版アプリをリリースしたのですが、その話をしたいと思います。
僕は三津山といいます。ニックネームはchocomelonといいます。ふだんはpixivアプリの開発リーダーをしていて、Androidメインで書いていますが、iOSだったりAPIもけっこうやっています。pixivには2013年に入社しました。
Pawooの話ですが、4月14日にリリースして、その10日後にアプリをリリースしました。Androidアプリだけですが、もうダウンロードしていただけましたか? Androidをお持ちの方は、ぜひお願いします!
ここで乾杯! イエーイ!
参加者:イエーイ!
三津山:このアプリについて「ReactNativeで作ってる?」とか「WebViewで出してるんじゃない?」といったお話もあるかもしれませんが、ちゃんとネイティブで作りました。
アプリの構成は、MVPっぽいアーキテクチャで、RetrofitやRxAndroid、Data Bindingを使ってやっています。
まあそんなことはどうでもよくて、とにかくスピード重視で作っていますよと。
対応しているAndroidのバージョンは、pixivのアプリが、この間Ice Cream Sandwichって4.0.3を切ったんですが、このアプリは5からです。Lollipopからですといった強い対応をしています(笑)。
できることは、基本的にはもう全部やっています。どうして基本的に全部かというと、そもそも競合クライアントがiOS・Androidともにあり、そのなかでうちのを使ってもらうとなると、やはりメインの機能を絞るのは難しいかなと。基本的にはもう「なるはやで実装を」といった感じでやりました。
2日目まで1人で開発、3日目以降からようやく助っ人が
このアプリはだいたい6日で作ったのですが、本日はその6日間をどんな感じで進行したのかということをお話します。
初日は、基本的に1人でやっていました。Androidに関しては僕1人です。午前中に「アプリやらない?」みたいな話があって、ログインから作って、とりあえずホームのタイムラインが1日目に表示できたらいいなという感じでやっていました。
2日目になり、これを1週間ぐらいで作るのはちょっときついなと思い始めました。しかし、とにかく人を入れたいのですが、作業を同時並行で行うのはかなり難しい状態でした。
とりあえず人を入れられる体制を作ろうと思って、まずドロワー、導線や簡単なメニューなどを増やしたり、あるいはパブメニューを作ったり、人が入っても単体でページを作れるようにしていました。
このローカルタイムライン、連合TLというのは、基本的タイムライン構造はだいたい一緒なので、そのあたりのベースとなる構造を作ったり、画像表示周りや基本的なところができるようにして、3日目以降で人が入れるようにしました。
2日目が終わった段階でこんな感じでした。ログインはWebViewログインができて、アプリに戻ってきて、(スライドを指して)タイムラインがこれです。この一連を2日間でやった感じですね。
3日目からは1人増やしました。ここに関しては、インスタンスがPawoo限定になっていたので、それをいろんなクライアント、mstdn.jpやほかのところでもできるようにしたのがアクション周りです。僕らが普通に使っていて楽しそうなことを、まず始めに実験したかったので、そこからやっていこうと。
それをどんどん社内に中途半端な状態でも配布していって、とりあえず使ってもらうことにしました。バグはもちろん「こうしたほうがいいんじゃない?」といった意見も含めて、フィードバックのために、早めに配布の準備をしました。それがDeployGateの整備っていう話ですね。
その上で、4日目もいきなり増やしました。プッシュ通知や、ほかにもできる作業と人を増やして、もういろんな細かいブラッシュアップも含めてできたので、さらに人を増やしてやってみました。
実際4日目には4名でやっていました。こんな感じです。タイムラインできれいに表示できて、ユーザーページも見ることができて、アクションもできる。一通りザックリ雑に揃ったかなと。
5日目に関しては、ほかのメインの体験とはちょっと違いましたね。通知一覧やFav一覧、翻訳リソース、トゥートがいろいろできたりといったことをやっていました。
6日目は、本当にバグ修正というか、ブラッシュアップの時間を取っていました。あとは、プレスリリースの準備として文言を確定させたりみたいなことをやっていました。
で、最終的にリリースされました。
ハッカソンも同然の過酷な6日間
弊社のアプリでも4名というのは、社内でも相当リソースを割いてやっています。iOS・Androidも1名1名多かったり、pixivのアプリでもAPI含めてAndroid・iOSで2名ずつといったように、Androidの人がAPIをやっているということが多かったので、このたびはハッカソン的なノリで一気に作ったという感じですね。
やはり重要だったのは、1回に全部4人を投入するというよりは、適切な時に適切な人数・人材を投入できたことがよかったと思います。多少バグが残ったり、足りない機能はあったんですけど、それなりに使ってもらえるクオリティにはなったかなと。
また、このPawooについてや、mastodon自体のドメインへの理解みたいなものがけっこうみんなが持っていて、「こうしたほうがいいんじゃない?」といった意見がジョインしたメンバーからけっこう出ていたのはすごくよかったと思います。結果的にはブラッシュアップにもつながったかなと。アプリとしてどうすべきか、どうしたほうがいいか、どうすれば楽しいかなど、そうした話をみんなでできました。
でも、やっぱり正直6日間もやると、ハッカソンをずっとやっているみたいな感じだったので、相当きついです(笑)。
(会場笑)
これに関しては、みんなも最後のほうは消耗していましたね。僕もさっきまでというか、もう今もずっと作っているという感じです。
独自の機能でPawooを使いやすいアプリに
これからは複数のインスタンスの対応。Googleなどはアカウント切替が簡単にできますので、やっぱりそこは必須かなと。
あとは、今バグ取りをすごいやっていますし、まだ足りない機能もたくさんあります。今さっき出したのはアカウント検索とタグ検索みたいなやつですね。このあたりはフィードバックもどんどん来てるので、その対応をしていきたいと思っています。
現状のアプリに関しては、ほかのmastodonクライアントとそこまで変わらないか、もしくはまだ劣っている部分もあると思います。しかし、Pawoo独自の機能でいうと、昨日出した「メディアタイムライン」というPawooの画像だけが出てくるタイムラインがあるんですけど、そちらもAndroid版で採用して昨日の深夜に出しています。
このように、Pawoo独自の機能という部分に追従してくるのが、僕らのクライアントとしてはPawooが使いやすい、だけどほかのところもけっこうできるよといった感じで結果的にはPawooにも認知してもらったり、使ってもらえたらという意図でやっています。
最後に、スタッフ募集中ですと。ぜひよろしくお願いします。ありがとうございました。
(会場拍手)
Pawooのプッシュ通知の仕組み
司会者:ありがとうございました。質問を2つほど受けられそうですが、どなたかいらっしゃいますか?
質問者1:公式のPawooのプッシュ通知についてお願いします。僕の知識がないだけかもしれないんですけど、基本mastodonってプッシュサーバの仕組みをどうしていたのかなと思いまして。どうやって実装しているのかなというのと。
もう1個は、複数インスタンスのプッシュ通知の対応はされるのでしょうか。もしやるとしたら、どういったかたちで実装される予定なのかお聞きしたいです。
三津山:まず、通知に関しては若干バグっておりまして。さきほどのリリース文言にも「通知バグってるからちょっと待ってね」と書いてあるんですけど(笑)。
(会場笑)
もう言い訳のように書いてあるんですけど。以降の修正で通知のバグを……はい、何度も来ちゃうみたいなんですけど。基本的には、JobSchedulerというものでやっています。Androidの5からサポートしているものです。
Androidの4から対応したいということであれば、Firebaseのほうで、4.0……まあ4.0以降どころかもっと前から使えるのですが、バックポートしたものがありますので、それを使ってもらえれば。
ちょっと頻度は言いづらいんですけど、5分に1回ほどバックグラウンドサービスでフェッチしてきているので、それで差分があった場合はプッシュ通知を送っています。今はその処理にバグがありますので、明日修正してリリースするという段階ですね。
mastodon以外のものという話になると、ちょっとこれはユーザー的に……さっき言った、結局サービスで動かしおり、そのインスタンスの通知API一覧を叩いているだけなので、負荷的にもユーザーのバッテリー的にもよろしくありません。だから、選択しているアカウントみたいなものがある程度無難なのかなと思っています。
プッシュサーバをうちで用意するみたいなのはあるんですけど、ちょっと時間がかかり過ぎちゃうというので、スピード感とのトレードオフで、これを選択しているという感じです。
質問者1:ありがとうございます。
司会者:それでは、chocomelonさん、ありがとうございました。
三津山:ありがとうございました。
(会場拍手)