Dream of Engineerings

yuya_prestoの非技術ブログ

自分の技術的ルーツ

以下、(エンジニアが言うところの)ポエムです。技術カラー強すぎてごめんなさい。

下記は前職の元(上司の)上司の方の投稿なのですが、もう思うところしかなくて。自分も同じように書き始めてしまいました。

広木 大地 - 自分がプログラミングを覚える前に、初めて家にwindows95のパソコンが来て、自分のものとして使って... | Facebook

遊びの延長で仕事を受けたらお金もらえたし、これじゃヤバイのかなと思って、力仕事や単純作業系のバイトもしてみたけど、全く面白くなくて、結局教えることくらいしかおもしろいことはなかった。 社会人になると、遊びに近かったことが全部基礎体力になってた。 たいていの遊びよりはるかにおもしろい学習ってやつを「つまらないもの」って偏見を植え付けて、辛いことに耐えることが正しい価値観だと植え付ける装置が学校だと感じた。 たまたま、俺はそれよりおもしろいものがあって良かった。

小学生のころ

どうしても暗号化ソフト(なぜ?)を作りたくて、最初は暗証番号を入れるだけのやつを作り、でも生データ見れちゃうよねって思ってボタンポチポチで発見したVBA(オフィスについてるBasic)作ろうとしたのが最初だった。確か友達の家のPCでやってたが、その後家にWindows 95のPC(懐かしのDESKPOWER、HDD 2GB)が設置されて自分の方向性が確定した。

記憶に残っている限り自宅のPCではdllやらexeやらポチポチしていて、親いわく何度もリカバリしたらしいが怒られた記憶がないし、そもそも当時のPCをそれだけ自由に使わせてくれた親には感謝しかない。あとおじ?に懐かしのNorton Utilitiesやら強そうな装備をインストールしてもらいさらにシステム感がパワーアップしましたとさ。

中学生のとき

ちゃんとプログラミングしようと思って(暗号学とかの知識もなく)HSPという言語で雑な暗号化フリーソフト作って懐かしのVectorに載っけたらPC関係の雑誌の新着欄に載ってすごい喜んだ。 (あ、今思い出したけど、雑誌は親が買ってくれてエロい2次元コンテンツがあるところはホチキスされてたww 興味なかったけどw)

同じ頃、今は亡き金子さんが逮捕されたニュースを聞き、技術的にすごいと聞いて興味が湧いて自分でもP2P的な通信ソフトを作ってみようとした。できそうじゃん?という"根拠のない自信"だけを頼りにイントラネット上で隣り合ったホストにつなぎ合わせてリング型の通信路(無意味じゃんw)を作ってチャットする実験を、パソコン授業の自由時間に同級生のPCに配って繰り広げて、そのときの先生には褒められてたな。

残念ながらITな仲間がほぼいなかった。「私のしごと館」の職業体験で「プログラミング」を選んだら最少催行人数を下回ったのをよく覚えてる。だから高校で仲間を見つけようと思ったんだった。

このころ社会の先生の前で学校のPC使ってたら「何か悪いことしてないだろうな?絶対にダメだからな??すんなよ???」みたいに前のめりに言われて冷ややかな目線を送ったのはいい思い出。

高校生のころ

自作PCが全盛期で、無料のレンタルサーバ(たぶん自宅)を借りてHP作ったことが転じて、自分も入学祝いをかき集めて自宅サーバで無料レンタルしてた。PF-X.NETという有名な無料レンタルサーバがあって憧れてたんだけど、最近終了したみたいで哀愁を感じる。10年以上の運用、本当にお疲れ様でした。

それが発展して、当時のWindowsじゃうまくいかないこと(権限管理とか、安定性とか)をLinuxでできると知ってFedora経由で(最適化こだわりすぎて)Gentoo Linuxの世界へ入っていき、ドキュメントの日本語訳とかを少しだけやった。このころ(10年近く前)カーネルの設定をいじくっていて見かけた"cgroups"が最近になって仮想化のLXCとその上で動くDockerに化けたことを考えると胸熱。

(人生で一番低レイヤな事やってた時期なので読み飛ばしてください・・) 自宅でやるレンタルサーバでも高信頼を実現するにはと考えて、HAや負荷分散のストレージ層〜ネットワーク層〜OSをいろいろと調べたり実験したり。 例えば、Apacheはsuexec(共用サーバ向けに、ディレクトリごとにCGIを実行するユーザIDを変える)はmod_phpだと使えない(ApacheのユーザIDになる)ので、mod_fcgiを改造してFastCGIとsuexecを組み合わせて解決しようとしたり(ここでC言語大量に読む)。自宅だしサーバいつ落ちてもおかしくないので、DRBDでホストをまたぐRAID1を組んで、その上にRedHatのGFS(not Google)という複数ホスト同時mount可能なファイルシステム載せたり(今考えるとどうみても無茶w)。DRBD的なものは今Amazon RDBに使われてるようなのでこれも胸熱。

あとなんかYahooチャットに出入りしてて、荒らしと業者がいっぱいいたから拙い対策ソフト作って純粋にすごいとほめられてうれしかった(主さん、元気にしてるかな・・)。

残念ながら高校ではスクールカースト最下層という感じで、「ハッカーと画家」に出てくる学校生活みたいなものだった(追記:オーケストラ部は楽しかったぞ)。P2P地震情報というソフトのチャットルームが転じた2chIRCに入り浸っててオタクランゲージになってたのは否めないけどw エンジニアを志してる人は見つけられず、仲間を大学に求めるため、あるいは高卒で就職するために休み時間も基本情報や入試の勉強して、基本情報は2年のときに合格した。この頃の気持ち↓

学校に絶望して自ら孤立を深めてた3年の暮れに先生と基本情報について話してたとき、(誰だったかは忘れてごめん)クラスの女子にこんな感じのことを言われたんだ。「そんな難しい資格取ってたんだ。すごいやん、頑張ってたんだね。」 人間って単純でほめられたらうれしい。やってきたこと間違ってなかったんだという気持ちになったよ。ありがとう、本当に。(あと、このころ孤立を解こうとしてくれてた女子陣にも感謝してる。)

このころの情報の先生兼オケ部の顧問にコンサートのチラシをInkscape?で作って持ってったら、英単語のミスを頭ごなしに否定されてWordかなんかで同じやつを1から作り直されて、プライドか何かですかーと思ったのもいい思い出(先生、授業中になんか言ってた基本情報技術者、在校中に取りましたよ)。

大学生のとき

前半は残念ながらまた情報系仲間には恵まれなかった。情報工学科なのにプログラミング初心者で書けませんという人が多かった。RDBの授業の進みが遅かったので、同志社ローム記念館プロジェクトPHP+MySQLでシステム作るやつの内職してたら後ろがざわついたり。また休み時間も勉強して今度は応用情報とネットワークスペシャリストに連続合格したり。ちなみにyomeとの出会いもプロジェクト。家が二人とも大阪で、はじめて一緒に帰った日に応用情報のガリ勉に付き合ってくれたことをよく覚えてる。

あああと、そのPHP+MySQLのシステム作ったことで自分のWebフレームワークやきれいなコード、汚いコードに対するセンスが身についたかもしれない。プロジェクトでの開発をサポートしてくれてた企業の方から「(知識がない)他の人がわかるように(フレームワークの機能を使いすぎない)簡単な書き方をしよう(=O/Rマッパのクエリに生SQL書こう)」と言われたけど、本当の簡単さはその機能や仕組みを学習し、(複雑すぎない範囲で)それを活かした設計・実装をすることだ、とこのとき理解したんだ。

同志社ローム記念館プロジェクトでは他にもNyARToolkitを使ってARの展示やったり、ペイントで色を塗りつぶしたらその年のMVPが浮き上がる画像を作るソフト書いたりしたっけ。

その他にも、(一部高校かも・・?)負荷分散、特にL3, L7ロードバランサとかDSRとか調べまくってた。そのころ気になってたVIVERを作ってた古橋さんは今ではfluentd、msgpack、Treasureな世界に名だたるエンジニアなので尊敬しかない。LinuxTCP/IPスタックを書き換えて特殊なパケット使えばL7でもDSRできるようになるんじゃとコード読んだりしたけど、ちゃんと勉強してボツに。流れで、TCP/IPにハマって詳解TCP/IPを借りて熱心に講義を聞いてると、このときの先生は(研究者になると思ったようで)とても丁寧に教えてくれた。それで最終的にネットワークスペシャリスト受けたんだけど、試験の当日の早朝にLinuxマシンでスパニングツリーを実験してみて動いたー!とかやってたら、それが問題に出て合格したり。3年くらいのとき、バイト?の翌日にテストに遅れて、少し前に(お金なかったし)大学院行きませんって伝えてたこともあってその先生には勘当?されちゃったけど。

このころはセキュリティの勉強会のまっちゃ139にお邪魔したり、オープンソースカンファレンス見に行ったりしてた。91世代という界隈グループで城崎温泉行ったり、ネットワーク関係勉強してるって知った先輩が、京都大学(今は立命)の先生を紹介してくれたり。どこで知ったかセキュリティキャンプの卒業生がすごいぞと思って、仲間作りたいと思ってキャンプに当時あったプログラミングコースのLinux組で参加したりもしたけど、事前にSNSで連絡取ってなかったり当時のコミュ障であまり仲間に入れなかったのが無念。。でもLinux Kernel Watchが大好きで"がちゃぴん先生"こと小崎さんに会えてめちゃくちゃ感激したのはよく覚えてる(ビュッフェでおいしそーと言ってたおかずの最後の1つ取っちゃって「ぎゃーー!!」と言わせてごめんなさいでしたw)。

ここでエンジニア人生の転機が訪れる。入学する前は技術のニッチ性もあってがっちりしたシステム系の会社に行くと思って「デスマーチにならないためのソフトウェア工学だ」とか謎に思ってたけど、ある時そういうガチガチさなしで華麗にWebサービスを作る id:r7kamura の姿を見て未来はこっちだって思った。r7kamuraは前述のプロジェクトの1つに参加してたのだけど、そこではみんなでソースコード書いてて、ようやく仲間感がで始めた(もうその頃には開き直って一匹狼で戦うことを覚悟してたけどw)。そしてそのメンバーで和歌山・白浜でやってる情報危機管理コンテストで優勝もぎ取ってきた。

このころのサーバが起動しなくなった〜どうすりゃいいんだ〜〜とか頭抱えてた研究室の先生に「それLive CDとかでなんとかなりません?」と言ったところふてくされた顔でスルーされた(けど直してた)のもいい思い出。

社会は厳しくない、むしろ優しい

社会人になってからはもう任されるままに好きなだけコードを書き続けた。最初の先輩が優しくて好き勝手やっててもなんでも相談してくださった。最初の上司も、その次の上司も、さらにその次の上司も、そして最後の上司と会長も、仕事に関して自由を与えてくれる人で特に技術に関してはすべて任せて頂いていた。技術研修では冒頭の元(上司の)上司に、リーダブルコードやらOOPやらの手ほどきを受け、その内容で自分のコードの「良さ」を見る目に対して一つの基準を与えていただいた。それからひたすらVimの設定書いてみたり(1500行近くなったのに今じゃAtom教・・)。VimやらAndroidやらの勉強会参加したり。JSをレビュー(怖い人だったらしく・・ごめんなさい・・w)しまくったり。Qiita書きまくったり。チームメンバーの「これやってらんねぇ」を聞いてXcodeプラグイン書いたり。切磋琢磨する仲間にも出会えた。

この時点でもうなんの壁もなかった。最初の少しまとも?なプログラミングから10年、ようやく自分の欲してた環境に身をおくことができた。10年という時間はどれほど長かっただろう。大学生は夏休みとか、社会出たら好きなことできないとかいうけど、むしろ社会出てからのほうが好きなことをできてる。高校のスクールカーストや大学の研究室への缶詰に比べると、自分の周りの社会ははるかに優しい。

(まぁ一歩間違えたらWeb側に行ってなくて、ちょまど氏みたいにコード1行も書けない会社に就職してさらに苦しんでたかもしれないと考えるとゾッとするけどね・・w)


懐古すぎて何書こうと思ったんだったっけ状態だw ああ、そうだった。結局、何かをやろう、何かを解決しようとしたときそれをとことん学ぶことが楽しくなっていたという感じで、そのことが自分のIT系にもIT以外の活動分野にも関わってきていたりする。保育、教育、SOGI、そのあたりもそんな感じで踏み込んだ世界だ。英語で書くことも、Skypeで外国の人とチャットしたとか、今は亡きTetriNET2という超高速テトリス対戦ゲームで相手をフルボッコにしてdamn u!!! XDとか言われまくったとかで慣れたようなもんだし。そしてそれは基本的に(小中高の)学校ではなく自分(たち)で手に入れたものだ。

学校教育については思うところありすぎるけど今回懐古で書きそびれたので次回で。何にせよ「勉強」「学校」が教育によって「つまらないもの」「苦しいもの」になるのは激しく害悪だと思う。自分にとって「おもしろいもの」が分かってる人が自らそれを学んでいけるよう、一人ひとりにあった教育ルートがほしいと切に願う。

そして自分と同じようにエンジニアを志す人たちに、(当時の(逮捕されるべきでなかった)金子さんのように)自分が道標となっていくことができたら、自分はエンジニアとしてきっと最高にうれしい。この世界にとって足を踏み入れる人にとって、楽しくてしょうがないだけでなく、この先壁が少しでも減ることを願いつつ、この駄文を締めくくっておく。

(※なんで高専に行かんかったんやとか、なんで(界隈関係者の多い)筑波とかに入らんかったんやとかはありそうなツッコミだけど、その時はまだそういう情報を持ってなかったんすよ・・。あと金なくて下宿不能だったしなぁ。)