2017年の振り返り(AnyPayで働いてみて)
この1年は色々あったので、個人的な記録をかねて残しておこうと思った。paymo というアプリの開発事情寄りになってしまったが...。
1月
2016年10月にクルーズ株式会社に買収されたCandleでエンジニアとしてインターンをしていた。時間にゆとりができてきたので、新しいところでバイトでもしようかなと思っていた矢先に、河西さん にお会いして、いくつか面白そうなスタートアップを教えてもらった。Smooz というブラウザアプリを開発しているAstoolやAnyPayを教えてもらった。それらにコンタクトを試みて最初に返信のあったAnyPayでバイト(インターン?)をすることにした。この時、AnyPayは社員数が10以下だったと思う。
ちょうどpaymoというアプリのプレスリリースを配信した直後に、paymo iOSの開発に関わり始めた。はじめてのRxSwift、クリーンアーキテクチャで学ぶことが多かった。paymoはもともと、外部のチームが短期間で一気に作り上げたものだったので、はじめてコードを見た時はStoryboardに多くのViewControllerが入っていたり、Domain層のファイルが異常に多かったり、とキャッチアップが大変だった。
2月
AnyPayでは、当時、オフィス常駐のpaymoのiOS/Androidエンジニアがほぼおらず(週2.5日だけとか)、リモートの業務委託にほぼ依存していた。正社員エンジニアはサーバサイドの1人しかいなかった。ガンガン実装するというよりは、コードに触れてプロジェクトや、開発スタイルに慣れる、という時期だったと思う。中旬にフルタイムのAndroidエンジニアが業務委託でジョインした。
2月末には、1年と数ヶ月お世話になったCandleを抜けた。AWS上でPHPでキュレーションメディアを運用したり、動画アプリのiOS開発をしたりと、ほぼゼロからプログラミングを学びながらいろいろやらせてもらった。
また、1年弱ほどホステルで住込みバイトをしていたが、そこも2月一杯で退去した。外人ばかりだったので英語を話せるようになれた。英語を話せるようになりたい人はかなりオススメ。下手に留学するより安いし、日本にいながらにして、なので良い。
1年くらい休学してプログラミングや英語をずっと勉強していたが、それらをやめて一気にベテランのプロに囲まれた環境に変わった月だった。
3月
メルカリのBOLD Internshipでアメリカのメリーランド州に一週間だけ行った。
中旬には、AnyPayはオフィスが渋谷から六本木のミッドタウンに移動した。人も増えてきていて、paymoも話題になりはじめて会社のスピード感が凄まじかった。この立ち上げ期にフルコミットするのは楽しそうだし、中々ない機会なので正社員に興味があるという相談をCTOにした。この頃からだんだんとタスクの難易度が上がってきてハードになってきた。
この時期、会社の暗号通貨おじさんにビットコインを勧められて、1BTC買った。当時は12万円くらいだったと思う。すぐ売ってしまったのだが...。ビットコインやブロックチェーンに興味を持ってこの時期から勉強し始めた。
4月
大学院を退学してAnyPayの正社員となった。ずっとエンジニアとしてやっていきたいというわけではない、という意思を汲み取ってもらい、ビジネスマナーや電話応対の教育を受けた。初めの1ヶ月は自分のデスクに電話が置いてあって電話応対していた(エンジニアだったら嫌がる人いるかもしれないが、まあいい勉強にはなったかもしれない)。この時期からiOSの常駐の業務委託エンジニアが入って、paymoのiOS/Android開発はほとんど内製化できてきていた。
インターンから正社員になったのだが、会社側からの接し方に特に何も変化もなく、戸惑ったのを覚えている。結局聞かないと何も教えてもらえなかったので、FinTech周りの法律やお金についていろいろ本を読み漁った。
5月
このころからiOSだけではなく、AnyPay/paymoのバックエンドもやってみたいと言って、Railsプロジェクトにも触れ始めた(未だにRailsで書かれていて、マイクロサービス化が求められている...)。周りのレベルの高さと、自分との力の差とかに、いろいろ悩んだりもしたのもこの時期だった。
6月
はじめて中国に行った。訪れた地域は今年話題になっていた深セン。とても刺激的だった。
paymoの機能が大幅に変わると決まって、その開発につきっきりだった。ViewControllerに書かれていた大量のロジックをPresenterに寄せながら、トップページの書き換えをして月末は大変だった。
7月
深センや上海、杭州に行って、上海にある無人コンビニや、Alipayの本社アント・フィナンシャルにも訪問した。だいぶ慣れてきて、会社の人を深センに案内もした。
正社員でiOSエンジニアが2人入り、paymo iOSのドメイン層の書き方を見直したり、とクリーンアーキテクチャをしっかり学び直した。ところが、もともとpaymoを牽引していたPM兼デザイナー(それも唯一のデザイナー)の方が体調を崩して、少し休むことになり、開発体制にほころびが出始めた。偶然、その時期に新しいPMが入社してなんとか開発が回った、という状態だった。
8月
2017年の前半まではpaymoの開発は、かなり属人化していたのが、この頃に次第に分散していったと思う。会社の1つの転換点がこの時期だったように感じる。スタートアップだと、1人のカバー範囲が広くその人が休むと困る、というケースが多いと思うが、開発だけでなく全体としてバックアップ体制ができてきた。
9月
夏休みを使ってサンフランシスコに遊びに行った。AppleやGoogleにも行った。
paymoをやりつつ、他の事業にも関わるようになり、はじめてER図を書いた。ほぼ1人でRailsの実装をすることになった。
10月
9月にRailsで実装していた方も落ち着いてきて、ビジネス的な要件・仕様を相談しつつ改善していた。また、ReactNativeで実装されているプロジェクトに徐々に関わり始めた。
paymoは段々と開発体制が崩れてきて、スケージュールを把握している人がいない、APIとクライアントで噛み合わない、とか様々な問題がでてきた。そもそもこのスプリントで何をやるのか、という話もブレが生じやすくなった。それは、開発が完全に内製化されて、アプリエンジニア側の意見が強くなったことが原因かと思う。今まではPMが1人で決めていたので軋轢がなかったのが、次第にエンジニアがこうしたい、こうした方がつかいやすそう、という意見が活発になった。意見が活発なのは良いことだが、その収拾がつかなくなってしまっていた。
Ethereumが面白いと思いはじめて、Dappをいろいろ触ってみたり、solidityでちょっとしたスマートコントラクトも書いてみたりもした。
11月
自分が書いたコードにバグが見つかったりして対応に追われていた時期だった。とにかくお金を直に扱うプロジェクトはひたすら精神がすり減ると痛感した(Coincheckとかロールバックもあったし死ぬほど大変そう...)。そのために、アラートやログを追う仕組み作りやテストのカバレッジをしっかりしないといけないと学んだ。「おれも自分のバグで2億の損失をだしたことあるから大丈夫」とCTOに言われたのはほっとした(後日その2億は返ってきたらしい)。
12月
paymoはデザイナーがまるで足りておらず、エンジニアがやりたい機能改善をうまく形にできないというもどかしさから、チームがギスギスしているように見える時もあったが、@tsubotax さんが関わってくれてデザインスタックが解消してきた。バックログの運用も12月になってやっとしっかり行われるようになった。一年を通して、リファクタをしながら開発をしてきたつもりだったが、さすがにこのままではもう手がつけられない、という箇所もでてき始めて、大規模開発の難しさを痛感した。
全体を通して
2016年はフラフラと勉強をしていたが、2017年は急にベテランの人たちに囲まれて仕事をすることになった。それでも、色々とわがままを言って、かなり幅広くやらせてもらったと思う。開発しているだけというよりは、こうしたい、これはやめたい、とか自分の主張を聞いてもらえてよかった。
はじめてAnyPayに行った時は、みんな19時くらいには帰っていくし週末はSlackの返事もないので、あまり働かない印象を抱いたが、会社はしっかり回っているし、短距離走ではなくマラソンをしているのがわかった。技術的なこと以外に学べることが多い。遅刻が多いのはどうしても気になってしまうが...。
来年は決済業界自体がもっと進むと思うのでもっと楽しくなると思っている。