気づいたらプログラマになってた話
@mizchi / Quipper自己紹介
@mizchi- 竹馬 光太郎
ソフトウェアエンジニア / Quipper
まず名古屋方面へ
自分について
よく燃えるブログ
うるさいTwitter
経歴
- 2008
大学入学(文系)
- 2012.3~
Aiming ゲームエンジニア(フルタイム)
- 2013.9~
Quipper ソフトウェアエンジニアに中途転職
- 2014.3
学部6年生で大学卒業
来年度から業界3年目の新卒????
それはさておき
大学時代にやってたこと
- 最低出席日数を確保し、
- サークルへも入らず、
- バイトもせず、
- 家にこもってTwitter
- 家にこもってゲーム
- 家にこもってプログラミング独学
- ↑ これの話する
当時(2008年)のTwitter
- ほとんどエンジニア
- みんなリテラシー高い(非エンジニアもすごい)
- なんか楽しそうだしプログラミングやってみるか
大学以前のプログラミング?っぽい経験
- 小6: HTML手書きでホームページ作った
- 中学生: エロサイト閲覧バレてPC没収
- 中学生: 親のPCをクラックしてAdminを奪取
- 浪人: ニコ動のランキング工作してた
- プログラミングそのもの経験はなし
工作対象
プログラミング学び始めて、最初にやろうとしたこと
- 「TIGっての使えばTwitterのログが取れるらしい」
- 「うぶんちゅってのがかわいいらしい」
- 「さくらのVPSってのが安くていいらしい」
よくわからんがとにかくやるか!
結果
発狂した
- GUIの設定画面なんてない!
- 操作の名前を知らずに気合でググる
- シェルコマンドをコピペして発行
- もちろん動かない(ニッコリ)
- Perl??? SVN??? sudo??? apt??? aptitude???
「ギーク達」は教えてくれない
- 自力でやるしかない…
発狂した結果
学び
- シェルコマンド覚えた
- ググる体力を得た
- 何度もやってりゃいずれ成功する
気を取り直して…
- ここまでやったんだから、はやりのウェブアプリとか作ってみたい
- 「Ruby on Rails ってのが簡単にアプリ作れるらしいぞ!」
- 「Plaggerっての使えばピザ頼むの自動化できるぞ!」
結果
発狂した
- 当時のRailsは v1.2 → v2.0 の移行期で情報が混乱(当時気づけず)
- そもそもWAFってなんなのか知らなかったので生成コードがわからん
- PlaggerではCPANの依存地獄をみた
- id:miyagawaウェアへのトラウマ
ここで一旦飽きる
- 定期的なEmacsいじりが趣味になる
気を取り直して…(大学2年頃)
- 俺はそもそも何も理解していない!という理解に至った
- 小さい環境から再出発
流行ってた集合知プログラミング読んだ
- Python気に入った
- 集合知アルゴリズムについては忘れた
- 基礎体力欲しくてプロジェクトオイラーをPythonで解いた
どんどん言語が手に馴染むようになる
- 脳への負荷が小さくなった
- 他人の作ったライブラリと組み合わせるの楽しくなる
- 自分の書ける程度のコードが、いかに再生産されてるかを知る
- Googleの人のコード読んだ
世界が開けてくる
- 適切にモジュールを組み合わせると、なんでも作れるという実感
やばい
なんかプログラミング超楽しい!!
自分の中でブレークスルーが起きたという実感
- 何が楽しいのか、それまで正直よくわかってなかった
- みんな(Twitterの連中)が楽しいというから、きっといつか楽しくなる、という期待
- モチベーションを自分自身で生み出せるようになると、そこから速い
「勝ったな」「ああ」
その他、個人的なブレークスルーの実感
Python/Flask/MongoDBでウェブアプリ構築(Python)
- Python
- HTTP
- OAuth
- SessionとかCookieとか
- データベースプログラミング
事例. 一人でnodeでMMORPG構築
- 某社のエントリー用に作った
- node.js
- coffee-script
- socket.io/websocket
- 経路探索
- アフィン変換
- 大規模JavaScript
事例. チームでUnityのゲームをHTML5に移植
- はじめてのチーム開発
- 設計とパフォーマンスの両立
- 納期との戦い
事例. TypedCoffeeScriptの開発
- コンパイラ設計
- ASTぐりぐり
- coffeescript互換目指す → coffeeのテストコード落とすと死ぬ
「最初の」ブレークスルーを起こすために
- 基礎を抑えて脳の負荷が下がった頃に起こる
- 苦しんだのは無駄じゃない!!!
- モチベーションを自分自身で生み出せるようになると、そこから速い
誰しも「自分だけの」「特別な」ブレークスルーがある
- 共有できない / 共有する必要がない特別な体験
- いつか目が醒めると信じる
次の段階
- ブレークスルーを「短期間で」起こす
- 手を動かして、はてブの「便利」っていってるだけのやつと差をつける
たとえば今日のスライド
bespoke.js使ってみた
- これ
- bespoke.jsを使ってプレゼン資料を作成する - Qiita
- エフェクトはかっこいい
- jadeで直接マークアップ正直めんどい
keynote最高!!!!!
まとめ
- 手に馴染む言語を持とう
- プログラミングは面白いと信じろ!
- プログラミングは金になると信じろ!