見出し画像

『SREの探求』監訳者・山口能迪氏とProgateCEO加藤將倫が語る、プログラミング学習の軌跡

義務教育でのプログラミング教育必修化やIT人材育成のニーズ拡大など、プログラミング学習を取り巻く環境は近年大きく変化している。

本連載では、IT業界を牽引されてきた方や第一線で活躍されている方々とProgate CEOの加藤將倫が対談形式でプログラミング学習の意義や未来について紐解いていく。

今回は外資系ソフトウェア企業のデベロッパーアドボケイトで、オライリージャパン出版『SREの探求』監訳者である山口能迪氏を迎え、原点である初学者時代のエピソードを中心に話を伺った。‍

画像1

加藤 將倫
小中学校時代をオーストラリアのパースで過ごす。東京大学工学部在学中の2014年7月にオンラインプログラミング学習サービスのProgateを創業。『Forbes 30 Under 30 ASIA 2018 (Forbesが選ぶアジアを代表する30才未満の30人)』に選出。

画像2

山口 能迪 氏
外資系ソフトウェア企業にてクラウド製品の普及と技術支援を担当し、特にオブザーバビリティ領域とSite Reliability Engineering領域を担当。OpenTelemetryやGoのコミュニティの支援も活発に行っている。以前はウェブ、Android、Googleアシスタントなどと各種新規製品・新規機能のリリースと普及に関わり、多くの公開事例の技術支援を担当。好きなプログラミング言語の傾向は、実用指向で標準の必要十分に重きを置くもので、特にGoやPythonを好んでいる。
2021年9月、監訳者として関わった『SREの探求』(オライリージャパン)刊行。

プログラミングにのめり込めなかった小学生時代


ーープログラミングを始めたきっかけを教えてください。

山口:小学校1年生の時に、MSX2+というパソコンを親が買ってきたんです。最初はそこに付属していたペイントツールで遊んでたんですけど、それとは別に説明書みたいなものに簡単なゲームのプログラムが書いてあったんですよ。スペースを押すとヘリコプターが浮上して、何かのキーを押すと爆弾が落ちて下の敵を倒せる、というシンプルなものでした。

その時、「これはプログラムっていうもので、BASICって書かれているこの画面で、これを全部打ち込んでF5を押せばできるよ」と教えてもらったんです。わからないながらも、書いてあるものを一字一句間違えないように打ち込んだのが最初ですね。

そのままハマればよかったんですけど、周りに教えてくれる人が全然いなかったこともあり、プログラミングからは離れてしまいました。

その後、小学校5年生の時に塾の友達がMSXturboRを持っていて、彼はすでにBASICで落ち物系パズルゲームを作っていたこともあり、プログラムのやり方を教えてくれました。一緒にちょっとしたゲームを作ったりしたんですよ。彼が9割くらい作って、僕はドット絵のデータを書いていただけなんですけどね(笑)。

さらに同時期くらいに参加した県の科学館でやっていたパソコン教室でPC-9801でBASICのプログラムを教えてもらったんですが、全然わからなくて。結局プログラミングには触れなくなってしまいました。

加藤:そうなんですね。僕も初めてプログラミングというものを知ったのは小学生の時でした。当時、母親が大学に通い直していて、情報を専攻していたこともあり、家にプログラミング関係の書籍があって。けれど、難しいなという印象で、特にのめり込むことはありませんでした。

壁を突破した転機は、ネットもテレビもラジオもない工場実習の寮生活


ーー再びプログラミングに触れるようになったのは、いつですか?

山口:大学1年生の時に必修科目としてプログラミングの授業を受けることになりました。そこでJavaを使って製図を書く課題が出て、友達に教えてもらいながらなんとか提出しました。ただ、この課題はあくまでブランクの部分を埋めればいいというものだったので、自分でゼロから書くことはできませんでした。

本気でプログラミングに取り組むようになったのは、大学3年生の時でした。必修科目にC言語の授業があったんですが、夏学期の試験で成績がすごい悪くて。そこで初めてプログラミングに本腰を入れて取り組もうと、オライリーの『C実践プログラミング』を買いました。

ちょうど工場実習という、ある一定期間寮に泊まりながら職場体験をして単位を獲得する授業をとっていたんですが、この寮にはインターネットもTVもラジオもなくて。ある意味集中的にプログラミングを学習できる環境だったので、パソコンと本を持ち込んで、日中は工場で働き、帰宅後は寝るまでひたすらプログラミングを書く…という生活を2週間送りました。その結果、C言語で簡単な処理なら書けるようになったんです。

その後、授業でC言語でCGIのプログラムを書いたり、ロボットのセンサーを使って自動操縦するようなプログラムを書いたりといった課題が出たんですが、この時はちゃんと自分で理解した上でプログラムが書けたので、自信がつきましたね。4年生の卒業論文でも、研究室で行っていた人間の動作解析に関するプログラムをC++とMATLABで書きました。

大学院に進んでからは、プログラミングでバイトができたらいいなと思って、Webサービスの受託開発会社に入りました。今までC++しか使ったことがなかったし、Web開発が初だったので、PHPやリレーショナル・データベースとかよくわからない…という状態でした。けれど、段々と世の中のWebサービスが動く仕組みがわかるようになったんです。

自分でWebサーバをたてたのもその時ですね。自宅にLinuxのサーバーを置いて、外からアクセスできるようにしました。その頃から急速に学ぶようになって、Pythonを調べたり、C++でいろいろサービス組んで遊んでいました。

加藤:山口さんとはすごく共通点があるなと思って。僕も再びプログラミングにちゃんと触れたのは大学進学後でした。情報工学を専攻していて、C言語が必修科目だったんです。けれど、全然わからないし、もちろん成績もよくなくて。

僕の場合はここで少し諦めてしまって、違う方向で武器を身につけようとPHPを独学で学んで、受託開発を始めたんです。苦労したんですが、たまたま一緒に試行錯誤してくれる友達や、教えてくれる人がいたので、何週間か食べてプログラミングして寝るだけの生活をおくって、なんとか納品できました。この出来事が僕にとっては一つ壁を超えたかなと感じるタイミングでした。

先程の話を聞いて、山口さんは『C実践プログラミング』を読まれたときに壁を越えられたのかなと思うんですが、具体的に何が突破ポイントでしたか?

山口:大学の授業で、概念としてOSというものがあって…というのは理解していたのですが、いざ実際に自分でコントロールしようと思うと難しくて。けれど、本にある一つひとつの例題を進めるにつれ、点として存在していた知識が線として繋がっていったんですよね。それでようやく全体像を掴むことができました。

加藤:確かに全体像を掴むというのはターニングポイントになりますよね。僕も受託開発したプロダクトを初めて納品したとき、全体像が少し掴めた手応えを感じて、そこから急速に学ぶようになりました。

挫折しないために必要な、環境の力

ーー初学者がプログラミングを学ぶ際の課題やハードルだと思うことがあれば教えてください。

山口:昔と違ってソフトウェアの複雑性が増してるので、挫折ポイントはかなりあるなと思ってます。なので、もし自分でやろうと思って検索してわからなくなってしまったとしても、諦めないで欲しいなと思います。

躓いたとしても、今やろうとしていることは難易度が高すぎないかなど一度振り返ったり、その上でまずは別のものにトライしたり。そんなふうに少しずつ前に進んでいけばいいと思います。やっぱり挫折してしまうのが一番もったいない。‍

あとは、環境もすごく重要だなと思います。小学生時代、初めてBASICに触れた時に「ここに書いてあるプログラムはこういう意味で、ifはこの値がある条件を満たしてるかどうかを判断してるんだよ」など、全部ちゃんと教えてくれる人、かつ気軽に聞ける人が近くにいたら、多分ずっとプログラムを書いてたと思います。

大学で習得できたのも、もちろん寮にこもって自力でやったというのもありますが、先生が教えてくれたり、同期とお互いに教え合ったりする環境があったからだと思います。

‍また、社会人になってからはオフラインのPythonのコミュニティにも参加していました。その当時、まだPythonを触っている人は多くなくて、参加しているのも生え抜きの優秀な人が多かったんですよね。インターネットで調べると何日かかってもわからないことが、そのコミュニティで聞けば10秒でわかる。そこでPythonに詳しくなりました。今の会社に入ったのも、Pythonのブログを書いていたことがきっかけです。

こういった経験からも、やはり環境の力は大きいなと感じました。‍

‍加藤:環境の力は大きいですよね。Progateとしても、まさに躓いたときに方向性を指し示してくれるメンターのような「Path」というサービス開発に着手しています。

享受する側から、創る側へ。そこで感じた可能性の広がり方


ーーProgateは「プログラミングは人生の可能性を広げる」ことを伝え続けています。実際に人生の可能性が広がったと感じた経験はありますか?

山口:コンピューター関連に関しての見方が変わりましたね。パソコンはアプリケーションをただ操作するだけの道具ではなく、自分が便利なように加工することができるものだ、と思うようになりました。足りないものがあれば、自分でプログラムを書こうという心構えや自信が持てるようになったというか。

ただ単にサービスを享受するだけの立場から、創る側になったとき、可能性の広がりを感じました。

加藤:僕はプログラミングを学ぶことで、問題を発見する能力も向上すると思っています。もともとウェブサービスを作る方法は完全にブラックボックスだったんですが、少し全体像が見えてくると、「実はこういう仕組みで動いてるのかもしれない」と想像できる範囲が広がっていく感覚があったんですよね。そこに対してもっとこうしたら良くなるなと考えられるようになったのは、すごく大きいなと。

山口:すごく共感しますね。例えば短い時間で多くの料理を作ろうという時はプログラムを書くときの考え方みたいなのが活かされるんですよね。結局、並行処理じゃないですか。複数のレシピを見て、ここで10分煮るっていう作業があったとしたら、それじゃあ先に進めないから、その間に別の料理の下拵えをしようみたいな。完全にOSのスレッド管理と同じなんですよね。そういうところは副次的に身についた能力かなと思います。

ーーProgateではプログラムで世の中に価値を生むことのできる人を「創れる人」と呼んでいます。ご自身は、いつ「創れる人」になったと思いますか?

山口:そういう意味で言うと加藤さんと同じで、バイトで自分が書いたプログラムをお客さんに納品して、実際にサービスが動いているのを見たときは価値を提供できる側の人間になったのかなとは思いましたね。

就職してからは、プロジェクトの中で自分しかわからない領域があったりだとか、自分が手を動かすこと解決したり、物事が進んだりといった場面を経験することで、創れる側の人間になれたのかなという実感がありました。

ーー「創れる人」が共通して持っている要素は、どのようなものだと考えますか?

‍加藤:周りの尊敬するエンジニアの方々を見ていると、知識を身につけることへの飽くなき探究心を持っているなと感じます。プログラミングを取り巻く環境の変化を楽しみながら、最新情報をキャッチアップし続けている。創れる人になるための資質としては、楽しさ、ワクワク感を持ち続けていることなのかなと感じます。‍

山口:確かにそうですね。プログラミングをすること自体、プラットフォームがどんどん変化しているので、キャッチアップしていくつもりがないとやり続けるのはなかなか難しいと思います。

あと僕が思ったのは、いろんな物事に対して「何が問題で、自分だったらどう解決できるか」をよく考えてる人は、実際に手を動かしたときにすぐにみんなに役立つものを作ることができるなと。決められた仕様通りに書ける人も創れる人だと思いますが、僕はどちらかというと、自分で問題を定義した上で解決方法を示し、それに付随したプログラムを出せる人が創れる人なんじゃないかなと思います。


プログラムを共通言語としてコミュニケーションをとる時代がくる。


ーー今後、どのようなエンジニアが求められるようになると思いますか?

‍山口:僕自身は、大したプログラマーではないんです。ただ、こうやって仕事をやっていけてるっていうのは、何かしら価値があると思っていて。

現在、何社かが参画するオープンソースのプロジェクトに携わっているのですが、そこでの僕の役割は、自社としてそのプロジェクトにどう関わるか?どういった仕様を入れるべきか、入れないべきか?をエンジニアと話したり、外部のエンジニアが一番ハッピーになる設計や仕様を考えたり。そういったことを担っています。

プログラムを書くことだけでなく、それらに付随する様々な役割があるということを理解できる人が増えるといいなと思いますし、理解した上で一緒に素晴らしいコードをたくさん書いてくれるエンジニアが増えるといいなと思ってます。

ーー最後に、山口さんがProgateに期待することがあれば教えていただきたいです。

画像3

‍山口:ちょっと雑な予測ですが、今後プログラムを書ける人自体は増えていくけれど、エンジニアやプログラマーだけの人は相対的に減っていくと考えています。例えば経理の人がプログラムを書けるとか、マーケティングの人がプログラムを書けるとか、エンジニアに限らずいろんな職種でプログラムを書ける人が出てくると思うんです。

身近な例だと、母親が50歳を過ぎてから、ACCESSとSQLを使っておこづかい帳みたいなものを作ってたんですね。きっかけは近所で開催されていた無料講座だったそうですが、今後そういう人は増えていくと思うんです。

Progateさんのコンテンツを通していろんな職種の人がプログラミングを理解し、その方々があらゆる人とプログラミングを共通言語としてコミュニケーションを取れるようになるといいなと思います。‍

‍加藤:ありがとうございます。がんばります!‍

‍山口:僕も全然勉強中の身なので、ぜひこの記事を読んでいる皆さんと一緒に学んでいきたいと思ってます。ありがとうございます。


Progateは一緒に働く仲間を募集しています!

🔸 採用情報

🔸Progate会社紹介資料

🔸カルチャーブック


この記事が気に入ったらサポートをしてみませんか?