密着3〜4カ月の様子をお届けします

「ここが挫折するかしないかの分かれ道なんです」苦戦中の寺田有希さんに起きた“ある変化”とは【発展・最終課題編】

PR

株式会社div

仕事
プログラミングスクール「テックキャンプ」を、ホリエモンチャンネルMCの寺田有希さんがチャレンジ!
第3回となる今回は、応用カリキュラムを終了し、自分で実装する作業がはじまるという発展編〜最終課題に着手した寺田さんに密着します

実装がスタートしたことで「明確に頭の使い方が変わった」と自分自身の変化についても実感する発言も多く飛び出しました。

そしてこの寺田さんの変化は、“仕事ができる社会人”になるために私たちも押さえておくべきことかもしれません。

※密着1カ月目〜2カ月目の様子は記事の最後で見ることができます。

〈聞き手=宮内麻希(新R25編集部)〉

「寺田有希 プログラミングチャレンジ」リアル密着:発展編と最終課題に突入する3カ月〜4カ月目

テックキャンプ開始80日:2021年6月25日(金)ついに半年間のカリキュラムの残りが100日を切ったという連絡が…

寺田さん

寺田さん

テックキャンプのマイページに「(カリキュラムが)残り○日」と表示されるんですけど、これを見てください!

ついに…残り100日を切りました!
こちらが証拠画面。右上の赤枠部分に「99」との記載が…!
宮内

宮内

ようやく…!

今は何を学習されてるんですか?
寺田さん

寺田さん

JavaScriptの学習が終わり、今は実装課題に取り組んでいます。
宮内

宮内

寺田さんの中で「プログラミングスキルがついてきたな」と感じる瞬間ってあるんですか?
寺田さん

寺田さん

テックキャンプをはじめてから開設したプログラミング学習用のTwitterアカウントでエンジニアさんのTwitterをフォローしてるんですね。

今まで専門用語やコードの記述に関することが流れてきても意味がわからなかったんですけど、最近は自分が学習している言語と違う時、完全な理解はできなくても「こういうことを言いたいんだろうな」と、想像できるようになった気がするんです。
寺田さん

寺田さん

大阪弁や名古屋弁を喋れなくても、会話の文脈や雰囲気から何を言っているのか予測することはできますよね。

プログラミング言語も同じで、言語によってクセや書き方の違いはあるんですけど、ある程度ベースとなる知識があれば「こういうことを言ってるんだろうな」とわかるのかもしれないなって。
宮内

宮内

なるほど。
寺田さん

寺田さん

一歩ずつですけど、プログラミングに対して理解の解像度が上がってきた感覚はありますね。

テックキャンプ開始90日:2021年7月8日(木)ここから、本格的な実装が始まる「最終課題」へ突入します

取材日の前日、発展カリキュラムの実装課題がすべて終了し、“最終課題”に入ったとのことで久々にお伺いしてみることに。
宮内

宮内

最終課題って具体的にどんなことをするんですか?
寺田さん

寺田さん

これはテックキャンプの伝統らしいんですけど、フリマアプリを作ります。
こちらを作るそうです
寺田さん

寺田さん

ユーザー登録や決済機能、出品や購入機能など、サーバーサイドの実装を0から自分で書いていく課題になってます。

今はデータベース設計をしてるんですが、これがまた大変で…
宮内

宮内

データベース設計…?
寺田さん

寺田さん

どの情報をどの部屋に保存するのか、そしてその部屋はいくつ必要かなど、設計図を書く作業です。

たとえば自分の部屋を片付けようと思ったとき、洋服も本も雑貨も、同じクローゼットの中に適当に詰め込んでしまうと、中もぐちゃぐちゃになるし、取り出すときに何がどこに入ってるかわからなくなりますよね。

データベースも同じで、“ユーザー情報はここ”、“商品情報はここ”というように、部屋を分けて、収納する棚を決めておく必要がある。あらかじめ、設計図を書いてわかりやすくしておくんです。
なるほど
寺田さん

寺田さん

先日終了した発展カリキュラムの実装課題は、すでに部屋の名前や数が指定されている状態からのスタートだったんですけど、最終課題は一から考えるところから始まるんです。

設計図を0から自分で書くようなものなので、正直かなり時間がかかってますね。
宮内

宮内

これまでと比較して、どんな点が難しいんですか?
寺田さん

寺田さん

一番は、物事を因数分解して考えないといけないところです。

「この商品情報を保存してください」と言われたら、“ただ保存をすればいいんだ”と思えますよね?
宮内

宮内

そうですね。
寺田さん

寺田さん

でも実装するには、“保存する”ために必要な要素を因数分解して、どこにどんなコードを書いていくのか、そのために何が必要かを想像しないといけないんです。

保存する場所や、データが行き来できるようにするようにしたりと、いくつもの工程が発生するんですよ。それが文字なのか数字なのか画像なのか、中身でもだいぶ変わりますし。

つまり、目的に対してどんな要素が必要で、どのコードを使えば最短距離でいけるかを考えることが重要なんです。
宮内

宮内

目標を細分化して実現方法を考えることは、どんな仕事でも必要とされる力ですよね。

エンジニア経験のある堀江(貴文)さんやひろゆきさんが合理的な判断をする理由がわかる気がします(笑)。
寺田さん

寺田さん

わかりますよね(笑)。

プログラミングは常に合理的に考えて「今はこれが必要だから、これだけをやるべき」というポイントを見極めていく作業の繰り返しなので、思考の訓練になるんですよ。
寺田さん

寺田さん

だけど、合理的なことって“頑張ってる感”を出すには効率が悪いと思ってしまうこともあるじゃないですか

目標を達成するにはAとBをやればいいだけなのに、AからGまでやった方が“頑張ってる”認定される気がして、いらない努力をしてしまうときがある。
宮内

宮内

わかります…
寺田さん

寺田さん

だけどその考えのまま実装してしまうと、このPCは永遠に動いてくれないので(笑)。
「すぐエラーになりますから」
寺田さん

寺田さん

プログラミング学習が、あらゆる物事を合理的に捉えられるようになるためのいいきっかけになってますね。

テックキャンプ開始120日:2021年8月5日(木)取材前日、遅くまでエラーに苦しんでいる寺田さんのツイートを発見しました

最終課題の佳境を迎えたということで、約1カ月ぶりに取材することになったのですが、取材日の前日深夜にこんなツイートが…
寺田さん、大丈夫でしょうか…?
寺田さん

寺田さん

購入機能の実装がキツくて、全っ然先に進まないんです

昨日も3時間かけたんですけど、結局エラーの原因がわからなくて。
「赤い部分の中にエラーが隠れてるんです」
寺田さん

寺田さん

んあーー!!」ってひとりでのたうち回ってました。

これだけで、もう2、3日悩んでて…
大変だ…
寺田さん

寺田さん

ただ、自分で実装を始めると考え方が変わりますね。

プログラミング、だんだん楽しくなってきたんですよ
宮内

宮内

え、そうなんですか?
寺田さん

寺田さん

数学のテストにたとえると、これまでの学習は最初の計算問題、実装課題は後半に出てくる記述問題みたいなものなんです。

数学が苦手な文系の私でも、計算問題なら解き方さえ忘れなければ解けちゃうんですね。

でも記述問題は、問題を噛み砕いて、どの公式を使ったら解けるかまで自分で考えなきゃいけないじゃないですか。まさに実装課題はそんな感じで、これまでのやり方では解決できなくなったんですよ。
宮内

宮内

どうやって対処してるんですか?
寺田さん

寺田さん

メンターさんに聞くこともできるんですが、何日もかかってでも自分で原因を考えるようにしてます。

そしたら、だんだん「このメソッドを使えばいいんだ」と自分だけで答えを出すことができるようになってきて…これが超楽しいんです。

ここにきてはじめて、「答えは“覚える”ものではなく、“導き出す”ものなんだ」と実感できたんですよ。
寺田さん

寺田さん

自分は数学が苦手だったのではなく、「“答えを導く”という頭の使い方に慣れてこなかっただけ」ということに気がついたんです。

堀江さんに「(プログラミングに対して)まだ心理的ハードルを越えられてない」と言われたのも、こういうことなのかもしれませんね。
そこで「自分には向いてない」と思い込んでたら、俺はダンスができないままだったと思う。

みんなが“できない”と思ってることって、大体は精神的なハードルを越えられてないだけなんですよ。

出典https://r25.jp

寺田さん

寺田さん

それに、プログラミングを経験することで、これからの時代に必要とされる考え方が身につけられるんじゃないかと思うんです
宮内

宮内

どういうことですか?
寺田さん

寺田さん

デジタル化によって未来が常に変化していく社会で必要なのは、「答えのない問いに向き合い続ける力」ですよね。

“答えは自分で導ける”ということに気づき、その力を鍛える訓練こそがプログラミングなんだと思うんです。
宮内

宮内

なるほど。

いきなりプログラミングはハードルが高いですけど、ちょっと数学の問題を解きたくなってきました…(笑)。
寺田さん

寺田さん

“覚える”という勉強法を否定するわけではないですが、自分が“覚える”頭の使い方しかしてこなかった事実は認めるべきだなと思って。

そして、この考え方の違いを理解できるかが、プログラミングに挫折するかしないかの分かれ道なんだと思います。

…って、まだ最終課題も終わってないんですけど(笑)。
締めのようになってますが、まだまだ続きますよ
寺田さん

寺田さん

最終課題のあとはオリジナルアプリの制作がはじまるので、またそのタイミングで挫折してないか報告させてください!
次回はいよいよ寺田さん自身が企画するオリジナルアプリ制作の様子をお届け。はたして、このままの調子でカリキュラム終了まで駆け抜けられるのか…?

ラストスパートが迫る寺田さんの挑戦を、みなさんも一緒に応援しましょう!

寺田さんのテックキャンプ挑戦の様子はこちらから!

チャンネル寺田有希

チャンネル寺田有希

寺田さんのYouTubeチャンネルはこちら!
寺田有希 Twitter

寺田有希 Twitter

プログラミング学習専用のTwitterも開設!
寺田有希|STAGE|オンラインコミュニティ

寺田有希|STAGE|オンラインコミュニティ

プログラミング学習の進捗も報告しているという、寺田さんのオンラインコミュニティ「STAGE」もチェック!
〜ここから下は前回までのあらすじとなります〜

「寺田有希 プログラミングチャレンジ」リアル密着:応用編がスタートの2カ月目

テックキャンプ開始30日:2021年5月11日(火)ついに応用編を学習しはじめた寺田さん

宮内

宮内

先日から、学習カリキュラムが基礎から応用に入ったんですよね?
寺田さん

寺田さん

はい。応用が始まって2週間ちょっとなんですけど、こんなにメモが増えました。
「もう4、50枚あるんじゃないですかね」
宮内

宮内

すごい量だ…。今は何を学習されてるんですか?
寺田さん

寺田さん

今やってるのがテストコードですね。こんな感じです。
もう会話についていけなくなりそうです…
宮内

宮内

テストコード…
寺田さん

寺田さん

アプリが想定した通りに動いてくれるか、動作を「指示するコード」とは別に、動作を「確認するためのコード」を書いて、それを実行することで確認するんです。

よく“エラー”って聞くと思うんですけど、それが出てしまわないように、一旦コードが書き終わったら、テストコードを書いてチェックする必要があるらしいんですよ。
宮内

宮内

そういうのって、自動的にやってくれるんじゃないんですね。
寺田さん

寺田さん

私もそう思ってました(笑)。

こんな感じで、学習することが応用に入ってからどんどん重くなってるので、心が折れはじめてるんですけど…
寺田さん

寺田さん

でも最近、やっと目標ができたんです
宮内

宮内

お! なんでしょう?
寺田さん

寺田さん

4月からはじめたオンラインコミュニティ「STAGE」でもプログラミングについて発信してるんですけど、

参加者から「STAGE内でアプリを作ったら楽しいと思うんですよね」と言われて、「たしかに!!」と。

STAGE発のアプリを作る」というのが目標です
寺田さん

寺田さん

…自分で言うのもあれですけど、私、めちゃくちゃ真面目にこの企画やってません?(笑)
宮内

宮内

正直驚いてます(笑)。
寺田さん

寺田さん

せっかくここまで自分の時間を使ってるんだから、プログラミングできるようにならないともったいないですもんね。

テックキャンプさんと新R25さんをとことん使い倒す気持ちで頑張ります(笑)。

テックキャンプ開始60日:2021年6月4日(金)

というわけで、早速お伺いすることにしました。
宮内

宮内

ついに応用編が終わったんですね!
寺田さん

寺田さん

そうなんですよ!!

正直、めっちゃつらかったです。基礎とは雲泥の差です
宮内

宮内

でも寺田さん、Twitterもいい感じで更新してて、応用も変わらず順調なイメージでした。
寺田さん

寺田さん

順調…ではなかったですね(笑)。

なんとか続いてますが、昨日まで沼に苦しんでいて…挫折寸前だったんですよ
宮内

宮内

沼…。なんの沼に…?
寺田さん

寺田さん

パラメーターっていう。
宮内

宮内

なんですかそれ…?
寺田さん

寺田さん

情報を行き来させるために入れる箱みたいなものです。

たとえば、このワイヤレスイヤフォンをネットショッピングで購入したとします。そうすると、これ自体も商品の箱に入っていて、さらにこの商品が段ボール箱に入って自宅に届くじゃないですか。パラメーターは、商品を届けるための段ボール箱みたいなものです

情報もそうやって、マトリョーシカのように入れ子構造になって管理されていて、たくさんの箱に入って行き来しているんです。
宮内

宮内

(やばい全然わからない)
寺田さん

寺田さん

段ボールに入っていることを想像しているからか、最近はアプリがAmazonの工場に見えてしょうがないんですよ

Ruby on Railsでは、MVC構造を想像しながらプログラミングを学習するといいと言われてるんですが、この流れも工場みたいで余計に。
宮内

宮内

…どういうことですか?
「実際の画面を見せながら説明しますね!」
寺田先生による初心者でもわかるプログラミング授業が開講です
寺田さん

寺田さん

この図がMVC構造と呼ばれるもので、「アプリケーションはこんな流れで動いてる」と考えるとわかりやすいです。

クライアント、ルーティング、コントローラー、ビュー、モデル、テーブル、役割が細かく分かれてるんです。
クライアント:ユーザーのこと
ルーティング:道筋を決める役割
コントローラー:どこで何をするか、何が必要か、指示する役割
ビュー:見た目(HTML/CSS)を整える役割
モデル:データベースを管理する役割
テーブル:データの保管場所
寺田さん

寺田さん

プログラミングを始めるときは、最初にターミナルと呼ばれる場所でアプリの骨組みを作ります。
上の白い部分がターミナル。指示すると、左側に部屋ができます
寺田さん

寺田さん

骨組みができたら、プログラムを書きます。

ルーティングはみんなで向かう方向を決める社長、コントローラーは敏腕秘書だと思ってください。そのほかは、倉庫や工場で働く頼もしい社員たちです。
宮内

宮内

ほう…
わからなくなるので、もう一度こちらの図を
寺田さん

寺田さん

たとえば、「ツイートを保存したい」とします。進むべき道をルーティングに書いて、それに必要なアクションや情報(投稿内容やユーザー情報など)をコントローラーにまとめておきます。

その指示通りに、モデルは情報管理倉庫テーブルの扉を開けて商品を準備し、ビューが各家庭に送っても恥ずかしくないように見た目を整えながら、情報を段ボールにパッキング。

最後に完了報告を敏腕秘書コントローラーにすると、画面上に「ツイートが完了しました」と表示される…と、ざっくりこんな流れになっているんです。
寺田さん

寺田さん

これがコントローラー画面で、先ほどのパラメーターも書いてあります。

22行目をみてください。ここには「メッセージ倉庫の中にあるcontentとimage、そして倉庫は違うけれど、user_idとcurrent_use.idも必要やから用意しといて!」と書いてあるんです。
宮内

宮内

このparamsというのが、さっきおっしゃってたパラメーターのことなのか!!

話を聞いて思ったんですけど、プログラミングってかなり構造的に理解しないといけないんですね。
寺田さん

寺田さん

めちゃめちゃロジカルなんです。だからこそ、そのロジックを理解できさえれば誰にでもできる、というのはちょっと理解できるかもしれません。

堀江さんや真子さんが「プログラミングは簡単」と言ってるのは、「ロジックを理解できれば簡単」ってことだと思うんですよね。応用を学習して、少し感じることができた気がします。
寺田さん

寺田さん

ただ、“簡単なこと”と“ラクなこと”は違うんですよ

「簡単だよ」と言われると、多くの人が「すぐ習得できる」「ラクにエンジニアになれる」と変換しちゃってると思うんです。

ロジックを理解したら簡単”ということと、“理解できるようになるまでに膨大な努力が必要だ”ということはまったく次元の違う話なので、そこもあわせて伝えるべきだなと感じてます。

実際、全然ラクじゃないんで(笑)。
宮内

宮内

そうですよね…。ここまで理解するのはどれだけ大変か…
寺田さん

寺田さん

今、なんとか一番しんどい時期は抜けたんですが、これから学習する「発展」編が怖くて

課題アプリの実装中は、自力でアプリ開発できるようになるためにメンターさんへの質問が一部制限されるらしいんですよ。

明日からはじまるんですけど…やっぱり嫌だ〜!!!!
開始1カ月とは違って、寺田さんからプログラミング用語がバンバン飛び出した今回の密着。

編集部が想定していたよりも(?)順調に進んでいる印象ですが、1人で実装を開始する発展編はどうなるのか…来月の更新もお楽しみに。

「寺田有希 プログラミングチャレンジ」リアル密着:受講開始〜1カ月編

テックキャンプ初日:2021年4月3日(土)キックオフ日

宮内

宮内

今日はこれから講義のキックオフがあるということで。
寺田さん

寺田さん

いやあ〜…はじまっちゃいましたね。
寺田さん

寺田さん

正直、今はまだ意気込みを宣言できないくらい何もわかってないんですよ。
宮内

宮内

先日の取材でも、「そもそも“プログラミングで何ができるのか?”というところからわからない」とおっしゃってましたもんね。
寺田さん

寺田さん

そうなんです。

4月から自分のオンラインコミュニティや個人YouTubeをはじめたり、新しいチャレンジが重なっていたので、プログラミングについて考える暇がなくて…

レギュラーのお仕事をしつつ、プログラミングを勉強していくことになるので、正直かなり不安です。
キックオフの最初はオンライン上で使用ツールの設定を行います
その後、これから半年間をともにするライフコーチ、寺田さんのチームメンバーの方と話し合う時間があり、キックオフは約2時間ほどで終了です
宮内

宮内

お疲れ様でした!!
寺田さん

寺田さん

お疲れ様でした〜。

この企画を受ける前から、1日に3時間程度プログラミングを勉強する時間をとらないといけないとはわかってたんですけど、実際にスケジュールを組んでみるとすごいですね。

スケジュール帳が、テックキャンプ、テックキャンプ、テックキャンプ…だらけで(笑)
宮内

宮内

今日のキックオフではどんなことをしたんですか?
寺田さん

寺田さん

学習はまだ開始していないんですが、チームメンバー、ライフコーチの方と3人でPCの設定や教材のレクチャーなど、受講に関する共通認識を持つ時間でした。

ライフコーチの方も優しかったですし、チームメンバーの方も気合いが入っていたので、チームとしての安心感を得られましたね。
宮内

宮内

では改めて、これから半年間密着させていただきますので、よろしくおねがいします!
寺田さん

寺田さん

はい! はあああぁ〜…
めちゃくちゃ気が重そう…

テックキャンプ開始10日:2021年4月14日(水)基礎カリキュラムを受講中

初日はかなり不安そうだった寺田さん。ですが、開始10日を過ぎたころにこんな連絡が…