世界を目指せる開発環境を整えたい。小5からプログラミングを始めたProgate小口が語るエンジニアが幸せな組織とは。postings世界を目指せる開発環境を整えたい。小5からプログラミングを始めたProgate小口が語るエンジニアが幸せな組織とは。小学5年生でプログラミングに興味を持つ最初にプログラミングに興味を持ったのは小学5年生のころです。当時ジョークソフトという、いたずらのためのソフトがありました。スクリーンセーバーをゴキブリに変えちゃう、みたいな。いう意表をつくようなソフトを作ってみたいと思ってプログラミングに興味を持ち始めました。後にGmailが招待制のベータ版を始めるんですが、あれも画期的だった覚えがあります。それまでは毎回ページを遷移する必要があって、ボタンを押すと画面が真っ白になって「読み込み中」みたいになるんですが、Gmailだと画面遷移せずに画面が動くんですよ。当時あの仕組みってとても不思議で、ああいうものを作ってみたいなと思っていました。遊び感覚でHP制作を始めるただ、やってみると非常に難しく挫折して、一方でHP制作の方が簡単そうだとわかってきました。家にHP制作の本があったので、それを見ながら作り始めたというのがプログラミングとの本格的な関わりの始まりですね。HTML/CSSで作って、JavaScriptを使って動きをつけてみたり。それを掲示板みたいにしようとするとサーバーサイドの言語が必要なので、サーバー側のPerlやPHPを勉強して、というふうに必要に応じて言語を勉強してHP制作をしていました。「こういうものを作りたい」という頭の中のイメージが、コードを書くことによってすぐに画面上に反映されるのが非常に面白かったです。遊び感覚でずっとやっていましたね。やりたいことを調べるためにいろんな人の個人ブログを参考にしていました。今でこそQiitaみたいなサービスがありますが、当時は企業の技術ブログもあまりなく個人がそれぞれ自分のつまずいたことやその克服の仕方を書き留めていたんです。いう人をよく調べると、僕みたいに遊びでプログラミングをしているわけじゃなく、「エンジニア」という職種でお金をもらってコードを書いているということがわかりました。プログラミングは遊び感覚でしかなかった僕にとって「それがお金になる」というのは驚きでした。プロのエンジニアとして必要なスキルを学ぶ大学に入ってすぐ受託会社でエンジニアのアルバイトを始めたんですが、趣味でコードを書くのとエンジニアとしてお金をもらってするのはだいぶ違うと実感しました。「仕様を細かくばらす」という作業が大事だと学びました。仕様をばらすことによって抜け漏れがないかはっきりわかるというのと、バラバラになった仕様ごとの品質を高めることにフォーカスできるんです。「パスワードをリセットする」という仕様だけで考えると「登録アドレスを入力→アドレスにリセットメール送信→リセット完了」くらいのフローしか思い浮かびません。そこをもっと細かくばらすと「アドレスが登録されてなかった場合は?」「登録アドレスに送信してもエラーになったら?」みたいに細かいところまで作り込むことができるんです。プロのエンジニアはそういうプロセスができるし、そこが必要だと感じました。チームで開発する経験を積むベンチャー企業に常駐するフリーランスとして1年半くらい働いたこともあります。それまでは個人で開発することが多かったですし、受託会社でのバイトでも、仕様ごとにバラされたものを実装するだけだったので、チームでの開発経験がありませんでした。「3ヶ月後の自分は別人だと思ってコードにコメントを残す」なんてよく言いますけど、それを自分は全くできていなかったんです。自分1人でやっているとどうしてもやっつけでやってしまうこともあるので、どうやったら規模の大きいものをメンテナンスできるようになるのか、というのに大きな興味がありました。1年半くらいは企業に常駐してSEOの導線周りの実装などを担当するエンジニアとして働いて、チームで動けるようなアウトプットを出す力をつけました。個人で受託開発をして感じた、コミュニケーションの重要性あとはいろんな方面の方からの紹介でお話をいただいて、iPhoneアプリを作ったりチャットボットを作ったりする個人受託の時期もありました。仕様ごとにばらされたものを実装したり、コンセプトだけ聞いて類似品を参考に作ってみるとか、さまざまな粒度の仕事を経験しましたね。その時期には、できるだけ齟齬が無いよう気をつけなければと学びました。依頼内容を仕様に落とし込むには、依頼者が描いているイメージをきちんと一緒に詰めていかないと、実装後にやり直しになってしまうということもありますからね。個人でちゃんとエンジニアとして働くならそのあたりのディレクションもできないといけないだろうなと感じました。伸びている理由を知りたくてジョインProgateに入社したきっかけは、プロダクトのサーバー側が安定していなくて、このままだと安心してユーザー数を増やしにいけないので手伝って欲しいと頼まれたことですね。それまではちょくちょくオフィスに遊びに行った時に聞かれて答えたりしていた程度だったのですが、これはアドバイスするだけじゃなくて実際に手を動かさないと解決できなさそうだと思って入社しました。技術的に僕が貢献できるところがありそうだったし、その貢献をどこよりも高く評価してくれたのが入社の決め手でした。一つ理由があるとすれば「Progateが伸びている理由を知りたかった」というものです。Progateのことを最初聞いた時は、あまり伸びないだろうなと思っていました(笑)。ターゲットのユーザーがはっきりしてないように見えたんです。超初心者向けだとすればQiitaとかの記事で十分だし、ちょっとやったことがある人に対しては内容が浅すぎると。どこを狙っているのかあまりわかりませんでした。その予想とは反対にすごい勢いで伸びていたので、その理由を知りたくて入った、というのもあります。実際入社して、コンテンツのわかりやすさがカギだと感じました。従来の記事や本などの文字ベースでは理解しづらいことも、Progateだとスライドで解説してくれるのでわかりやすいです。記事や本を読むだけだと理解できず挫折してしまっていたユーザーをがっちり抑えられたのが大きいと思っています。自分がボトルネックを解消してサービスの伸びに貢献できた僕がやりがいを感じるのは、自分が書いたコードでサービスの成長に貢献できた時ですね。自分がやってたことに意味があったとわかった時がとても嬉しいです。去年まではユーザーが集中してアクセスすると接続できなくなるみたいなことがよくありました。学校で3クラス同時に授業したら詰まってしまうことも。その課題の原因を突き止めて改善したのが今年の1月で、それ以降ユーザー数や法人契約数が増えました。自分がやった施策によってボトルネックが解消されたというのが実感できてやりがいを感じました。今後の展望Progateをこれから世界でさらに伸ばしていくには、もっとエンジニアが必要です。大規模なコードをメンテナンスしたことがある人にぜひきてほしいです。あとは、ネットワークアプリケーションの動作がわかる人、アプリケーション側からみたLinuxの動作がわかる人というところでしょうか。エンジニアがスムーズに開発に参入できる開発環境の地ならしをしたいただ、Progateの現状のシステムは大きくなりすぎて、「ある場所を触ると別の場所まで影響が出てしまう」みたいなことを常に気にしないといけません。なると、せっかくエンジニアを増やしても技術的な参入コストが高く、開発サイクルが素早く回りません。社内の異動コストも大きい。レッスンの内容を修正しようとすると、文面や表示だけでなく、裏側のシステムの動きまで意識しないといけない箇所があって、かなり大変です。現在Progateは社員20名ほどの小さな組織ですが、先日ユーザー数50万人を突破し、今も毎日増え続けています。Progateが今後さらにユーザー数1000万、2000万とスケールし、世界一のサービスとなるためには、大勢のエンジニアが協働して開発できるようにする必要があります。「こういう機能を開発しよう」という話が上がった時に、前提知識などがなくてもすぐに開発に取り組めるような開発環境ですね。した開発環境を実現できれば、もっとエンジニアにとって幸せな組織になると思います。そのために、今はサービスの分割であったり、コードのリファクタリングといった形で、そうした基盤づくりを進めています。Science系の本をもっと読んだり、普段触らない言語を触ってみたりして技術力をもっとつけていきたいです。エンジニアとして、自分の技術力で、できなかったものができるようになった時が一番成長を感じる時ですし。Manager精密機器メーカーで広報、コーポレートブランディング、医療機器のマーケティングを経験した後、2015年に二人の幼い子供を連れてイギリスに留学、夫婦で学生生活を送る。