開発合宿でのレコメンドシステム開発をうまく本番導入へ | はてなで働く kouki_dan にアンケート [#12]

はてなで働くエンジニアにアンケートシリーズ第12回は、マンガサービスのiOS/Androidアプリエンジニア、id:kouki_danに話を聞きました。

本名とハンドルネームの組み合わせでユニークなIDに

── Q1. はてなidとその由来を教えてください

id:kouki_dan です。 本名のkoukiとゲームなどで使っていたハンドルネームのdanを組み合わせて付けました。どちらも片方だけではユニークさが足りなかったので、合わせることでどこでもユニークなIDを取得できるようにしました。


2019年7月撮影。京都オフィスでの様子

アンダースコアでつないでしまったため、IDが取得できないサービスがあったり、ドメインが取れなかったりするのが悩みです。_が使えないGitHubではkouki-dan_-も使えないDocker Hubではkoukidanになっています。

入社を決めたのは面接が圧倒的に楽しかったから

── Q2. いつどんなきっかけで入社されましたか?

新卒で入社した会社で4年ほど働いた後、「そろそろ転職をして他の会社を見てみるのもいいかもしれないな」と思って、転職活動を始めました。あまりない機会なので、大手転職サイトから、エンジニアに特化したエージェントまでさまざまな方法を使ってみました。はてなは、エンジニア特化のエージェントの方にご紹介いただきました。

はてなに入社を決めた理由は、面接が圧倒的に楽しかったからです。はてなに限らず、エンジニアの面接は社員の方と技術的な話をできて楽しいことが多いと思うのですが、その中でもはてなの面接は技術的に深く話すことが多く、ディスカッションも楽しくできました。この感じで仕事を進められるなら普段の仕事も楽しく行えると思い、入社を決めました。

iOSアプリのみ→Androidアプリの開発にも携わる

── Q3. 現在の仕事を教えてください

受託開発を担当するグループで主にマンガサービスのスマートフォンアプリを作っています。入社時点ではiOSアプリしか書いたことがありませんでしたが、現在はAndroidアプリの開発にも携わっています。社内では技術の幅を広げていくことが推奨されており、チームのAndroidエンジニアの協力もあって、勉強を始めるところから一人でPRを出せるところまでスムーズに実践できました。

エンジニアと他の職種との橋渡し役

── Q. チーム内の立ち位置を教えてください

マンガアプリチームのテックリードとして働いています。はてなのテックリードの役割は以下の記事でも説明されています。

developer.hatenastaff.com

僕はエンジニアとそれ以外の職種の橋渡し役となり、エンジニアもエンジニア以外の人も快適に働けることを目指しています。チームメンバーとの1on1を通してチームの様子を把握したり、後述するGraphQLなどの新しい技術を試す機会を増やしたりしています。もちろんエンジニアとしてコードを書く時間もあります。

チームでお茶会を開いた時の様子
チームでお茶会を開いた時の様子

デザイナーと共にデザインを学ぶ時間をとる

── Q. 1日の仕事の流れを教えてください

たいてい毎朝10時に仕事を開始します。まずはてなブックマークのテクノロジーカテゴリーの人気エントリーを見て、最近話題になった技術をチェックしています。

午前中は主にコードレビューや実装、ドキュメント整備など一人で行うタスクを進めることが多いです。

お昼ご飯を食べて、昼過ぎにはチームの昼会があります。昼会では30分ほど毎日集まり、コミュニケーションと情報共有を行っています。午後は午前中の続きや、ペアプロ(ペアプログラミング)をすることもよくあります。

定例のミーティングはほぼありませんが、週に1回30分チームのデザイナーとエンジニアで、デザインについて勉強する時間をとっています。Human Interface GuidelinesMaterial Designについて学んだり、最近はOOUIの本『オブジェクト指向UIデザイン』の輪読会をしています。

この先のリモートワークとチームの規模拡大

── Q. 最近うまくいっていないと感じることは何ですか?

最近よく考えていることは、リモートワークでコミュニケーションをどのように取るべきかということです。

現状ではチームメンバーが少人数で、そのメンバーともリモートワーク前から一緒に働いていたので、喫緊の課題というわけではなく、うまくいっていないということもありません。

はてなでは2022年10月まではフレキシブルワークスタイル制度を導入し、その間はリモートワークが行われることになっています。その中でこの先新しいメンバーが増えたり、チームの規模が大きくなっていったりした時に今の状態そのままでうまくワークするかについては自信がなく、考えて準備しておかなければと感じています。

開発合宿でレコメンドシステム開発、検証期間を設けてのGraphQL導入

── Q. 最近うまくいったことは何ですか?

3日間業務を離れてあるテーマに沿った開発を行う開発合宿で、BigQuery MLを用いたレコメンドシステムの開発を行いました。夏頃の合宿で小さく検証を行い、先日のサービスリリースまで、うまく実現することができました。

「機械学習の民主化検証チーム」として機械学習をこれまでやったことのないエンジニアがチームを組み、 id:syou6162 さんの助けも借りながら、Firebase Analyticsにあるデータを使って、BigQuery MLを使ったレコメンドシステムの実装と検証をしました。その後、合宿で作ったシステムを本番に導入することになり、本番向けのレコメンドシステムを開発して先日リリースしました。

また、最近うまくいったことはアプリへのGraphQL導入です。ネイティブアプリとサーバー間の通信は、これまでRESTで行われてきました。RESTでは表示したい要素が変更された時に毎回APIスキーマの変更とサーバーサイドの実装が必要になる、複雑な画面を構築するために複数のエンドポイントの結果をまとめる必要があるなど、複雑になりがちでした。これを解決するために社内ではWeb方面でよく使われているGraphQLを使えるかもしれないと思っていたのですが、なかなか導入に踏み切れずにいました。

GraphQLで実際にこれらの課題を解決できるのか、また、ネイティブアプリに導入する上で障壁になるものはないかを確かめるために、2週間の検証の時間をもらい、サーバーサイドのメンバーと一緒にGraphQLに取り組みました。その期間でサーバーサイド、ネイティブアプリ共に検証を行え、その後導入が決定し、今はGraphQLを使って快適にアプリの開発ができています。

その時の様子は、id:hitode909 さんがブログにも残してくれています。

blog.sushi.money

f:id:hatenatech:20210121162956j:plain
id:hitode909 と。2019年12月撮影

仕事だけでなく勉強、生活でも「長期的な目線で」

── Q. 普段大切にしていることは何ですか?

「チームで成果を最大化していくこと」と「長期的な目線で考えること」です。

もともとチームで仕事をするのが好きだったのですが、テックリードになってより意識をする機会が増えました。チームメンバーそれぞれで得意不得意があるので、互いに補って業務を進められるように心がけています。

長期的な目線で考えることは仕事だけではなく、勉強や生活などさまざまなところで昔から大切にしたいと思っていることです。たいていの場合、今わかっていることや、わからないことでも表面的な部分だけを組み合わせて実現していくことが短期的には早く成果を出すことにつながりますが、全く新しい概念を学んだり、表面的ではなく深く学ぶことで、長期的にメリットを最大限享受できると考えていて、実践しています。

より良い方向へ変化していく会社

── Q. はてなはどんな会社ですか?

入社してまず思ったのは「情報が広く共有されているな」ということでした。チーム内に閉じている情報はほぼなく、誰でもアクセスすることができますし、売上に関する共有会も毎月行われています。

それ以外では、はてなが好きな人が集まっていると感じます。「はてなが好き」ははてなバリューズの一つです。はてなが好きな人たちが集まって、はてなを一緒に良くしていきたいとみんなが思っています。はてなスタッフそれぞれの行動もそれに基づいており、より良い会社へと変化していく会社だと思います。


はてなのスマートフォンアプリ開発は挑戦の連続です。誰にとっても身近なスマートフォンですが、開発環境も利用者にとっての位置付けも日々変容しています。より良いアプリの提供を目指し、今ある技術だけでなく、これから先の技術に積極的な仲間を募集しています。ご連絡をお待ちしております!

iOS、Androidアプリエンジニア職 転職・中途採用 - 採用情報
iOS、Androidアプリエンジニア職の新卒採用 - 採用情報

はてなでは、今の技術・この先の技術に積極的な仲間を募集しています

はてなで働くエンジニアにアンケート カテゴリーの記事一覧 - Hatena Developer Blog