🎧noteのAndroidアプリ開発の現状について話します #notetechtalk
noteのエンジニアがお届けするPodcast「note tech talk」。今回は、「noteのAndroidアプリの現在」について、アプリエンジニアのkazyam(かじゃむ)さんをゲストにお呼びしてお聞きしました。
もともとkazyamさんはiOSエンジニアとしてnoteに入社したのですが、社内の体制変更で途中からAndroid開発へ移行しました。ただ、その移行は決してネガティブなものではありませんでした。kazyamさんが地道に開発を続けたことで、エディタのバグレポートは激減し、9割をを占めていたレガシーなJavaコードは2割にまでなりました。地道な努力によってアプリのレビューは4.5まで上昇しています。
とはいえ、noteのAndroidアプリはまだまだ課題は山積みです。今回はそんなAndroidアプリが目指す方向や今後の課題について、kazyamさんに話をお聞きしました。
■司会 / 進行
福井 烈 / エンジニアリングマネージャー
ジークレスト、ガンホー・オンライン・エンターテイメントを経て2015年にnoteに入社。サービス黎明期からnoteの開発に携わり、データ基盤や会計などを担当。現在はエンジニアリングマネージャーとして、開発チームの統括や組織編成などを行う。note / Twitter
■ゲスト
山﨑 一人 (kazyam) / アプリエンジニア
2010年頃からアプリ開発に従事し、SNS向けゲームやチャットアプリケーション、IoT向けアプリの開発など幅広く経験を積む。2020年5月にiOSエンジニアとしてnoteに入社し、現在はAndroidアプリ開発を担当。note / Twitter
================================
0:00 〜 自己紹介 / オープニング
2:34 〜 noteにiOSエンジニアとして入社して、Android開発へ移行した
6:23 〜 Javaのコードを残り2割まで削減した
8:42 〜 新規開発とリファクタのバランスのとり方
11:09 〜 現状の開発体制について
12:35 〜 デイリーでクラッシュレポートが何千件もきていた
15:29 〜 直近のリリースについて(カーナビでも使えるようになった)
19:34 〜 アプリ内課金の開発が最大の壁
24:52 〜 noteではアプリエンジニアを絶賛募集中です
================================
ざっくりあらすじ文字おこし
※ 本編の内容がざっくりわかるように、内容を抜粋しております。あくまで「ざっくり」なので詳しい内容は本編をお聞きください。
■自分がやることにはこだわらず、会社やお客さんに還元していきたい
– kazyamさんはAndroidアプリ開発をしていますが、入社当初はiOSエンジニアでしたよね
「そうですね。noteにはiOSエンジニアとして入社しました。ただ、社内の事情と僕のスキルがマッチこともあって、途中からAndroidアプリの開発に変わりましたね」
– いや〜、kazyamさんがいなかったらAndroidアプリは大変なことになっていたかもしれません(笑)
「いえいえ、僕がいないなりの形にはなっていたと思いますよ(笑)」
– とはいえ、Android開発を担当することになったときにネガティブな気持ちになりませんでしたか?
「ネガティブな気持ちはありませんでした。そもそも僕はBtoCサービスで働くのが好きで、会社やお客さんに還元できることこそが一番の喜びなんです。やることにこだわらず、自分がパフォーマンスを出せる場所で働きたいと思っています」
– いやいや、本当にありがたい
「同じサービスで両方のアプリ開発ができるのも自分にとって良い経験ですしね」
■レガシーなJavaコードを大幅に削減
– noteアプリも4〜5年ほど運用が続いているので、だいぶレガシーなコードも多いですよね。現状だとJavaとKotlinの割合ってどのくらいなんですか?
「自分がAndroid開発に入ったときは8割ほどがJavaだったのですが、現在では7割くらいがKotlinになりました」
– おお、すごい
「とはいえ、レガシーなコードは治すのが難しくデグレを起こす可能性も高いため、慎重に作業しています」
– 開発とリファクタのバランスってどんな感じでした?
「新規開発が6、負債撤去が4くらいの割合でやっていました。そもそもクラッシュしてしまう箇所も多かったので、まずは品質を一定に保てるように改善していこうと」
– もともとWebやiOSより機能開発が遅れていたというのが難しい部分ですね
「そうですね、割り切って開発している部分はあります。『やりたいことはあるけれど、今は無理だからリファクタに力を入れよう』みたいな。ただ、結果として整地することに投資したのは正解でした。負債も解消されてクラッシュしてしまう問題もいくつか解決できましたし」
■1日で何千件もきていたクラッシュレポートを激減させた
– Android開発を引き継いで一番辛かったことは?
「課題だったのはエディタでした。クラッシュレポートが1日に何千件と来ていて」
– おお、それはひどい
「エディタの部分はコード量も多くて、コードをしっかりと読まないとバグの原因がわからないんですよね。さらに、Androidだけ特殊な処理をしている部分もいくつかあるのですが、その分岐がなぜ必要なのかがわからなくて。不具合の特定にかなり時間がかかりました」
– どうやって改善していったんですか?
「クラッシュレポートから地道に解析していきました。結果として、ある処理からデータがおかしくなっていることが判明して、そこから徐々に解決していくことができました」
– 今はクラッシュレポートはどのくらいの量に変わったんですか?
「デイリーで1000あったものがマンスリーで100を超えないようになりました。スタビリティーの面ではかなり改善できたかなと」
– すばらしい!
「クラッシュが多かったことで、Androidアプリはストアレビューも低かったんですよね。今はそれが4.5くらいにあがっているので取り組んでよかったなと思っています」
– 地道な改善が実を結んでいますね
「いきなり一発ですべて治すのは無理なので、やれるところから地道に手を付けていくのは大事ですね。継続していきたいと思っています」
■カーナビでも快適にnoteが使えるようになった?
– 直近ではどんな機能をリリースしましたか?
「新しいエディタをAndroidでもリリースできたのは大きかったですね。
noteは記事以外にも画像やつぶやきも投稿できるのですが、それらもリファクタリングして使いやすくしました」
– いいですね!
「あとおもしろいのが、AndroidOSが入っているカーナビでもnoteが使いやすくなったことです」
– カーナビ…?
「Androidはサイズがバラバラなため、横回転させたときの画面サイズに合うように修正するのがけっこう大変なんですよね。この対応をしたら副次的にカーナビ画面でもnoteが見やすくなったんですよね。カーナビの実機がないのが残念です(笑)」
– おもしろい改善だ(笑)
「カーナビは極端な例ですけど、こういった改善が一つずつ繋がってnoteに触れてもらう機会が増えればいいなと思っています」
■Androidエンジニアを大大大募集中
– 今、課題となっている機能はありますか?
「iOS、Androidともに言えることですが、アプリから課金ができるようにしていきたいです。今は有料記事の購入ができないので。入社したときからある最大の課題です」
– それはやりたいですね
「AppleやGoogleの規約によってできないことが多いため、情報が出次第に取り組む予定です。2年間、試行錯誤しているのですが、もうしばらく待っていただけるとありがたいです」
– 課金をないがしろにしているわけではないという点を理解していただけるとうれしいですね
「note社全体としてアプリ課金にどう対応していくのかを決めていかなければいけないフェーズにもうなってきていますね。クリエイターの方々をサポートできる形で開発していきたいとは考えています」
– 課金以外にもAndroidアプリの課題はまだまだありますよね。もちろんnoteではAndroidエンジニアは絶賛募集中ですので、聴いてる方で興味あれば来てほしいですね
「ずっと一人でやっているのでそろそろダブルチェックしていろんな人の目が入ったコードにしていきたいです」
– 人数が増えるとできることも全然変わってきますしね
「気軽にカジュアル面談から申し込んでいただけるとうれしいです。
入社した方がすぐにパフォーマンスをだせるように整備もしているので、ぜひよろしくお願いします!」
▼Podcast一覧
▼エンジニアの記事をもっと読みたい方はこちら
▼noteを一緒に作りませんか?
Text by megaya