できる人に聞くことが大切!ユーザー数100万人のサービスを運営する起業家が語ったプログラミング習得のポイントとは【イベントレポート】
2015年5月に開催した「テックアカデミーキャンプ」の初日に行った対談のレポート記事。株式会社Lang-8の代表取締役である喜洋洋氏をお迎えしてプログラミング習得のポイントをお話しいただきました。一番のポイントは人に聞くことだそうです。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
TechAcademyでは、2015年5月に「テックアカデミーキャンプ」として1ヶ月間でプログラミングを習得するコースを開催しました。
このコースの初日に行った特別対談の様子をまとめたレポート記事です。
この対談では、株式会社Lang-8の代表取締役である喜洋洋氏をゲストとしてお迎えし、TechAcademyを運営するキラメックス株式会社の村田がモデレーターをつとめました。
ゲスト
株式会社Lang-8 代表取締役 喜洋洋氏
中国生まれ。4歳から日本で育つ。京都大学卒。大学在学中に1年間休学して上海に留学をし、そこでlanguage exchangeを行う。 帰国後、お互いに母語を教えあう語学学習サービスLang-8の制作を始め、大学卒業と共に起業。現在200国以上にユーザーを誇る。2年間半にわたり、企画、海外マーケティング、ディレクション、営業をこなし、 その後2年間かけて独学でプログラミングを学び、現在はサーバー管理、開発も行う。
モデレーター
キラメックス株式会社 代表取締役社長 村田雅行
1983年生、京都府京都市出身。 2006年4月、楽天株式会社に入社。開発本部にてポータル事業のシステム構築・運用を担当。その後システムの調達、交渉、契約などシステムインテグレーションに従事。2008年4月、楽天株式会社を退社。 2009年2月、キラメックス株式会社を設立し、代表取締役社長に就任。
喜洋洋氏のプログラミングと起業
まずは対談の前に、喜氏のからプログラミングの勉強を始めた経緯をお話しいただきました。本記事では、喜氏が話した言葉をそのまま記事にしています。
起業した当初から運営してした、Lang-8(ランゲート)では、開発を担当していた共同創業者が半年ほどで会社を去ってしまいました。当時でもユーザー数は10万人を越えるほどいて、課金ユーザーもいたのにも関わらず急に1人だけになってしまったわけです。
そこから、自分がプログラミングを理解していれば 、プログラマーと円滑なコミュニケーションが取れるのではないかと考え、プログラミングの勉強を始めてみました。 あとは、自分がプログラミングをできれば、生きていけるだけの利益を出してサイトを運営していくことは可能という結論に至りましたね。
最初は、サーバーが落ちることが本当に怖かったので、 サーバーへのログイン方法やバックアップの取り方などから学び始めました。 全て学ぶ必要があたので、複数の本で多角的に勉強しました。
他にやったこととしては、知人の会社で無償インターンをしたことがあります。インターンとして働くことで、複数人での開発方法などが学べました。また、本を読んでいるだけではわからないこともありましたが、 WordPressなど、オープンソースの自分の興味のあるコードを読むコードリーディングの理解につながりましたね。
その後人も増えて、現在運営しているHiNativeとLang-8は、僕とデザイナー、エンジニアの3人で運営しています。今はプログラミングの仕組みが理解できているので、エンジニアと円滑なコミュニケーションが取れるようになっています。
これからプログラミングを勉強するみなさんへのおすすめは、達成目標を決めて勉強することです。Webサービスを作るために勉強しないといけないことは沢山ありますが、目標を決めるとやることが明確になります。
例えば僕の場合は、サーバーをなんとか管理できるようになった頃に、バグを起こしても動いてるコードを読んで修正できることを目標にしました。ゼロから作るほど難しくなかったので、当時の自分には良い訓練になりました。これを繰り返していくうちに、簡単な機能追加も徐々にできるようになりましたね。
あとは、初心者向けの実用書もあるので気軽に勉強は始められると思いますが、 入門と謳っていても、実際に読んでみるとそうではないものがたくさんあります。 なので、環境があれば身近な人に聞くという手段もあるので、つまずいても諦めないでください。
会場からの質問を受け付けて対談
ここからは、モデレーターの村田が会場から質問を募集する形で対談しています。
一番は人に聞くこと
(村田)ちょうど、僕の地元の京都にLang-8のオフィスがあったので遊びに行ったことを覚えています。当時はほんとうにサーバーに囲まれてましたね(笑)
(喜)サーバーが落ちるのが怖くて、3時間以上寝れない日が続いてました。
(村田)サーバーの勉強はとっつきづらい分野だと思うんですが、わからない時はどうしていたのでしょうか?
(喜)最初は「いざとなったら頼る人リスト」みたいのを作ってましたね。勉強するので毎回聞くのは申し訳ないんですけど、本当にサーバーが止まってどうしようもなくなったら、教えてもらってました。
あとは、やっぱりググったりとか本を読んだりとかですね。
(村田)なるほど。
(喜)一番は人に聞くことで、その時いた優秀なエンジニアのアルバイトに、時給よりもかなり高いお金を払って1ヶ月くらい家庭教師してもらったこともあります。
プログラミングって最初は概念の理解が難しくて、それを独学でやると余計な時間がかかると今になって思うので、概念やよく使うツール、ちょっとした書き方はできる人から学ぶのが一番効率がいいですね。
(村田)どんな形の家庭教師だったんですか?
(喜)週1〜2回でRailsを学んで、わからないコードがあれば一行ずつ細かく教えてもらってました。
(村田)それで理解できるようになったんですね。プログラミングという武器を得て何か変わったことはありますか?
(喜)まずは、採用時にちゃんと判断できるようになりましたね。あとは、エンジニアの方に仕事をお願いするときも、以前はビジネスの優先順位しかわからなくて、技術的な難易度はわかりませんでした。今は、ビジネスにおける優先順位と技術的な難易度を比較できるよになりました。
(村田)なるほど。エンジニアと関わるときも役立つということですね。サービスに目を向けると、もともと運営したいたのはWebサービスで、それとは別にスマホアプリのサービスを始めていると思います。アプリになったことで学ぶものの変化はありましたか?
(喜)最初はRailsから入って、今はスマホアプリのこともわかるようになりました。
やっぱり、一番難しいのがプログラミング概念の理解で、それが一つ言語やフレームワークで理解していれば、あとは差分だけ理解すればいいのでだいぶやりやすいです。
プログラミングは概念の理解が難しい
(村田)ここからは会場からの質問について聞いていきたいと思います。僕も答えていきます。
ーープログラミングを始めたきっかけはなんですか?
(村田)喜さんは先ほどお話されていたので、僕から回答しますね。
僕も喜さんと同じように、手段としてプログラミングをやっているタイプです。プログラムを書きたいためにエンジニアをしているというわけではないです。
だから、サービスを作ってリースするための手段としてプログラミングの勉強を始めました。 学生時代は、HTMLとCSSを使って簡単なホームページを作りました。それに付随して、ユーザーのためになる情報を掲載誌て、SEOを勉強して、アクセス数を増やして広告で稼ぐみたいなことをやっていました。
さらに、もっと価値のあるサービスを作りたいと思いましたが、その時の技量では足りないのでプログラミング能力が必要だと思ったのがきっかけです。
起業した当初は一人で会社を始めたので、自分でやるしかないと思っていました。その点は喜さんと似てますね。
ーープログラム習得する上でつまずいたことはありますか?
(喜)まずプログラミングの概念を理解することに苦労しましたね。例えば、メソッドを実行するための入力とかです。
基礎中の基礎だったために、どの本にも載っておらず、基礎を理解するための本を見つけるのが大変でした。
(村田)そもそも、知りたいことが載っている本を見つけるのに苦労した、と。
(喜) はい。そういう基礎って、教えてくれる人がいたら1分で解決するのに、まわりにそういった人がいなかったので概念を理解するにも時間がかかりましたね。 基礎中の基礎を知る、という初歩的なところでつまずいていました。
(村田) 僕も、喜さんが仰っていたように概念の理解が難しかったです。
ただ、僕の場合は当時楽天の開発部門にいたので会社の同期をカフェなどに呼び出して、聞きたいことを全部聞くみたいなことをやってましたね。
概念理解って、どこをどう調べたらいいか、ということ自体が分からないんですよ。概念なので言葉にしにくいですし。人と対面してると、感覚的に伝えられることもあるんですけどね。
最初はそういった概念理解につまずいていました。
ーーソースコードが見やすいとか見にくいとかあると思うのですが、どうやって判断しましたか?
(村田) 自分で書き出してみると、汚いとか見にくいとかってわかるじゃないですか。
その時に、どういった書き方がベストか聞いてました。あとは最近だとGithubとかで見れるので、いいサービスや有名なサービスのコードを見て学んでいます。
(喜) 最短なのは、自分の書いたものをコードレビューしてもらうことだと思います。
それができない環境の場合は、オンラインに落ちているオープンソースを見ます。あとは自分で書き続けているうちに、同じこと繰り返してるとか見にくいなとか感じるので、似たようなコードを参考にして書き方を学びますね。
プログラミングがわかるとミニマムスタートできる
ーープログラミングを学んでおいてよかったと思うことはありますか?
(村田) 喜さんは先ほど仰っていた通りなので、僕の場合についてお話させていただきます。
プログラミングを学んでおいて良かったと今になって思うのは、なにかサービスを作りたい、事業にしたい、という時にミニマムスタートが出来ることです。
人を雇うとお金もリスクも発生しますが、一人で完結できると、まずやってみようと思えます。成功するかしないかわからないので、とりあえず「やってみる」ことがとても重要なんですよね。自分でプログラミングができると、形にするまでの敷居が下がるので、トライしやいです。
それに、エンジニアや開発に携わる人の気持ちがわかるので、話がしやすくなります。 エンジニアが言われたら嫌なことがわかるので、円滑なコミュニケーションにつながることも、プログラミングを学ぶ利点だと思います。
ーー話はそれますが、村田さんに質問なのですが、プログラミング以外にデザインも独学ですか?
(村田) どちらかというと、デザインから始めました。
高校生のときに、バンドのフライヤーを作るためにIllustratorなどを勉強していました。 ただ、ホームページも作りたかったので、HTML/CSSも同時に勉強していました。
最近では、Webデザインは簡易化されてBootstrapなどもあるので、プログラミングさえ勉強すればある程度のクオリティーは担保されると思います。
ーーエンジニアとコミュニケーションを取る時にどんなことに気をつけていますか?
(喜) テキストでやり取りすることが多いので、エンジニアに限らず口調に気をつけてますね。
テキストだけだと話し手のトーンが伝わらないので、相手に攻撃的な印象を与えてしまう可能性があります。なので、出来るだけ顔文字を使ったりしています。
あと、進捗確認の時、追加機能やバグ修正について聞きがちですが、将来的な事を考えて勉強に時間を割いたので進捗なし、という場合は許容しています。コードを見やすくするためのリファクタリングなど、目に見えないことも評価しています。
また、効率を落とさないため、新しい技術の習得に時間を割いるのであれば、 手が動いてなくても、進捗がゼロでも特に咎めません。
(村田) 認めてあげるんですね。
僕の場合だと、エンジニアと共に開発していく上で、出来ないこと・難しいことに直面したときは、一緒に考えるスタンスをとるようにしています。
ーー 起業するためのプログラミングスキルはどのくらい必要だと思いますか?
(喜) そうですね、ケース・バイ・ケース、ですね。
要は難易度が変わる話だと考えています。 営業が重要な事業内容なら、社長に営業力があってお金が回っていれば、技術面は人を雇って賄えますよね。なので、プログラミングスキルが無くとも問題ありません。
ただ、先ほど村田さんが言っていた、スモールスタートが可能というのは重要だと思います。
プログラミングができると、自分でぱっと作って、試行錯誤し、サービスの良さをプログラマに伝えて、どんどん改良していくことも可能です。
起業したら、一番情熱を持っているのは、基本的に社長である自分です。空いた時間に自分が何かできると、情熱が会社の前進に直結する。しかも、そこでエンジニア一人分の仕事が出来れば、人件費を浮かせる事ができ、より潰れにくい会社にすることができる、ということもあります。
なにか作れたらベストですが、プログラミングを理解して、エンジニアと円滑なコミュニケーションを取れる状態にしておくだけでもいいと思います。
(村田) 僕も同意見です。
プログラミングは、自分の考えてるアイデアや考えてることを形にするツールだと思っています。なので、その考えているもの次第で、必要な力量も変わってくると思います。
例えば、Webに商品を載せるのであれば、HTML/CSSとデザインのみで綺麗に見せることはできます。 ただ、アイデアを形にできるというツールを武器にすると、起業以外のこともできていいのかなとは思います。
(喜) 補足すると、外注では、ボタンを少しずらすだけでも見積もりが大変ですし、社内にエンジニアがいたとしても、細かい変更をいちいち頼まなければなりません。自分でパッと出来てしまうと、人に説明する必要がなく、手間も時間も省けます。
特にスタートアップの場合は、早く試して早く結果を見ることが重要なので、ちょっとした変更に手間取ると、成功率が下がってしまいますしね。
プログラマーの需要はまだまだある
ーー 今後プログラマーとして食べていけると思いますか?
(喜) やろうと思えば全然いけます。
(村田) 食べていけるかいけないかと言われれば、食べていけますね。
プログラマーは世界的に不足しています。職があるのに働き手がいないので、アメリカでは2020年までに100万人不足すると言われているほどで。
その点、プログラマーに限らず、IT技術者は今後求人が増えていくと思うので、食べていけるでしょう。
僕の意見としては、今後のプログラマーの需要は無くならないと思います。ただ、プログラムやソースコードを全部書くのではなく、単純化されたものを組み合わせるようになるのでは、と予想しています。それでもクリエイティブなことをする人の需要は増え続けるのではないかと思いますね。
(喜) 需要に関しては逸話があって、中国は物価が日本よりまだまだ安く、大学新卒の給料が2万〜6万なんですね。 でも、以前中国人フリーランスの方に、リモートでプログラミングの仕事を依頼していたところ、時給は4000円だと言われました。
当時は日本人のエンジニアにもそこまでは出せてなかったので、うわ高え!と。(笑)
理由を聞いたら、もっと割のいい仕事をもらっているから、とのことでした。 日本も中国もアメリカもエンジニア不足、かつプログラミング言語は世界共通なので、プログラマは国や言語をを問わず仕事ができることを思い知りました。
今は時給を上げていますが、起業した最初の頃に900円でアルバイトしていた人は、現在はアメリカから仕事をリモートで受けていて、時給7000円くらいもらっているそうです。なので、ニーズは本当に無くならないと思います。
ーー どのプログラミング言語の需要が高いと思いますか?
(喜) Webサービスだったら、Ruby on Railsの求人が激しいかなと思います。僕のまわりのスタートアップ企業などでもよく聞きます。
(村田) あとは大きな企業だと、PHPやJavaも人気がありますね。他にiPhoneアプリやAndroidアプリの開発も需要があると思います。
ーー 今名前が出てこなかったのは、逆に需要がない言語ということでしょうか?
(村田) 僕らが知り得ない言語市場があるでしょうし、まだまだ出続けて無くならないので、需要がないということではないですね。
今話したのは、Webやスタートアップ系の、オンラインサービスを作ったり個人で仕事をしたりするときの言語のことです。
一方で、みずほ銀行のシステムエンジニアは、2020年には2万人不足するとニュースで流れていました。要は、基幹系のシステムを刷新するときにエンジニアがいないというような状況ですので、そのような視点もあったほうがいいと思います。
ーー 僕もWebサービスを作りたいと思っているのですが、PHPとRubyのどちらがいいか分かりません。作るものによって違う、と仰っていましたが、色んなプログラマーに聞いているものの、2者の違いや良さ、これからの展望がいまいち分かりません。
(喜) 独断と偏見で言うと、今から勉強するならRubyがいいと思います。
Ruby on Railsというフレームワークが洗練されていて、Webサービスの開発に適していますし、Railsの求人の方が多く、盛り上がっている気がします。
(村田) PHPのメリットもありますけどね。
PHPは割りと規約がゆるいので、ある程度書いたら動くので取っ付き易い。これはいい面悪い面あるのですが。僕はもともとPHPから勉強を始めました。
一方のRubyの場合はRuby on Railsというフレームワークが既にあるので、フレームに乗ればすぐにできるので楽ではあります。ただ、フレームワークを使うには、そもそもどうしたらプログラムを作れるか、を理解していないと難しいこともあります。
今は、僕が始めた2008年頃に比べたらどちらのドキュメントも増えているので、PHP・Rubyのどちらでもいいと思います。
(喜) 補足すると、僕はPHP触ったことないのでRuby推しです。
(村田) ちなみに、PHPのフレームワークでCakePHPというのがありますが、これはRailsを真似て作られたもので、構成がRailsと近いです。
ーーグローバルに見て、日本のプログラマーの給料は安いと思いますか?
(喜) Web業界も営業中心だけど技術志向の高い会社だと、エンジニアの重要性もわかっているので給料も上がっています。日本でも外資系は特に高額ですし。
ただ、アメリカのエンジニアが高給なのは、他にも理由があります。 西海岸だと、ワンルーム20〜30万円かかることもあって生活コストが高いので給料もそれにともなって高額になる傾向があります。
(村田) 物価が倍だと、給料も倍、ということですかね?
(喜) 単純な比較は出来ないですけどね。
あと、優秀な人は特に高給ですね。普通の人の二倍以上の仕事をしてくれるので、並の人の倍払っても雇う価値があるので。
弊社も、エンジニアの給料は固定観念に縛られず、積極的に上げていっています。今後は日本でもエンジニア採用の競争激化が予想されるので、給料も順次上がっていくのではないかと思います。
(村田) 補足として、一概には言えないものの、アメリカでエンジニアが高給なのは、雇用体系の違いが挙げられます。能力が低ければすぐクビになりますし、保険がないので自分でやりくりしなければいけません。
ーー プログラマーとしての副業で生活は出来ますか?
(喜) 副業は余裕でできると思います。むしろ、現代ほど美味しい時代はないですね。
先に触れた弊社の元アルバイトも、ある程度経験を積んで、アメリカから時給7000円で受注していますし。
自社でも、フリーランスのエンジニアに外注する場合はある程度優秀だと結構な額払ってるので余裕だと思います。
(村田) 僕も学生時代からプログラミングをやっていましたが、副業ではないものの、片手間のバイト感覚である程度は稼いでいました。
15年程前からは、プログラミングが出来なくても、Webで何か形に出来ればお金が稼げる時代になったと感じています。最近では、クラウドソーシング、つまりオンラインでできる仕事が増えているので、活用のしがいがあるとも思いますね。
対学習量では、英語などの語学よりプログラミングの方が換金性が高い思います。なので、習い事としては一番いいのではないでしょうか。
ーープログラマーとして副業で稼ぐに当たり、レベルによって給料が変わってくると仰っていました。具体的にはどういったところで判断しているのでしょうか。経験値などでしょうか?
(喜) 何点かあります。弊社では、経験があったり、ある程度できるようなら、一旦時給を固定し、一度仕事をしてみてもらいます。1、2個機能を追加してもらって、その作業スピードと質を見て判断します。
あとはプログラマ自身の交渉力にもかかっていて、実力以上に見せることも可能です。 また、ブログ等で本人の知名度が高められていると、給料が上がりやすいかもしれません。ブログで有益な情報を発信していたりとか。難しい内容じゃなくても、この人の名前良く見るな、という感覚を相手に持たせることが大事ですね。
なので、必要なスキルは、経験・交渉力・知名度のどれか一つがあればいいと思います。
ーー村田さんは会社設立直後、受託開発で稼いでいたそうですが、月にどれくらいの仕事を受けていましたか?
(村田) 僕の当時の働き方は、半月は自社のサービス開発に時間を割き、残り半月は自分の食べる分だけを稼ぐ仕事をする、という動きをしていました。受託はやり過ぎると忙しくなってしまうので、仕事量は月に1つほどでした。特に受注数を決めていたわけではありません。
ーーわからないことが多いので初歩的な質問なのですが、一人でサービスを立ち上げる場合、 どこまでの知識が必要なのでしょうか?プログラミングはもちろんだと思うのですが、サーバー等も含め、すべて一人で出来ないと、個人での立ち上げは厳しいのでしょうか。
(喜) わかっているに越したことはありませんが、最近ではわからなくてもできるようになっています。例えば Herokuというのを使うと、Ruby on Railsさえわかっていれば、サーバーのことを知らなくても、サービスを公開することが出来ます。
どんどんアプリケーション側に専念できるようになってきていて、Bootstrapというものを使うと、デザインが出来なくともそれっぽい見た目のものを作る事ができます。
(村田) まず形にすることだけ覚えれば、何かを表に出すということはできますよ。
ーー1つサービスをつくる、といった大きな目標がない場合、初級から中級になるにはどういったことを指標に学んでいけばよいと思いますか?
(村田) 僕のおすすめは、何か作ってみてお金を得ることです。お金を稼ぐことはいいモチベーション維持につながると思います。お金をもらって嬉しくない人はいないと思います。
学生時代、作ったサイトをたくさんのユーザーに見てもらえたのは嬉しかったし、またそれがビジネスになる、ということにすごく感動しました。自分みたいな平凡な学生でも、京都にいてパソコン1台で月に数万円稼げてしまう。自分の勉強したことが社会に繋がるんだ、ということは大きなモチベーションでした。
なので、趣味でもいいですけど、月1万円を稼いでみようという目標を立ててみてはいかがでしょうか。1万円稼ぐためには人に見てもらわなければならないですし、そのためには何が必要かを考え始めると、やるべきことも見えてきて、目標が立てやすくなると思います。
これで対談は以上です。
これから起業を目指す人に限らず、ぜひプログラミング学習にお役立てください!