初歩からの無職

プログラミング未経験の超初心者がハッカー養成塾なるものを受けてきた

    こんにちは。プログラミングに興味はあるけど、なかなか自分でコードを書くまでには至らないたねのぶです。昨日はギークハウス系のスピンオフ(?)的なコワーキングスペースのギークオフィス恵比寿で開催されたVimとMEANスタックを主軸としたハッカー養成塾に参加しました。初回3000円なのに2000円しか持っておらず、早速1000円を未納するのというダメ人間っぷりです。申し訳ございません!次回必ず!

    ハッカー養成塾って何?

    怪しげなタイトルに見えるかもしれませんが、何もサーバーをぶっ壊す兵隊を育成するわけではありません。Wikipediaによると主にコンピュータや電気回路一般について常人より深い技術的知識を持ち、その知識を利用して技術的な課題をクリア(なかったことに)する人々のことであり、要はそういった技術を身につけようという勉強会です。決して僕が中二病になったわけではございません。

    プログラマ養成講座ではない

    初心者にプログラミングの方法や知識を教えるだとか、単にMEANという構成を教えるものではないということでしょうか。とにかく尖ったスキルとテクニックを身に付けるハードな内容で、常に新しい技術を習得し続けるような素養を身につけるもののようです。今回はたまたまMEAN的な。

    大体こんなんやるらしい

    大きな流れとしてはVimのエディタの使い方を学びながら、MEANのサンプルアプリを習得した後、実践課題に挑戦するというものらしいです。

    MEAN Stack

    LAMPに代わる構成として注目を浴びている最高にナウでヤングな構成らしいです。MongoDB、Express、AngularJS、Node.jsの頭文字でMEANです。プログラミングちんぷんかんぷんの僕でもなんとなく名前は聞いたことある面々ですね。内容は教えてもらってないのですが、調べた限りすべてJavaScriptで開発可能でJSONフォーマットでやりとりできるってところがミソなんでしょうか。WebサービスのAPIもJSON形式で提供されてたりするし、そういう点で開発しやすのかな...?僕はまだMEANについてはまだ何も分からないので、この点は勉強を重ねるごとに見えてくるでしょう。

    Vim

    エディタはVimです。超高速でプロトタイピングが出来る人を養成するのが目的なのでエディタをしっかりと使いこなさなければなりません。僕はVimはVPSサーバーをいじる時にちょっとだけ触っていますが、GUIでいちいち操作するよりも確かに早かったです。塾でもちょっとだけ触りをやりましたが、カーソル移動は禁止でhjklでの移動です。理由はホームポジションから遠く効率が落ちるから。徹底してます。なぜ他のエディタではなくVimなのか?という疑問は宗教的な争いに発展する可能性があるのでしちゃダメです。

    タッチタイピング&スピード

    タイピングっておいおいパソコン教室かよ!ってツッコミがありそうですが、上でも書いたとおり超高速を目指すわけです。ハッカーと呼ばれる技術者達がなぜGUIではなくて黒い画面で文字を打ち続けるかというとそのほうが早いからです。一日中キーボードの前にいても、何も見ずに確実に数字を打つのって案外難しいです。

    心構え

    ひとつは自己学習で、とにかく問題にぶち当たった時に解決するのは自分です。先生が色々知識を打ち込んでくれるのではなくて、解説や実演・質疑などで自己学習を助けてくれるものだということでしょう。当然といえば当然ですね。ドキュメントを読め。これはイコールで英語読めるくらいにはなっとけってことです。基本的に日本語の情報より英語の情報の方が早いし多いし詳しいです。プログラミング全然やらない僕でもこれはとても実感してて、色々Wordpress周りでハマった時も全然情報なくて一番上の英語のページ頑張って読んだらあっさり解決とかよくあることでした。ソースを読め。ライブラリは便利だけど決してブラックボックス化しちゃダメっていう話がありました。ライブラリ自体の良し悪しもあるし、同じような理由でStackOverflowのような質問サイトも不適切な解答があったり、また時間がたてば適切ではなくなることもあるから、常に自分がつかってるソースを把握しておくようにするべきだそうです。

    ハッカー養成塾 初回の流れ

    初回は講座のオーバービューの確認と環境構築です。

    参加者

    プログラマ、マークアップエンジニア、フリーランス、大学生、ギークハウス運営者、そしてニート(僕)など。Macが一番多くて、WinとLinuxの人もいました。技術レベルはバラバラで、多分僕が一番レベルが下です。ついていけるかどうかという問題もありそうですが、参加者全体のレベルを揃えてから次に進むわけではなくて、各々のタスクを進めていく形式のようなので、ひとまず僕の心が折れない限りは大丈夫そうです。頑張れ自分。

    Node・git・MongoDBをインストール

    以前、Gitをインストールした時があってその時にHomebrewを入れてたので、ここはターミナルに打ち込むだけでできました。塾生全員が一斉にダウンロードしたので回線がお祭状態でしたが特につまずくことなくクリア。

    サンプルアプリをクローニング

    ここもおまじないを打ちこむだけで特にハマることなくクリア。

    MongoDB起動

    ここでハマる。色々試行錯誤しているうちにMongoDBがどうしても起動しなくなってしまった。old lock file, terminatingというエラーが出たので調べる。mongodbが起動しない場合の対応(old lock file, terminating)を参照して解決。MongoDBは起動時にmongod.lockというファイルを作成し、終了時にそのファイルを削除するらしいのだが、僕の場合一回ハングして強制終了したため、lockファイルが残ったままで起動ができないというものだったので、mongod.lockファイルを削除する。これでいける!!って思ったら次はaddress already in use for socketというエラーメッセージ。なんかすでに使っちゃってるよっていう意味合いはなんとなく分かる。Fixing: Mongodb – Address already in use for socketというドンピシャなページがあったので参照。(やっぱ英語は必要だ。)MongoDBのプロセスをKillして解決。

    NPMインストール

    Node向けパッケージ管理ツールのnpmをインストール。npm installと打ちかっこ良くreturnキーをうつも「npm not found」。周りの人もこの症状の人が多くて、どうやらbrewでNodeを入れた人はnpmが入ってないので別途インストールが必要ということでした。僕はNPMがNotFoundって言われた時にしたことを参照して解決。追記:npm installはNPMの依存パッケージをインストールするもので、npm自体はすでにインストールされているとのことでした。ご指摘ありがとうございます。

    Codebreakの設定

    今回はPrivateなリポジトリが必要なのでCodebreakを利用するってことなのかな。アカウントを作成し、今回のコース概要の資料をローカルにクローニング。サンプルアプリのpush先を指定して初回の環境設定は終了しました。めっちゃハマりまくりましたが初心者でもなんとか出来ました。

    Vimをちょっと触る

    Vimの触りをちょろっと解説してもらいました。キーボードはもちろんのこと、ホームポジション内で完結するのが理想。この辺のスピード重視した感じはゲームライクで結構好きです。カーソル移動がhjklじゃなくてWASDならゲーマー歓喜なのですがwとにかく練習あるのみですね。

    初心者が参加しての感想

    hajuku2

    プログラミング初心者だけどターミナル弄ってて本当に良かった

    プログラミングは全く初心者だったのですが、VPSサーバーをいじる関係でターミナルは結構使ってたので環境構築は案外スムーズにできたのかなと。ありがとうドットインストール。

    やっぱMacは良くできてる

    今回環境構築でWin機は結構手間がかかるのかなと思いました。僕も実家のWin機で開発環境を作ろうと思ったけど煩雑すぎて放り投げるくらいだったので、やっぱUNIX系のシステムはプログラマ向きなのだなぁと。特にMacはHomebrewを予め導入しておけば、コマンド打ち込むだけでインストールが終わるので本当に楽です。これからチャレンジする人がいたらMacboook買ってHomebrew打ち込んどけば間違いないと思います。リンゴ万歳!

    MEANは非プログラマの取っ掛かりとしてはかなりいい選択肢なのでは

    まだ全然中身を理解してないんですが、JavaScriptで完結するとか結構親近感があるワードです。元住吉のボスも取っ掛かりにいいんじゃない?って言ったましたし、どうもLAMP環境使いこなしてる感ない人は勉強してみるといいのかも。

    初心者のニート、次回以降も受ける模様

    というわけで、すごい方々に混じって初心者のニートでも参加できました。ギークハウスのつながりって本当にすごい。次回もご迷惑をお掛けしますが、よろしくお願いします。