「Webサービスを作りたい!」と思ってから実際に作るまで5年かかった

この記事は CAMPHOR- Advent Calendar 2018 10日目の記事です.

初めまして.京大工学部情報学科1回のあたらんです.プログラミングは初心者ですが,初心者なりに感じていることを綴ろうと思います.

最高にクールなWebサービスを作りたい

中学2年生の時,映画「ソーシャルネットワーク」を見ました.マークザッカーバーグハーバード大学在学中にFacebookを作り上げる過程を描いた映画ですが,とても感動したのを覚えています.どこに感動したかというと,Facebookをローンチした瞬間にサーバーのログが大量のアクセスによって流れていくシーン.一人の人間が作り上げたものが大量の人間に影響を与えているのが最高にかっこよくて,「やばい,Webサービス作りたい!」という気持ちになりました.しかし,実際にWebサービスを作るまで(今初めてWebサービスと呼べるものを作っている)にはそれから5年もかかってしまいました.

そこから学んだプログラミングの習得(やそのほかの学習なんでも)に重要だと思っていることを書こうと思います.

順番って大事

初手Railsチュートリアルはだめ

高校生になった僕は,入学祝いに念願のMacBook Proを買ってもらい,夏休みに中高生向けプログラミングキャンプWebサービス開発コースに参加しました.プログラミングキャンプとは言っても5日間しかないし,HTMLとCSSをdotinstallでかじった程度の知識でRailsを理解するのは不可能でした.

その後Railsチュートリアルで勉強しようと試みましたが,Rubyをはじめその他のプログラミング言語を何一つ触ったこともない状態で理解できるはずもありませんでした.Webフレームワークを理解するにはそのフレームワークプログラミング言語をまず習得する必要があります.

というかそもそも,動的なWebサービスを作る為には世の中のWebサイトを閲覧できる仕組み(インターネットの仕組みとかhttpプロトコルとか)を学び,プログラミングとは何かを知り,Webフレームワークの仕様を学ぶ,というプロセスが必要だと僕は思っています.Railsチュートリアルに案の定挫折させられた(RailsチュートリアルはあたかもRubyが分からない人にも理解できるかのように書かれている)僕からプログラミングをするモチベは消え去りました.

Webフレームワークの勉強をする前に,そのフレームワークを記述しているプログラミング言語の基本的な文法は最低限学ぶようにしましょう.

コミュニティって大事

オフラインで人と会うことの重要性

大学入学前よりも,大学に入学してCAMPHOR-に通い始めてからの方が成長のスピードは多分数倍速いです.当時はプログラミングができる人にもほとんど会ったことがなかったので学習方法もよくわからず,本で勉強するなんてナンセンスだと思っていて,全てググってどうにかしようと思っていました.実際ググって出てくる情報はググっただけでどうにかなるていで書かれていますが,ググっただけではどうにもならないこともあるということを実際に人に会って初めてわかりました.

ググったらなんでもわかる時代とはいえ,やはり人に会ってみないとわからないことも多々あります.

ちょっとズレるような気もするけど,こんな研究もあります.

切磋琢磨できる仲間を探す

大学入学以前は周りに「プログラミングやりたい!」って言っている人は多分ほとんどいなかったので,自分がプログラミングをやっていてもその話題を共有できる人がいませんでした.自分のやっていることが共有できる仲間がいない場合,モチベは続きません(少なくとも僕の場合).

僕は高校時代数学にハマっていました.高1の冬休み,塾の友達と数学の問題集の1つの章を1週間で1周できなければ500円払うという賭けみたいなことをしたことがあります.それを3,4週間した時には「数学おもしれー」ってなってたし,美しい解法を誰かが見つけた時にはそのメンツで共有したりしました.

同じように,大学に入学して競プロというものの存在をCAMPHOR-で知り,学科の友達とその話題を共有することでプログラミングにハマっていきました.おそらくアルゴリズムを考えること自体も面白いことではあるのですが,自分で思いついた美しいアルゴリズムを人と共有して盛り上がることでモチベが保たれるんだと思います.一人で黙々とやってモチベを保てている人がいるとすれば,尊敬します.

Webサービスを開発したい人が辿るべき道

結局,「Webサービスを作りたい!」と思った人がまずやるべきは,パソコンを買って,同じような意志を持った集団に属し(なるべくオフラインがいい),焦らずに必要なことから習得していくことです.そのような環境を提供してくれるのでCAMPHOR-はいいところです.

今開発しているWebサービス

それはそうと,今どんなWebサービスを開発しているかちょっと紹介します.

RoC京大(Rate our Coursesの略)という,自分の取っている授業にレビューや資料をを投稿して共有できる,京大に排他的なサイトを作っています.授業を選ぶ時に先輩たちのレビューを参考にできたり,同じ授業を取っている人とノートを共有できたり(,過去問をもらえたり)してみんなハッピーになる気がしています.

伝えたかったこと

  1. 物事を学習しようと思ったら,焦らず必要なことから順番に学習する.

  2. 学習のモチベを維持する為に同じ目的を持った集団に属す.

  3. それにハマる.

以上です.

なんか精神論みたいな話が多くなってしまいましたが,最後まで読んでいただいてありがとうございました.来年はバリバリに技術的な話ができるようにレベル上げしていきたいと思います.