プログラミング

【G’s Academy LABコース体験記】6日目

一日遅れで更新。

課題をやっていたら気づいたら夜中の2時とかになっていた。

嫌いなことは1分も集中できないけど、
好きなことは寝食を忘れるリバースエンジニアです。

6日目で一つ良かったのは、面談を組んでもらったことだ。
僕を担当してくださったのは、主席講師の山崎先生という方だったが、
僕が感じていた不満を全部優しく懇切丁寧に聞いてくださった。

もちろん、今後僕が不満に思ったこと(2・3日目の記事参照)が、
実際に改善されるかどうかが大切だが、
ひとまずは主席講師に伝えられたということで安心だ。

何と言っても僕たちは70万円と半年というリソースをここに捧げると決めたのだ。
意地でもそれ以上の対価を得て帰らなければならない。

さて、6日目の講義内容は、
ほんのちょびっとjQueryというJavaScriptのライブラリの使い方をやっただけで、
後は、前回の課題のLP作成をjQueryを使って進化させるのをひたすらやるだけだった。

僕は前回のLP作成課題(実際の制作物はこちら。最低ラインはこちら。) にて、
以下の機能をjQueryを使って実装していたので、課題の最低ラインはすでにクリアしていた。

・ロード画面の作成
・チーズの穴をモチーフに全体的に丸みを帯びたデザインに変更
・ナビゲーションのスクロール移動
・右下にトップへのスクロールボタンの追加
・トップイメージが固定されており、画面後ろにあるように見えるデザイン
・コンテンツはすべて下から上にフェードイン
・上にオーバースクロールしたときに猫が一瞬出現
・送信ボタンに3秒hoversすると、ドラえもんとネズミが出現

だが、コードを自分でかけなくては意味がないので、
アウトプットのクオリティを上げる代わりに、
jQueryのコードを読解し、書けるようになることに時間を全て割いた。

結果的に、上記のコードはそらで全て自分で書けるようになった。

周りがアウトプットのクオリティを上げる中でのこの判断は、
順位を気にする僕の性格から言ってかなり苦渋の決断ではあったが、
代わりに得たものは大きかった。

7日目の課題提出に向けて、この後は残りの時間で以下のことをやる予定だ(った)。
・レスポンシブデザインで、メニューバーが折りたたまれ、クリックで表示できるようにする
・タイトルにマウスカーソルが近づいたら文字がひっついて、一定離れるともとに戻る

【G’s Academy LABコース体験記】0日目〜なぜ僕がgsに通うことにしたのか〜

僕のこの体験記を読みたいと思ってくれる人は、
おそらく人生の岐路にいて、ジョブチェンジを考えているか、
それに近い大きな意思決定をしようとしている人だろう。

人の意思決定のプロセスを知ることは、
自分の意思決定において非常に参考になる。

【参考】

僕の体験記が少しでも多くの人にとって価値のある情報になるようにするため、
そもそも僕がなんで通うことになったのか、
その背景をお伝えしておこう。

ポイントは、
・なぜ海外のブートキャンプに行かなかったのか
・なぜ国内のキャンプでgsを選んだのか
の二点だ。

僕は2016年の10月頃、
新卒で入った会社を退職し、
サンフランシスコにあるHack Reactor(以下HR)
というブートキャンプ界のハーバードと呼ばれる、
プログラミングブートキャンプに通うつもりだった。

これは、子供の頃からの夢だった、
エンジニアという職業に就くためだった。

そのときは今と違って起業という選択肢はあまり考えておらず、
とにかく自分でプロダクトが作れる人間になりたかった。

それで、どうせやるなら世界一だと思って選んだのがHRだったわけだ。
その後の就職とかは、正直何も考えていなかった。

とにかく、新卒で入社した会社で失ってしまった、
僕が楽しいことに没頭できる貴重な時間を少しでもリカバリーしたかった。

最短でエンジニアになるために、
言語の壁だろうがお金の壁だろうが、
どんな苦行でも、やりたいことのためにならなんだって乗り越えるつもりだった。

HRに入学するには、入学試験をパスしなければならないが、
その試験がシリコンバレーのエンジニアの採用面接よりも難しいと言われている。

入学試験の面接(live coding)はSkypeやZoom.usなどを使って行われる。

面接のチャンスは三回までで、三回落ちると二度と挑戦ができない。
僕は当時すでに二回落ちてしまい、すでに後がなかった。

そんなメンタルがギリギリのときに、
僕はHRのスタッフから、日本でキャンプを作ろうとしているから、
その立ち上げスタッフにならないかと別のジョブオファーを受けることができ、
喜んでそれに飛びついた。

僕はそのプロセスで、
HRのエッセンスと、ちょっとしたコーディングスキルを身につけることができた。

しかし、間もなく僕はそのジョブを辞めてしまった。

日本の某大企業の中でのスタートアップという形でスタートしていたが、
僕がやはり大企業という組織形態に馴染めなかったのだ。

このとき、どうせ事業を作るなら、自分でやろうと決めた。

【参考】
それで、やっぱり必要なのは自分で開発するスキルであって、
結局どこかのキャンプに通わなければならないことは決まっていた。

HRに再度挑戦しても良かったのだが、
正直に言うと、僕はHRでドロップアウトさせられずに、
最後までやりきれる自信がなかったから行かなかった。
(HRにはついていけない生徒をドロップアウトさせる仕組みがある)

僕はHRのスタッフと一緒に仕事をする中で、
英語でプログラミングを学ぶということを少しながらやったのだが、
新しい概念を学ぶときに母国語が使えないのは、
少なくとも僕の英語レベルだと効率がとても悪いことに気づいたのだ。

【参考】
この経験があって、僕は本場で世界中の優秀な奴らに囲まれて、
プログラミングを勉強するという選択を止めたのだ。

さて、そうなると、残るは国内のキャンプを探すことだ。
前職でプログラミングキャンプ事情は日本人で指折りぐらいに詳しくなっていたので、
僕がどこに行くかを決めるのはとても容易だった。

それで、結論から言うと、
僕がgsに決めた理由は、起業向けのカリキュラムになっているからだ。

卒業制作という名の自分の起業アイディアのプロトタイプ制作ができ、
そのために、起業家界隈の各方面のプロの方がビジネスサイドも含めてフィードバックをくれる。

ちなみに、僕がgsに行く、と言ったときに、
「え?どこそれ?実績がないし止めときなよ」
みたいな反応の人が多かったが、
僕はそのありがたい忠告を例によって無視して今ここにいる。

実績がないのは当たり前で、まだgsは始まって二年ぐらいだ。
そこから世界で活躍するベンチャーが生まれるには、まだ時間が短すぎる。

また、HRが無名だった当時、
初期の生徒たちは、その圧倒的な実力にも関わらず、
学んだスクールのその名の知名度の低さが理由で、
採用面接で落とされるという苦い経験があったことを聞いていた。
(スクール名を伏せて、アウトプットで勝負するようにしたところ、
Googleなんかで採用されるようになった)

多くの人がよく勘違いしていることだが、
今実績がないことは、それ自体に実力がないこととイコールではない。
時間が経過しなければ、実績は出ないからだ。

僕はgsのカリキュラムを確認し、
起業という目的に合致した内容であることを確信した。

国内には、そうしたビジネスサイドも含めたフィードバックが得られたり、
自分の制作するプロダクトの方向性別に選択できる授業があったりする仕組みは存在しない。

これが理由だ。

これからプログラミングキャンプに行きたいと思っている方に、
フラットに伝えておかないといけないことが一つある。

僕の同期の中にちらほらいたのだが、
TechAcademyやTechCampに通ったが、
結局現場での力はつかなかったので、
ここに来たという理由で来た人が数名いる。

これは選択したコースの問題だと思うが、

アメリカのブートキャンプもそうなのだが、
日本でもちゃんと目的とレベルを見定めて行かないと、
二度手間になってしまうこともあるみたいだから、
十分な調査の上、通うことをおすすめする。

その意味で、僕のブログがその一つの参考資料になれば幸いだ。

【G’s Academy LABコース体験記】5日目

課題の提出と発表、およびjQueryの導入だ。

課題は素材と設計書をもらったLP的なのを、
自分でゼロから制作して、
余裕があれば追加開発をして提出するというものだ。

事前に前期生のトップの作品を見せられていたので、
いいベンチマークになった。

当然、それを超えることが一つの目標で、
僕は週末を開発につぎ込んだ。

そのベンチマークの作品に実装されていた機能とほぼ同じことは、
提出の二日前に終わっていたので、
ベンチマークとの比較から言って、
提出すれば一番自分が完成度が高いと思い込んでいた。

だが、発表の今日を迎えて、
それは僕のとんだ勘違いだったことがわかった。
僕よりも面白い、あるいは素晴らしい作品を作ってきた人は何人もいた。

ベンチマークはベンチマークにすぎなかった。

嬉しい誤算だ。

正直に言うと、自分より上の人が沢山いて安心した。

もちろん、自分よりも上を行かれてめちゃくちゃ悔しいのだが、
僕は自分が一番になった瞬間にだらける性格なので、
常に上に誰かがいてくれる方が好きだ。

(まあ、こんな偉そうなことを言っておきながら、
僕は何をやってもなかなか一位にはなれないのだが。 )

次の木曜までにjQueryまたはJavaScriptを使って追加開発をするのが次の課題だ。

僕はかつてHack Reactorの入学試験の対策を一ヶ月ほどやっていたので、
JSは少し分かる。

次はもう少しイケてる作品を作るつもりだ。

【G’s Academy LABコース体験記】4日目

企画の講義とワークだった。

講義の内容は、
僕達が卒業制作でプロダクトを作るまでに、
水面下で企画は進めなければならないという目的のもと、
いかに企画を作るかという話があった。

僕は毎日のように、好きで新規ビジネスの企画を考えているが、
改めてフレームワークで整理された内容を読んで、
頭の中が少しスッキリした。

ワークの方は、グループに分かれて、
代表者一人のアイディアをみんなでブラッシュアップし、
発表するというものだった。

僕はこの場は友人に譲ったが、
結論としては非常によい場だった。

ビジネスアイディアというのは、
思いついた当人には、過度にいいものに思えるものだ。

それを客観的に、
なんの問題を解決しているのか、
誰にどんな価値をどのように提供するのか、
などの当たり前の話を整理してもらえる。

僕は後日別の場でやってもらうことにしたが、
能力の高い、多様な人に評価してもらえるのは、
非常にありがたい。

特に、メンバーの中には、
すでに何度も起業した経験のある方も何人もいて、
そうした先輩方からコメントをもらえるのは恵まれていると感じた。

これからも積極的にアドバイスをもらいに行きたい。

【G’s Academy LABコース体験記】2・3日目

更新が遅くなってしまったが、先週分をサクッとまとめて書くことにする。

二、三日目は、他のブートキャンプとかでもよくあるように、
最初はHTML/CSSからスタートだった。

最初に準備として、テキスト・エディターが必要になったのだが、
元Googleのエンジニアの友人のMさんが昔おすすめしていたこともあって、
Sublime Text3を使うことにした。

gsではVisual Studio Code(VSC)を標準として使うことにしていたため、
僕はスキマ時間でいくつか自分で設定しないといけなかった。

大きくは2つで、VSCでは両方とも最初から存在する機能だ。
・subl コマンドの設定
現在のディレクトリのファイルを一括で開くために必要だ。
画面の左側にファイル構造が表示されるのだが、
Sublimeではターミナルで設定が必要だ。

調べながら途中までやったが、
結局コマンドを読み込むパスの設定が必要だということが分かり、
そこで止まっている。

・Sublime Package Control/emmetの設定
emmetというのは、プログラミングの予測ショートカットみたいなものだ。

これを設定するのに、
VSCでは画面で探してクリックするだけで
インストールが完了するのだが、
SublimeではPackage Controlというアドインをインストールしなければ、
それができない。

さて、以上2つをスキマ時間でなんとかこなし、いざ講義に入った。

フリーランスの仕事でHTML/CSSを最近やったばかりだったため、
概念はある程度理解していたので、
実践が大切になる時間だと僕は認識していた。

講義の進め方は、概念や全体像から入るというより、
とりあえず書いてみて慣れるスタイルだった。

ボックスモデルや、ブロック要素・インライン要素の説明は、
なんとなく触って分かってきた後に、二日目でされる感じだった。

これは好き嫌いは分かれるところだろうが、
個人的には全体像を先に知りたい派なので、
順序は逆の方がいい。

ここまでは多少知識があったからそんなにストレスがなかったが、
今後、そういう順序で出てくるということを前提に、
新しい知識に触れる心構えが必要そうだ。

また、ここでは全て包み隠さずありのままに僕が感じたことを書きたいので、
遠慮せずに悪いと思ったことも書く。

チューターの質が人によってアタリハズレがある。

チューターは、講師以外に僕達の質問を受けてくれる人たちだが、
彼らは僕達四期生の一つ前の代の三期生がスキマ時間で対応してくれている。

彼らは教えることのプロではないので、
ちゃんと教育しなければ、人によって品質がバラける。

僕自身、教える仕事を五年以上やっていたので、
どんな人が優れているとか、何をやってはいけないとかは、大体分かる。

その見地から言って、一番最悪なチューターは、
質問をして答えが分からないときに
「分からない」
と正直に言わずに誤魔化そうとする人だ。

プライドなのか何なのか、「分からない」と素直に言わない人がいる。

これは質問する側からすると、
実は面白いぐらいに透けて見えているものだ。

感じ方は人によるかもしれないが、
僕は別にチューターが全能だと思っている訳ではないから、
別に分からないことがいけないとは全く思わない。

ただ、自分が仮説を立てることが出来ないぐらい詰まっているのだから、
自分よりも経験豊富な立場から仮説を新しく立ててほしいのだ。

もし仮説すら立たなければ、それは仕方がないので、
その場で一緒に考えてほしい。

なのに、曖昧に誤魔化されると、
質問した側としては単純に時間を無駄にされただけになるので、
非常に不愉快だ。

チューター問題はどこのキャンプでも同じような感想を聞くので、
何ら驚くことではないが、まあ一定ガイドラインはあった方がいいだろう。 

【G’s Academy LABコース体験記】1日目

プログラミングブートキャンプは、
日本でもすでに乱立していて、
いずれはいくつかに収束すると思われるが、
僕はその中でも一つ、起業という目的にあった、
G’s Academy(ジーズアカデミー。以後gsと省略)というところで勉強することにした。

これは、僕が起業をするまでにgsで学ぶことの備忘録でもあり、
同時にこれから受講を考えている人にとって参考になる、
一人の体験記にする。

さて、初日の今日は、メインイベントは入学式と懇親会だった。

こういうのは、参加者のレベルが非常に重要だが、
個人的には非常に満足するものだった。

レベルが高いと言うよりは、
正確にはカオスすぎるというのが率直な感想だ。

僕が今まで出会ったことがない人種だらけだった。

無人島で半年間サバイバルした人。

起業して5つの事業でブルーオーシャン戦略で勝っている人。

1000km歩いた人。

オーストラリアのクロコダイルファームで働いていた人。

タンザニアで数学教師としてボランティアをやっていた人。

19歳で起業して、今はホールディングスのCEOをやっている人。

航空機の整備士だった人。

高校中退の18歳の若者。

…etc.

挙げればきりがないが、
こんな感じの人があと20人ぐらいいる。

人と違った面白い経験がないのは、
僕ぐらいだったんじゃないだろうか。

はっきり言って、僕の小綺麗な経歴は、
この中ではかなり奇異な部類だった。

こんな感じで、普通にしていればちょっと浮くぐらいの個性を持つ僕が、
完全に埋没するレベルの(いい意味で)動物園に入ることになった。

これから出来る限り、毎日の体験を書いていく。

もちろん、明日以降は学習の内容も記す。

「エクセルで今日の日付はtoday()だから、明日の日付はtomorrow()じゃないの?」と言った友人がいた

これは僕の友人Kが言っていたことだ。

本人は答えを知ったときに自分のミスに大笑いしていて、
その話を聞いた僕も笑ってしまった。

だがよくよく後で考えてみたところ、プログラミングとは何か?
という本質に迫る誤りだったことに気付いた。

(エクセルは汎用計算ソフトだが、
かなりプログラミングの要素を含む)

笑う人はどこがバカバカしいことに気づいたのか?

その答えはDRY原則だ。

DRYとは、
Don’t
Repeat
Yourself
の頭文字だ。

プログラミングの世界では常識だが、
同じことを繰り返し書くことはタブーだ。

なぜなら、繰り返しはコンピュータの最も得意とすることであり、
それを人間がしなくてもいいようにすることがプログラミングの目的だからだ。

それをプログラミングのコードを書くときにやっているようでは、
本末転倒もいいところだ。

エクセルの話に戻すと、
別にtoday()関数の代わりにtomorrow()という関数があるのならまだいい。

だが、両方存在するということは、
明後日も昨日も一年後もいちいち関数を定義しないといけない、
という構造になっているはずだ。

これこそDRYの原則を破っていることにほかならない。

繰り返さないで良いために、
軸となるtoday()を定義しておく。

そこからずらしたい場合は、
その数値から引き算なり足し算をする。

これが、DRY原則に則した考え方なのだ。

追記
エクセルに関しては結構書きたいことが溜まっているので、
また別の機会に全部まとめる予定だ。

17/8/24 一部文言を修正