Satoryu's Diary

Rubyが好きな貧乏プログラマーの日記。日々の生活、開発に関するメモとか考えとか。


2017年09月03日 [長年日記]

_ Retty Tech Night 2017 に行ってきた。 #Retty_tech_cafe

ユーザー同士で美味しいお店を紹介しあうグルメサービスRettyさんがオフィスを麻布十番に移転したてのほやほやに開催されたRetty Tech Night 2017 に行ってきました。

会場はこんな感じでとてもキレイでした。Wifiや電源もたくさんあるので、普段はオフィスよりもこちらのカフェスペースで仕事する人も多いんだとか。また、PythonやAndroidのもくもく会の会場としても使われているそうです。確かにここは広々としたスペースで集中しやすそう。

iPhoneのカメラの調子が悪く、ここから写真は撮れなかったので、各発表のスライドと一緒に振り返ってみる。

KotlinとReduxをAndroidアプリに導入したら

@muumuumuumuu さんによる、今絶賛取り組んでいるというRetty のAndroidアプリのKotlin化とRedux導入で見つけた知見の話でした。
発表中に行われた会場アンケートでは、業務でKotlinを使っている方は10名程度、更にReduxを組み合わせているとなるとなんとゼロ!ということで、かなり先進的な取り組みなのかもしれない:: fn 'Androidのことは専門外なのでよくわかっていない' }}。
Reduxは、React.js をさらに被せたフレームワークのようなもので、状態、アクティビティ、ビューを定義し、共通のステートを持つことで、操作に対する一貫した状態の変更を実現するもののようだ。Redux自体はJavaScriptのライブラリであるが、それをKotlinでそれっぽい実装が出来るようにしてくれるのがRedux-ktで、Rettyさん初OSS tada として公開されている。
まだ、KotolinやReduxを使ったアプリをプロダクションとしてリリースできていないが、その中で出てきた色々な問題(例えばStateはどういう単位にするのか)などが出てきており、設計方針やプラクティスはAndroidのコミュニティでもまだまだこれからのように見えた。きっと、そこら辺がPull-Requestを送るチャンスではあると思うので、OSS化したのはとても良い取り組みだと思う。

バックエンドが異なるサービスの差分を
APIで吸収してみた話

既視感ある登壇者*1による、多国展開した際に各国のアプリケーションとAPIとの間のやりとりを整備した話でした。
現在Rettyさんは日本以外に台湾、シンガポールへ展開しており、各国ごとにモバイルアプリケーションとそのバックエンドのAPIを作っていました。アプリケーションを複数持つのではなく、アプリ自体は1つとして、ユーザーの利用している国を識別し、バックエンドを切り替える方法もありますが、アプリ側に似たような分岐が沢山出て来るのも辛そうなところ。そこで、アプリと通信するAPIサーバーのエンドポイントを統一し、APIが柔軟にユーザーの国に合わせてレスポンスを返す仕組みにしたそうです。
その実装自体は、パブリッククラウドで提供されているサービスを使うのではなく*2、自前でNginx Moduleを作成し、リクエストを振り分けるようにしている。発表後のッ質問でも出ていたのだけれど、今後のさらなる多国展開、もしくは特定の地域からのアクセス負荷で、このNginxがボトルネックになりそう。回答にもあったように、今のところは yen でNginxを増強して解決するようだ。

Retty のインフラを支える技術

まず登壇者の鈴木さんが、「農家兼書道家兼SRE」というポジションに圧倒されるところから始まった。今は主に仙台でリモートで勤務されており、こういうイベントなど定期的にオフィスに来ているそうです。GoogleがSREを表に出してから、色々な会社でSREというポジションが出来てきている中、RettyさんでのSREは「全体のアーキテクチャの設計、構築、運用」がメインなようだ。サーバーサイドアプリケーションはDockerで運用されるようになっており、開発者は彼ら自身でDockerfileを書き、ElasticBeansへデプロイすることができているので、運用やSREから独立して仕事ができているようだ。SREはそれら以外の、例えば先の発表にあったようなNginxやDB(RDS)の監視や運用などを担当している。最後に鈴木さんが言っていたように、RettyさんでのSREは裁量を持っていて自由に動けているというのは良い。

Rettyの機械学習のこれまでまとめ

スライドがまだ公開されていないようだったので、文章だけ。

Rettyの機械学習基盤といえば、秋葉原で購入したパーツで自作ということで有名。詳しい内容は、QiitaやSoftware Design にも記事があるので読んでみるととてもおもしろい。

という機械学習基盤がどのようにして出来てきたのかという経緯の話がメインでした。元々、TensorFlowで出ていたチュートリアルを試して、それがRettyにも活用できそう、という閃きで実際にプロトタイプを作ってみたら上手くいったので、そのまま導入まで話が進んだというのは、スピード感がある。
事例で出てきたのは、ユーザーがアップロードした画像の分類。以前はその作業の殆どが人の手によるものだったのを機械学習で置き換えていった。しかし、機械学習で作成された分類器も万能ではなく、料理は高い精度だけれど、店舗の外観・内装についての精度は低かったそうだ。そこで、料理と判別できたら機械学習の結果をそのまま用い、そうでなかった場合は従来通りに人力で分類することで、人の作業量自体を減らすことに成功している。使えるところで使う、というところで少しずつ導入していくのは、機械学習に限らず、ツールなどの導入で重要なところ。
また、それを色々な分類器を定義できるようにツール化しており、その入力がCSVというのも個人的には良い設計だと思った。なるべく多くの人が扱いやすいインターフェースを採用することで、結果的に、エンジニアの負担を少なくビジネスは早くすることができると思う。スタートアップらしい感じだった。

懇親会

Rettyさんのオフィスのある麻布十番近辺で有名のお店「天のや」さんのたまごサンドが最高でした。

なんか色々聞いたことをメモっとく。

  • 現在麻布十番のオフィスには100名くらい。うち40名がエンジニア。
  • 基本はオフィスでの勤務。家庭の事情などを考慮してリモートは可能。
  • オフィスも見せてもらったけど、6つくらいのデスクで島が作られて、それらが並んでた。それらの間を遮るものが少なくて、とても広い。
  • うわさの機械学習基盤も見せてもらえた。基盤むき出しのままで稼働してるものもあって、自作感がすごい。
    • 総工費は100万もしなかったらしい。
    • 電源もオフィスにある通常のものを利用。月の電気代は不明。
  • Rettyのユーザーとの交流会を

創業から6年が経ち、ユーザー数も増えて、社員数が増えつつも、拠点を1ヶ所にし、社員同士やユーザーとの繋がりを大事にしている雰囲気があり、スタートアップらしさが残ってて良い雰囲気の会でした!Rettyさん、ありがとうございました!

天のやのたまごサンドによる多幸感の余韻が…

参考

*1 元弊社社員。たまたまデスクが近かった頃があるから既視感ある。

*2 そもそもあるのかな?


最近の投稿

翻訳しました(ちょっとだけ)

follow us in feedly