「Django」をフル活用してInsurTechの開発を進める――株式会社hokan
株式会社hokanが掲げるミッションは「保険業界をアップデートする」。2017年8月に設立されたスタートアップ企業ながら、InsurTechSaaSの開発をはじめ、保険代理店開業支援やInsurTechの専門総合サイトの運営、保険事業やInsurTechへの参入に対するコンサルティングなど幅広い事業を手がけています。
メインとなるのは保険営業向けのCRMサービス「hokan」。見込み顧客の管理や営業活動履歴、契約に関連する事務処理をはじめ、各代理店のスケジュール、To Doの一元管理など、グループウェア的機能も備えています。 今後はC向けの新規事業も計画しているというhokan。少人数のチームで複数の事業に対してどのように素早い開発を行っているのか、技術スタックやエンジニアの教育などについてお伺いしました。
目次
エンジニアが現場に赴いて保険業界のナレッジを蓄積するスタイル
hokanのエンジニア組織の概要と、お二人が現在担っている役割について教えてください。
杉岡:エンジニアは現在7名。2018年7月時点で3人だったので、順調に増えています。職能としてはフロントエンドが3名ですが、実際のところ明確な区分はありません。フロントエンドとバックエンドを3:7、あるいは6:4で見るなど、ほとんどのメンバーが職能を横断した働き方をしています。
横塚:設立当初はプロダクト自体をいかに素早く開発し、いかに早くPMF(プロダクトマーケットフィット)するかという点に注力したかったんです。現在は専門領域を持ったメンバーも採用募集していますが、当時はフルスタックエンジニア、あるいはフルスタックで働きたいという人材を中心に採用していました。フロントもバックもそれなりにこなせる人材が育っているのは、そんな背景があります。 私はジョインした当初こそコーディングもしていましたが、今は特にメイン事業であるCRMはどんどんメンバーに任せています。私自身はエンジニア組織全体のマネジメントのほか、新規事業開発を担っています。
エンジニアメンバーはもともとInsurTech領域が好き、あるいは関心が高い方々だったのでしょうか?
横塚:保険業界への深いナレッジや関心を持ったエンジニアは全くいませんでした。エンジニアの特性としては、保険業界そのものよりも業務改善に関心があったというタイプがほとんどです。 当社はCEOが保険業界の営業出身、COOが保険会社のコンサルタント出身という経歴を持っています。ですからエンジニアはこの二人に保険の知識を学んだり、一部のエンジニアは実際に業界の現場に足を運ぶことで知見を得ています。保険業界に関する勉強会も行っています。 新たにソリューションを考えて実装するという事業スタイルが好きなエンジニアがどんどんドメインナレッジを蓄積していくことで、保険業界という領域においては他社に負けない組織体制が構築できているのではないでしょうか。
会社のフェーズや人材に合わせて技術スタックを変遷させていく
御社の技術スタックなどで特徴的な部分はありますか?
横塚:会社の状況に合わせて利用する技術を柔軟に変えていく点は特徴かもしれません。 設立当初は先程も述べたとおり「いかに早く開発するか」に注力していました。プロトタイプは、フロントエンドはReactで開発し、アプリはReactNativeでクロスプラットフォーム開発を行いました。サーバーサイドはLaravelで、DBはneo4jを使ってました。neo4jを使ったのは、使ってみたかったからです。(笑) その後、プロトタイプを盛大に外して、プロダクトの方向性もすっかり変え、最初から全て作り直すことになりました。 その時は、今後のエンジニア採用を考えてサーバサイドはRuby on Railsに切り替え、データベースまわりもRDBMSにしました。杉岡がDjangoに強いということだったので、彼が入社した2018年9月以降には裏側はすべてPythonに書き換えるなど、技術を転々と変えていますね。 これからもTypeScriptを導入するつもりですし、どんどん変えていきたいです。
Djangoを利用するメリットとしてはどんな点が挙げられますか?
杉岡:Djangoは日本ではあまり普及していませんが、海外に目を向けるとInstagramやSpotifyといった大型のC向けサービスでDjangoが採用されている事実があります。特にスケールのしやすさが大きなメリットと言えるでしょう。ドキュメント数も着々と増えています。個人的な印象としては、もちろんRailsは早く、そしてコード量も少なく開発できるのですが、あえて比較するならば、Djangoの方がブラックボックスが少なく、また、モジュール化しやすく可読性が高まると考えています。
社内のフェーズで言えば、今後機械学習やAIの領域にシフトしていく可能性があるため、その準備として社内エンジニアのPython技術向上が図れたのも利点です。
>Djangoとは? ーPythonで実装されたWebアプリケーションフレームワーク。model-template-view デザインパターンに緩やかに従う。
【参考】 https://qiita.com/kotayanagi/items/01e9a617571e2b9526bc
一人を除いてエンジニアメンバー全員がDjango未経験の状態でスタート
Pythonの技術向上のために社内ではどんな施策を行っていますか?
杉岡:基本的には「ひたすら書く」ですね。勉強会も定期的に開催していますが、社内で重視しているのはコードレビューを通してエンジニア全員が統一された美しいコードを書くようにするという点です。コードレビューの際は僕自身が一行一行すべてチェックしています。コードフォーマッターを使ってエラーが出たらすべて直すようにもしていますね。 現在のエンジニアメンバーは全員Django未経験でしたが、こまやかなレビューを続けることで比較的すぐにきれいなコードを書けるようになりましたよ。
今から個人的にDjangoを学ぶ場合は、どのような方法がありますか?
杉岡:日本でも公式がローカライズはされているので、自分で勉強することはできます。Qiitaでもそれなりに記事が上がっています。日本はPythonのコミュニティも活発になってきていて、年に1回はPythonのカンファレンスであるPyConも開催されています。勉強会も検索すればいくらでも出てきますし、人それぞれ合った方法で勉強できるのではないでしょうか。 個人的には今走っているOSSのソースコードを一度壊して、再度動かしてみるのが最短だと思いますし、実際に社内でも僕がそうした方法で得た知見をフィードバックしています。
オフィスではペッパーくんがお出迎え
1週間のスプリントを設定し、細やかなスクラム開発を推進
タスク管理など、開発はどのように進めていますか?
杉岡:基本的にはAtlassian社のソフトウェア「Jira」でチケット(課題)管理をしています。1週間スプリントを設定して週の初めにミーティングを行っているので、そこでチケットの割り振りと仕事量の調整を行います。いわゆるスクラム開発ですね。
横塚:全社的にはOKRを設定していて、週のスプリントにもOKRの内容を組み込んでいます。OKRやさらに細かい単位のスプリント達成度は杉岡が資料にまとめ、週末に行う全社会議で逐一チェックする形にしています。 また、私が開発チームのテーマとして考えていることは開発面とマネジメント面で3つずつあります。 一つ目は”Coding Style”の共有。人や言語によってかなりコーディングスタイルは変わってしまいますが、当社ではしっかり共有、統一化をしようとしています。そのためのエンジニアの議論には時間をとってます。 二つ目は、”Automation”。エンジニア自身、クリエイティブな作業に時間を取るべきなので、自身が負荷かかってるなとか、めんどくさいなと思う業務は極力自動化するようにしています。直近ではアプリの申請作業(android,ios共に)などを自動化しました。 最後が、“Infrastructure as Code”です。Cloud FormationやTerraformの活用はずっと進めていきます。 マネジメント面については、先程話させていただいたOKRや、1on1、オンボーディングの3つを特に重視しながら進めています。 これらができているのかを常に見直すよう心がけています。
様々な企業が入るFINOLABオフィス
明確なバリューと整った開発環境が個人の成長を促してくれる
今後の御社の展望についてお教えいただけますか?
横塚:昨年、ワンファイナンシャル株式会社が提供しているレシート買取アプリ「ONE」と提携して、保険証券の買取を実施しました。開始30分で目標の1,250枚の保険証券を買い取ることができました。この買い取りの背景には、一般消費者が現状加入している保険に関する情報を保険営業マンがなかなか入手できないという状況がありました。今後は同様の取り組みを定期的に実施するとともに、保険証券のOCR部分、特に自然言語処理の開発などに力を入れていく予定です。そのためには今後エンジニアも増員しますし、AIに特化した専門的チームも作りたいですね。
では、そんな御社で働くエンジニアにとって魅力となるのはどんなところでしょうか。
杉岡:Djangoはあまりほかのスタートアップ企業では扱っていないフレームワークですから、それに触れられるのは魅力の一つではないかと思います。 また、バックエンドもテストを必須にするなどこだわって開発をしています。エンジニアとして整った環境で開発ができること、そしてきれいなソースコードを読めるという点が、個人的には大きなメリットだと感じている部分です。
横塚:コーポレート・アイデンティティの側面から言うと、当社はミッションとバリューを定義しています。 ミッションは「保険業界をアップデートする」で、バリューは以下の3つです。
横塚:特に現在は人に任せるということを積極的に行っています。また、メンバー同士がお互いの成長のためにすべて言いたいことをまっすぐ言い合える環境も大切にしていますね。 というのも、スタートアップに入社するからにはどのメンバーも個人的な成長を望んでいるはずです。どうやって成長するのかといえば、やはり自らが意思決定をし、自らが責任を持ち、そして失敗・成功を繰り返すしかない。それはバリューにあるとおり、どんどん仕事をメンバーに託してまっすぐ走ってもらうということですし、そこから相乗効果を生み出してもらえればと思っています。