今年もポエムの時間がやって来た

この記事は退職者アドベントカレンダーの14日目です。

昨日はえー、忘れちゃったのかな? 仕方ないなぁ。 一昨日は @mizchi さんの エンジニアのベンチャー企業の選び方/働き方/やめ方 - mizchi’s blog でした。 うーん力強い。

今までのアドベントカレンダーは前向きに、未来を向いた記事が多かったですね! なぜ自分が転職したのか、そして何をしていきたいのか、他の方の考えがわかってとても興味深いものでした。

残念ながら、私はあまり語ることがないため、本記事ではいつも通り ポエム を書きたいと思います。

以下、全てポエムです

(これ以上ポエムを増やすと、そろそろ Qiita から BAN されそうなのでこっちに書く)

略歴

  • アルバイトとして教育系 e-learning システムの Web アプリを PHP で書いてた
  • モバゲーブームに乗ろうとしたソシャゲ会社の最初の社員に
  • 色々あって大きなゲーム会社に吸収されることになった
  • Cocos2d-x の C++ を書くのが辛くなって Web 業界へ出戻り。とあるクラウドソーシングサービスの会社へ
  • 気が向いたのであったエージェントさん紹介の会社受けたら受かってしまった・・・(ここまでだいたい12年くらい)

最初のお賃金 (月額額面15万円) 、そして技術力 (プログラミングってなぁに?) から随分とたちました。私は元気です。

退職するためには就職することが必要。または、会社とは何か

多分、たいていの人は子供の頃の将来の夢通りには行ってはいないと思います。

小学生の頃の純粋な夢は、中学・高校を経て社会を学び、そして大学や専門学校に行くタイミングでどんな仕事をするのか 将来を見定めて行くのだと思います。

ちょうどティーンエージャーの頃、どうせならまだ人類がやったことないことをやりたいと夢を抱いていました。 そんなある日、ニトロプラスの “Hello,World.” に出会ったのです。

そこには、良い感じに自己学習を経たAIが、ネットワークに繋がれた機器を操りながらとても良く情報操作し、 そして人類を直接的にも間接的にも崩壊させようとする素敵な未来が描かれていました。

「すごい。これやれば、世界で初めて世界征服ができる」

そんな夢を抱きました。

人間機械論的には、やはり肉体がなければ完璧なAIはできないのでは? と考え調布駅前大学の知能機械工学科に進んで鉄を削り始めたのですが やはりプログラミングのお勉強も必要だと思い、アルバイトとして小さな会社に潜り込むことに成功。 coLinux の上で PHPLib を使って e-learning システムを保守し続ける簡単なお仕事からプログラマとしてのキャリアがスタートしたのです。

さて、どのように世界征服をするか。

当時、消えかけていた火として「ユビキタス」というキーワードがありました。 世の中には多数の組み込みOSがあり、携帯電話がどんどん進歩していき、W-ZERO3とか未来感がすごいし、周りにコンピュータは溢れる時代が来るはず。 それなのに「ユビキタス」が消えかけているのはなぜだろう。 そう、それは冷蔵庫に画面がついても誰も何も嬉しくないからに違いない。 何を表示するんだよ、そこに。 でも待てよ。冷蔵庫や洗濯機、掃除機についたコンピュータが協調して計算した結果が今つけているHMD上に表示される未来はどうだろう。 そういう協調計算を強くサポートするOSを作り、そのOSを組み込んだモノを買えば買うほど、計算が早くなる。 一つの端末、例えばTV画面の描画も家にあるコンピュータ群が協調してレンダリングする。 そうだ。これからは群れとして振る舞うコンピュータが活躍する時代だ! それをサポートするOSを作り、そこにバックドアを仕込もう。それを世界中に売りさばければ、俺は世界征服ができる!

こうして、本人も何を言っているかよく分からない、「群体コンピューティングを実現するOSを作って売る」という夢のステップができたのでした。

余談ですが、この時から大体8年後に知り合いから「それ Plan 9 じゃね?」と言われることになります。

ではどのようにOSを作って売るのか。一人で全てやるのは不可能です。会社を作り、仲間を集めることが必要でした。 仲間が必要という感覚、ちょうどあったベンチャー企業ブーム、その他諸々からの気づきを得られたのはラッキーでした。

人によって違うのですが、会社とは夢を見る仲間なんだと思います。

Company の語源が「一緒にパンを食べる人」からもきっとそういう考えの人はいるのでしょう。 そんなわけで、コンサルで有名な “McKinsey & Company, Inc” は「キンゼイさんの息子と(愉快な)仲間たちの有限責任法人」という日本語訳がしっくり来るかと思います。

仲間を集めると同時にお金も必要でした。そして色々なものが必要でした。 その時であったのが 総務省「事業計画作成とベンチャー経営の手引き」がすごい件 : 小野和俊のブログ だったのですが、 これがとても勉強になり、そして気づきました。

「学生起業、俺には無理だな」

仲間を集めて前に進む。社長って本当にルフィ。すげぇ。それが私の学生時代の結論です。

泥のように働くのってどうかと思う。でも、たまにはいいよね。

さて、会社を作るためにはまずは目の前にまとまった現金が必要です。なくても作れますが、あったほうが説得力が増します。実弾はねぇ、あるに越したことはないんだ。

しかし、学生の私がまとまった金額を用意するのは結構難しい。パチンコにでも行くか

そこで、まずはお金がなくてもプログラムさえ書ければできそうな、そして儲かりそうなサービスを作れないか思案する日々が続きました。 時は PHP5 がリリースされたあたり、はてなではナナロク世代に憧れたハチロク世代が元気に活動し、amachang 氏の JavaScript 力やそれが plagger でできるのを流行らせた宮川氏に憧れ、実力はないけど CodeRepos にとりあえず登録した、そんな時代でした。

そんなある日、私は Travian に出会ったのです。

そこにはインストールしなくてもすぐに遊べ、オンラインで繋がった仲間と非同期的に遊べる。 気軽に始められてそれでいてソーシャル要素が強い。そして3DCGとかそういう難しそうな奴が存在しない。 そういう未来のゲームの姿があったのです。

「これなら、俺でもワンチャン作れるんじゃね」

そんなことで、ブラウザゲーム開発にチャレンジすることにしたんです。

さて、最初のステップとしてブラウザゲーム開発を選んだのですが、いきなり起業はできません。 そこで、おもむろに FindJob を開き、人数の少ない順にゲーム会社に応募をかけました。

その中で未経験の学生(ひとまず休学した)にもかかわらず、フルタイムで最初の社員として雇ってくれたのが今はなき某社です。

その会社は新進気鋭の会社で、とりあえずそこそこのヒットを飛ばしたゲームと、 新規のモバイルでゲームができるプラットフォーム向けプロジェクトが3つほど走り始めた。 そう、とりあえず目の前には rails new したコードと何を作るかは決まってないけどいつ5ヶ月後にリリースすることだけは決まったプロジェクトがあったのです。

はっきり言いますが、こんなに楽しい状況は未だかつて経験したことがありません

  • リリースしなければ終わらなければ死ぬ、みたいなプレッシャー
  • 技術的には決まっていないので、決めていい権利
  • Rails 便利。とりあえず怪盗となり友達のお宝を盗むみたいなゲームのコピーがすぐできるあの感じ
  • 盛り込む仕様、そして仕様変更。rake db:migrate 本当に便利
  • 結果、発生してしまう技術的負債。そして後から入ってきた人に dis られるあの感じ
  • jpmobile 便利
  • PF の API ライブラリが無い? なら作るんだよ!
  • API が通らない? tcpflow 使って生データ見るんだよ!
  • 認証が通らない? RFC 見るんだよ!
  • 携帯ブラウザ CSS 使えないけど、見た目の管理には class を当てるしか無いから、いい感じのマクロっぽいなんとかを用意
  • デバッグモードやマスターデータの取り扱いは初期に決めておかないとチューニングできなくなるから注意
  • 初めての運用フロー
  • ブランチ運用を真面目に考えないと死にます。特にソシャゲはイベント運用があるので、通常のフローだけだとイベントマージするときの差分が大きすぎるので注意
  • リリース前に KPI は取れるようにしておきましょう。離脱率とか離脱ポイントとか、継続率とか。
  • 負荷対策しないと本気で死にます。
  • 「とあるアプリの開発運用」のわかりみ。
  • ken_all.csv はなぜこうなったのか。
  • コロニーで生活する位置ゲーすごいな
  • Flash Lite の合成は、なんとかできる
  • 人が増えてきたからチームを分けないと詰む
  • えーい。毎週定期リリースだ!スプリントだ!スプリント!
  • ずっとスプリントしたらチームが疲弊したでござるの巻
  • イベント関連コードがずっと残るんですが、これ、どうするんですか?
  • 人の運用むずすぎワロタ
  • もう Rails 4 が出たんですか。ドラスティックすぎますぅ・・・

みたいなことがざっと2年弱で全部できたのは、振り返ると 最高の体験 でした。 (またやりたいとは言っていない)

ゲームを作っていたからこそ、現実もゲームに似ているように見えるのでしょう。 このころは、次から次へとボスが登場し、なんだかんだで乗り切っていくことで自分の経験値が積まれていく、みたいな感覚を抱いたものです。

あと忙しくなるとインターネットがマジで見られなくなる。

うまくいくと思った? ぷぷぷ。本厄なのにうまくいくはずないじゃん。または挫折との向き合い方

ガラケーという限られた環境・ブラウザにおいてどんなゲームが面白いのか? ある人は「ソーシャル要素」に光を見出し、ある人は「ギルドバトル」に光を見出しました。 位置情報でバトルをするのがいいんじゃないかとか、育成しあったものを見せ合うのがいいんじゃないかとかアバターとか。 いろんなアイディアが出てきて、その度に実装をしていたのがこの時期でした。

しかし、逃してはいけない。そんなアイディアがドラゴンをコレクションするゲームで完成し、 それを逃した会社はユーザと一緒に同僚も離脱していくことになったのです。 ギスギスオフラインをプレイする権利をやろう。

さて、アプリをクローズしたり、目の前に負債の山があったり、今週も人が辞めたり、ボスと音楽の方向性の違いを感じたりしていると、どういうわけか全員が敵に見える不思議な現象に陥りつつ、周りのテンションを上げるために行動をせざるを得なくなるという状態に陥ります。

気分は躁鬱。

「挫折との向き合い方」なんていう副題にしていますが、私には今でもこのときどうすればよかったのかがわかりません。

ただ、一つ言えるのは環境が変われば、なんとなく、全体的に回復します。

大きな会社にはダメなところもありますが、いいところ、そしてすごい人がいっぱいいます

いろいろなものをクローズしていった時、たいていの場合は人生をクローズする前に会社がクローズされます。そういう時は、人生のクローズの前でよかったと喜びを噛み締めるといいと思います。

さて、色々あって大きな会社に残りのメンバー全員がドナドナされていったのですが、大きな会社は色々窮屈です。 例えば自由にサーバを構築できません。当たり前ですね。

もしサーバを構築したいのであれば、適切なワークフローを申請し、上長の承認をとった上で4営業日ほど待つと、よくわからない設定のよくわからない Linux がよくわからないところから来ます。まぁ、クラウドのようなものです。 入社した人がその日から Linux 開発環境の EC2 インスタンスが使えるように AMI を用意したり、全員が同じ環境になるように AMI を用意して、どんな設定をされているか、ホームディレクトリに資料が用意されているように AMI を最新に保ち続ける作業をするのに比べたら、雲泥の差です。

さて、そんな大企業ですが、全員一人親方だらけのチームだったベンチャー企業と比較すると、専門家が実に多いという特徴があります。

アプリケーション書くエンジニア一つ取っても、言語知識や FW の知識は幅広く、なんというか、すげぇ。 そこには層の厚みというスケールメリットがありました。 ほら、俺たちだって Web サーバと DB サーバは本番では分けるじゃん? なんでもできるサーバは、状況次第ではいるけど、まぁいらなかったんや。

大企業には色々な人が集まっているので、バックグラウンドがとても多様です。

なかなか、小さなスタートアップにいると出会いにくい人たちの一人が、「尊敬できる先輩」ではないかと思います。

特に、スタートアップに行くような人間なんて、大抵の場合は生意気で、自分ならなんでもできると心のどこかで思っており、多かれ少なかれサイコパスみたいなもんです(異論は認める)。

さて、そんな中あった一人に生涯現役を標榜する30代後半の先輩がいました。 その先輩から教わったことは色々ありますが、長くなるのと、何よりも私がこの記事を書く力が尽きかけているので一つだけ紹介しましょう。

私は未だにあまり上手くはできませんが、上手な会社の辞め方です。

そもそも、人は会社を辞めますし、会社だってそのうちなくなります。 出会いがあれば、別れは必ずあります。

そして、環境次第で人は良くも悪くも見えます。

ですので、音楽の方向性の違いはあっても喧嘩別れはよくはありません。

彼は彼の情報を元にそう判断したのであり、私たちにには見えない情報があったのかもしれませんし、 自分も同じ立場ならそうするかもしれません。

もちろん、我慢しろってわけじゃありません。

そういう時は、お互い一緒にいることが得にならない。だから、この船を降りる話をスマートにすれば良いだけです。

いつかのボスはいつかの同僚になるかもしれませんし、いつかの同僚はいつかの部下に、いつかの部下はいつかのボスになるかもしれません。

そう、私たちが一緒に働く人たちは、同時に将来のお客さんになり得るのです。

だから、辞める時は「立つ鳥跡を濁さず」に。また、で戻ってこられるように前向きに別れるように、ダラダラせずにスパッと別れましょう。

(ただし、客を選ぶ権利はある)

さて、そんなこんなで楽しかった大きなゲーム会社ですが、サーバサイドは大体やりきったので辞めることにしました。 アプリ? C++ 向いてる人ってこの世にいるのかね?

若い会社って、優秀な若い人多いよね

4社目は若い Ruby on Rails の会社でした。 このころにはもう Rails は洗練されていて、最初から CI やテストは全部組まれていました。Ansible もあるよ。 若手イケイケのベンチャー企業には、どういうわけか若手の優秀なエンジニアがいっぱい来ます。

とても刺激をもらえるし、楽しい時間は過ごせます。

特に目をみはるほど優秀な年下に初めて詰められるのがこの辺の年代(30歳になったあたり)です。

いよいよ俺も老害かと思いつつ、すっと抜かれるのも、悪くはありません。 マラソンで言えば、ちゃんと道を譲るのが先を走った人の務めでしょう。

また新しいビルドツールが出たのか。フロントエンドは早いなぁと言いながら、とりあえず公式ドキュメントを読みに行って、彼らが何を解決したいのか 新しいツールの気持ちになる技術がこの辺りから身につき始めるかと思います。

あー。Webpackさんは、部分ロードしたかったのね。と、そんな気分で若者のいうことを聞くのが一番でしょう。

あとは、彼らに「最近どんなのが流行ってるの?」と聞くと、色々教えてくれます。やったね!

まぁ、なんだけど、楽しい時間をだらだら過ごすのは良くないよね。 楽しかったから、つい3年も過ごしてしまった。

元ボスにも「知識の貯金で仕事してるよね」と言われちゃったけどやっぱり新しいことを。そう。サーバサイドならシステムプログラミングやったり自分でサーバ書かなきゃね! そんなわけで、転職することになったんだ。

自分が本当に求めていたもの

Project Cartoon によれば、顧客が本当に求めていたものは豪華なブランコではなく、単にタイヤを紐で吊るした、簡単なブランコで十分でした。 では、私は何がしたかったのでしょうか?

最初の私は、完璧なAIによる世界征服が目的だったはずです。

思えばあれから遠くに来た気がします。いつ夢を忘れたのでしょう。何がしたかったのでしょう。 私にとってのタイヤブランコは何だったのでしょう?

よく考えたら、単純だったんですよ。 ただ、自分の作ったもので周りの人が喜んでもらいたい。それだけでした。

そういう意味で、プログラミングは天職です。 料理や工作、ライティングに絵を描く、様々な方法はあります。 ですが、職業として成り立ちつつ、 気軽に始められ、初期投資が少ない上に奥深い。 そして、どんどん新しいものが出て来て、勉強先に困ることがありません。 プログラミングはそういう特長があります。

おそらくこの記事を読まれている方はパソコンを使われているかと思います。 プログラミングは今日、この瞬間からでも気軽に始められます。 いかがでしょう? まずは “Hello, World.” から初めて見るのは。

作りたいものによって最適なプログラミング言語は異なるので、いい言語紹介できないや・・・

特に作りたいものがないなら、とりあえず Go が一番いいと思います。 A Tour of Go のおかげで、環境そろえなくても動かすことできますし 何よりシステムに近いので、これやってから他言語に行くと、多分、楽にしか感じなくなるので。

なんか結びが残念なことになったなぁ。

あと誰か css くれ