咳をしても太り。

痛風患者エンジニアの雑記帳。技術のお勉強からオタク活動日記、独り言まで。

コード履歴書

再びどうも、僕です。

 

 

会社のエンジニアの間でなんか流行っているコード履歴書とかいうやつ。僕も自分の思考整理とか今後やりたいことを考えるにあたって、過去をまとめておこうかなと思ったので書いてみます。っていうか職務経歴書っぽいねこれ。コードに限るあたりが面白いけど。

 

  • 小学5年生ぐらいのときからインターネットの民として動いていた。赤松健先生の AI Love Networkっつってわかる?あそこのチャットに入り浸ってた記憶がある。あの頃のチャットはHTMLタグを打って文字装飾ができたもんだから、<FONT>とか<B>とかを断片的に覚えて遊んでいたのがコードというものを初めて触った瞬間ではあると思う。
  • で、そこらでできた友達が個人サイトを持っていたのがきっかけで、中学に上がる頃だと思うけど、自分も個人サイトを作った。HTMLをちゃんと書くことはまだできず、今はなきNetscape Composerというアプリで作り、細部を手直ししたりしたぐらい。ホームページビルダーじゃないのよ、意外にも。ちなみにこのときFFFTPを初めて触った。
  • そして順繰りに欲は高まり、自サイトにBBSやチャットルーム、日記なんかを置きたくなるわけで、フリーのその手のCGIを持ってきて設置をしたり。あの時は666だの755だのが呪文にしか見えなかったけど、まぁ手順通りにやった。ちなみに言語はPerlで、$title = "{当時のHN}の屋敷BBS" みたいなイタいタイトルを表示するためにコードを触ったりもしたわけです。このサイトで少しずつだけどCSSを導入したりしてデザインがいじれることを知った。
  • 時は流れて高校3年。卒業後の同窓生が交流するためのBBSを作る需要が出たので春休みに作った。このとき大学進学が情報系に決まっていたので、勉強の意味も兼ねてHTMLを自力で組んでやってみたり。2003年時点としてはだいぶレガシーなサイトだったけど、当人は楽しく組んだし需要は満たせたので満足。なお1年ぐらいで激しく過疎化したので畳んだ。
  • 2004年大学入学。授業でC言語を学んだのがプログラミングの初体験。コンパイラのccとかみても「さくら?」としか思えなかった。コマンドツール開発を実習で行い、例によってメモリ管理に死ぬほど苦しめられた。この後しばらくプログラミングなんもわからんと思って劣等感に苛まれる(同期で親しかった奴らが元々詳しい連中だったのもあって尚更
  • 大学1年のどっかで、一念発起してCGIに入門する。本を二冊ぐらい読んで、インターネット廃人だった頃にお世話になったようなアクセスカウンタ・BBS・チャットルームなんかを量産。フリーで出してくれていた作者の皆さまへの畏敬と感謝の念に震えるとともに、やはりjcode.plがすげえ、って話になる。
  • 大学2年のときの演習授業というやつで、PerlMIDI操作をするCGIを開発。初めて自力で企画したわけだが、結局は担当教官も呆れるほどグズグズの内容になった。やりたいことを考えることと、今の実力で実現可能か・可処分時間で実装可能かは別物であることを痛いほど感じる失敗体験。あと作業工数見積もりな、絶対ハズれるよな、あれは。
  • これも大学2年だっけ?趣味の音楽イベントの参加者登録が主催の手作業だったのが辛くなりすぎた話を聞いて、システム化を申し出る。もちろんPerl/CGI。セッションイベントだったので楽器パートによる成立条件とかが正直めっちゃ複雑で、最後は主催のおっちゃんの家に泊まり込んで要件定義しながら実装してた。なんとかイベントまでに実現でき、不具合も無くはなかったけどリカバリ可能な内容だったので割と成功事例。作ったものが使われて喜ばれる経験がこの段階で積めたのはとてもよかったと思う。しかし今思うと、あんなアクセス集中するイベントのシステムでDB使わなかったのとか、本当に気が狂ってる。.datファイルと.lockファイルでなんとかこなしてたんだから怖い怖い。
  • 大学3年。友人の紹介で学内ベンチャーのアルバイトをする。この頃はPerlの他にPHPもそれなりに使えるように独学でやっていたので、Web周りの案件をいくつかやっていた。このとき初めてMySQLを触り、DBのありがたみに恋に落ちる。面白かったのは位置情報付きブログシステムの開発で、位置情報を写メール(懐かしい)の画像から抜いたり、インポートしたKMLファイルから紐付けたり、なんなら当時の携帯電話のGPS昨日叩いて取得したりという辺りを触ったこと。当時GoogleMAPなんかは動いてたしAjaxも流行ってたから色々遅いんだけど、とはいえ当時の僕には未来来てんな感があって楽しかった。あとなぜかHDML(ezwebで使ってた言語)とかも少し触った。
  • 時期を同じくして自分のバンドのWebサイトを立ち上げたりした。ここは技術的などーこーはあまりなかったけど、他のメンバーでも更新作業とかできるようにごく簡易なCMS的なことを実装した。こちらはPHP。この頃からPerlからPHPにメイン言語が変わりつつあったが、PHP正規表現周りの機能はどうしても好きになれなかった。あとマルチバイト文字周りでひどい目にいくつか遭って、PEARは胡散臭い、という印象が完全に染み付いた。
  • バンドからの派生で、主催ライブイベントのサイト立ち上げも何度か行った。自分意外にイラスト担当とWeb部品のデザイン担当の仲間がいたので、ここで初めてチームでの開発を経験する(バイトは個人作業だった)。チームのコミュニケーションやスケジュール見積もりとかは何度かの失敗を経てだいぶ勘所がつかめるようになり、最後の方はWBSなんかも書いてたっけ。サイトの出来云々というよりはネタ要素が仲間内にウケ、たまにヨソのイベントのサイト構築なんかも依頼が来てチームで請け負ったりもした。全体的に学園祭ノリで楽しかった。
  • 4年で研究室配属。主にデータベースやデータ処理を扱う弱小の研究室で、僕のテーマはXMLDBの効率化、特に実体化ビューに関するところをやった。言語はJavaで、授業では触ったけどきちんと扱うのはここが初めてで、色々と苦戦した。LLばかり触っていたため重厚なIDEとかがしんどかったのが主な原因かな。ゼミではk-meansとかAprioriアルゴリズムとか、PageRankとか教師あり学習だとか、今思うと他のメンバーの研究って現代のブームに乗ってくる内容だったのでは?ともったいなく感じたりはするが、まぁ当時は研究室の活動にあまり興味がもてなかったのだ。とはいえ、不真面目な学生ながら3年間でどうにか修了できたのはよかった。
  • そういえば担当教官は元々一般企業の出身の人で、コーディング規約とかコメント、設計やチーム開発のノウハウを学ぶゼミを開いてくれてた。あれは本当にありがたかったな、今でも生きてる知見だ。
  • そうだそうだ。研究室にお菓子買い込んでおいて、レジ置いといて購買できるようなシステムも同期で作ったんだった。あれバーコードリーダーをジャンクで拾って動かしてたんだけど、あの手の入力装置からデータ引っ張ってくるところも面白かったんだよな。
  • ちなみに先述のバイトは一応院の修了までいたけど、最後の方は経営陣の目が海外に向いたりとかで僕の担当する仕事が少なく、事務方っぽい仕事が多かった。発送とか。
  • 2010年、就職。外資のDWHベンダーだったんだけど、ここは新卒研修が手厚く、4-9月まで研修だった。内容的にはC言語bashの基礎の基礎あたりまではほぼTAの仕事だったけど、その後のSQLとDWH設計は未知の領域でめっちゃ楽しかった。Window関数好き。
  • OJT期間はRubyを触ってた。僕のOJTリーダーが割とRubyコミュニティでも有名な人だったからだったりする。バッチワークフローのテンプレートから個別バッチを作るような社内ツールがあったんだけど、そのテンプレートごとにユニットテストも設定だけで作れるようにするようなフレームワークの実装(の一部)を任された。燃える僕だったが、レビューではボッコボコにされた。命名が悪いとか、ちゃんと関数分割しろだとか、そういうレベル。人様に見せられるコードを書くことをめちゃくちゃ厳しく指摘されたのを覚えてる。これもまた未だに時折思い出しては背筋が伸びるような経験だった。
  • まーでもOJTが終わった後、現場に連れ去られてコードとは無縁な、スケジュール表とにらめっこする仕事になるんだけどね。先輩は僕を残そうとしてくれたらしいんだけど、現実は非情である。コードっぽい要素だと、分析SQLをたまに書いてたのと、クエリチューニングをちょっとだけやった。インデクス貼るだけで終わったショボいやつだが。
  • また数ヶ月後に、今度は社内開発で外販してるBIツールの開発チームに転属。ヒャッホウと喜んだのも束の間、コードを読む権利を与えられず、ほとんどずっと本物がどれかわからない設計書の整理をさせられた。偶然そこらのタイミングで大学時代の先輩に誘われ、転職。
  • 転職先は10人ぐらいのベンチャー企業地方自治体向けのシステムをハコとセットで売るビジネスで、結構儲かってた。ここで.NETに初めて触れる。JavaのときEclipseはあんなに嫌ってたのに、VisualStudioすきすきー!ってなったので、人間わからない。ここには4年居て、VB.NETの製品をC#.NETにするプロジェクトの取りまとめとかもやった。あと映像系の技術がコアだったので、DirectShowとかもちょっと触ったり、Windows Media Encoderを使うためにCOMプログラミングを覚えたり、シリアル通信とかMIDI通信の機材とデータのやりとりして動かしたり、色々と学びがあった。負債だったJScriptのサイト運用はめっちゃ疲れたけども。ちなみに最後はビジネスモデルの話で社長と喧嘩して退職。
  • 3社目は2社目の何人かと新規立ち上げ。2社目と似たような映像技術をコアにして売り込みをしてた。ここで前の会社で結構な課題だったUI部分をもっとよくしたくてWPFを学ぶ。必然的にMVVMの概念を学ぶことになり、最初はめっちゃ戸惑ったけど、慣れるとあの子は最高のビジネスパートナーだな、と思えるようになった。UXの専門家とかにもアドバイスもらって画面開発をリファインしていくのは楽しかったが、最後はハードスケジュールと莫大なプレッシャーで心がぶっ壊れて休職→退職。
  • メンがヘラってる間に戯れにAWSを触ったりした。EC2すごーい、とかそのレベル。このブログの最初の方にちょっと触った記録が残ってるけど、早々に飽きてるな。
  • メンが治ったので社会復帰した。外資コンサル。でもここではコード的な話は全然してない、というか触らせてもらえなかった。強いて言えば、最後1ヶ月ぐらいは中国のJava開発チームに設計書を投げていたんだけど、向こうの人間がSQL書けない(正確に言うと、ものすごくシンプルなCRUDしかできない)っていうので、設計書に丸々SQLを書いて渡してたぐらい。おれより等級いくつ上でどんくらいおれより給料高いかとかわかるので、心が折れるのは察してほしい。ここでもメンがヘラりかけて手足が震えだしたので退職。
  • ようやく現職。社内の広告運用効率化ツールにアサインされ、DB設計とインフラの担当を仰せつかる。ヒャッホウDBの設計をイチからできるなんて!と大喜びでやり、いくつもの失敗を重ねるも今も元気に動いてて安心してる。ここでAWSも本格的に学びはじめ、Terraform、Dockerなどと戯れる業。またプログラミングもVue.js/TypeScript, Clojure(お隣の席がClojure界隈の有名人と後で知る), Scalaも初体験で、バリバリレビューされながら学びを進めていく。最近Pythonも仲間に入りました。軸足はRDB/インフラに起きつつなんでもするのがチームの流儀なのでなんでもやる。楽しい。
  • また気づいたら社内インフラ改善の横断プロジェクトとか、その先行事例作りを自担当プロダクトでやるとかに巻き込まれ(あるいは突撃し)、社内にいるクラウドインフラのツワモノたちに色々教えてもらっていた。
  • そんな感じでワクワクエンジニアライフしてられると思ったら、なんかマネージャー職を頼まれ、ちょっとガックリ。とは言え交渉のときにプレイングマネージャであることを維持することは約束してもらったので、今もマネジメントと言う名の山のような雑務の傍、ちゃんと開発タスクも楽しく取れているので不満はないかな、という感じ。

長かった。
年寄りのエントリーだな。もうちょっとまとめてもよかったかも。まぁいいや。

今後はどうなりたいか、自分でもだんだんわからなくなってきたけど、目下興味としてはデータストレージ周りとインフラなのかな。ネットワークはあんまり強くないので補強したいのと、本来専門だったRDBも再補強、NoSQLにも手を出したいし、コンテナ周辺からデプロイ自動化周りとかに知見を貯めたいような気がする。

 

ゆくゆくはどうなりたいか?それは正直わからない。一つだけわかっているのは、働かないで趣味の開発だけをできる状態が理想だということだけ。

 

ポエムでした。