見出し画像

技術的なふりかえり

もうだいぶ長くプログラマをやっているし、ここ数年はコードを書くお仕事から離れていたこともあり、「技術的にどんなことやってたの?」って聞かれてもパッと出てこない。のでふりかえりをしておこうと思う。

どういう風にまとめていけばよいのかわからないので、とりあえず技術ごとにざっくり分けて書く。お仕事する以前には学生時代やアルバイトや趣味で C, Java, Visual Basic などを触っている。

ざっくり書くとこんな感じ。

  • 最初は PHP と結構なかよしだったよ

  • その後 Ruby とちょっとなかよくなったよ

  • 前はインフラも触ってたし今でも好きだよ

  • 普通のことを普通にやってきたよ

なお技術以外のことは以下にだいたい書いてある。
ここ数年より前も似たような感じでやってた。


PHP

いちばん最初に触れた Lightweight Language(そういえばこういう呼び方は聞かなくなったな)は学生時代に遊んでた Perl だけど、お仕事としては PHP が最初の言語だ。バージョンで言うと4.x - 5.6 あたり。古い。

大手の受託案件

お仕事を始めて早い時期からわりと大手の案件を任せてもらい、そのまま似たような感じの案件を担当することが多かった。
名前を聞いたら誰でも知っているようなところが複数ある。
顧客折衝から運用までひとりでやることもあったし、チームでやったこともある。フロントエンド込みでひとりでやることが多かった気がする。

この状態でコードレビューなしで大手案件を担当していたのかと思うとゾッとする。無知とは恐ろしいもので、当時は楽しいとしか思ってなかった。

自社の BtoB サービス

経験は1社のみ。会社としては2社目。
そこでは独自のフレームワークで運用されていた。
最初コードを見たときは全然わからなかったのだけど、何かしらのデザインパターンできれいに設計されたものだった。何パターンだかは忘れた。でもそれが理解できたときは「ああ、きれいだなあ」と感動した記憶がある。コードを見て感動したのはこのときが初めてだったかもしれない。

当時の会社をメインで支えていたサービス。
振ってもらったタスクを緊張しながらこなしていた。コードレビューをしてもらう経験もこのときが初めてで、レビューしてもらえるありがたみを知った。それ以前に一回派手にやらかしてるので(後述)

Ruby

上記の自社サービスの会社でコツコツと PHP を書いていたある日「Ruby も書いてみる?」と誘っていただいた。 Ruby のことは名前くらいしか知らなかったけど、周りのみんなが Ruby 好きだと言っているし、少し後に入社した同僚も「Ruby を書きたくてここに入社した」と言っていたのでそれだけ魅力的な言語なのだろうと思った。挑戦してみることにした。
バージョンの経験は 1.8 - 3.2 くらいだった気がする。

自社の BtoB サービス

稼ぎ頭の PHP サービスだけでは心許ないので、違うサービスもいくつか始めてそちらでの収益化を考えていた模様。これらは Ruby で書かれていた。Rails のバージョンはちゃんと覚えてないけど 2.x だったと思う。

初めての Ruby はおもしろかった。PHP とは全然違う設計思想。最初はなかなか「Ruby っぽい書き方」ができなくて苦戦した覚えがある。コードレビューで「ここはこのメソッドを使うとこんな風に書けるよ」って教えてもらって「すごいな〜」ってめちゃくちゃ感動した。いろんな人にレビューしてもらったはずなのだけど、なぜかかせいさんに指摘してもらったところだけ記憶に残っている。なぜ。かせいさんあのときはありがとう。

大手の受託案件

小さいものもあったけど、大きいものもあった。
こちらも担当フェーズはだいたい PHP のときと同じ。
特に何も言われなかったので普通にできていたんじゃないかと思う。

受託案件をこなしている間に「たださんのコードはきれい」ってほめていただいたことが数回あってめちゃくちゃ嬉しかったな。初心者の頃にご迷惑をおかけしたみなさん、文鳥はどうやらちゃんと成長できたようです。ありがとうありがとう!

自社の BtoC サービス

ここではコードを書かず、Rails のメジャーバージョンアップや設計の見直しなどを担当していた。設計の見直しではモジュラモノリス化の検討をしていたのだけど非常で難しかった。前任者も苦戦したと聞いた。何せ当時の時点で7年もののアプリケーションだったしな……。
基本的にサービスのコードは触らなかった。みんなの手が回らないときにコードレビューのお手伝いをするくらい。それも楽しかった。

インフラ

サーバの復旧

ある日オンプレのサーバーが吹っ飛んだ。原因とかは忘れたけど、構築手順書も設定ファイルも何も残ってないと言う。当時はインフラのコード管理なんてものはない。詰んどる。
という状態でなぜか文鳥が担当することになってしまった。この時点での Linux 知識は通常の業務では困らない程度のコマンドを打てて、何となく動作原理がわかるくらいの知識しかない。本当に何となく。

構築時のことを知っている人達にがんばって思い出してもらったのをまとめたり、過去の trac や影舞を必死に漁った。がんばって推理もすることもあった。ミドルウェアは使用していたと思われるバージョンの RPM パッケージを自前で作成した。いろんな人に協力していただいた。

無事復旧できたときは本当に安心したし、めちゃくちゃ嬉しかった。終わってしまえば、いろんな経験ができたよかったね〜という感じ。やっている間は本当に復旧できるのか気が気じゃなかったけど。
今は同じ状態を即再現できる仕組みがあるので技術の進化ってすばらしい。

AWS

Flash の勉強会にふらっと行ったときに AWS の人がいて、確か「今度日本にできるよ」みたいなことを言っていて、そのときに AWS の存在を知った。へー世の中には便利なものがあるんだなあ。

初めて触ったのはその後。新規立ち上げのサービスで AWS が採用された。EC2, ELB, RDS + αというシンプルな構成。このあと数年間、それ以外の案件でも似たような構成で運用した。

コンテナが流行り始めた頃にインフラから離れたので、文鳥の AWS はこの時点でほぼ止まっている。知識としては一応ある、運用時に触ったことがあるくらい。本格的な構築や運用には関わっていない。

PostgreSQL / MySQL

どちらも触った経験がある。どっちもかわいいと思うので好き。
だいぶ前に会社の輪読会で以下の本を読んだので、インデックスのしくみなども何となくわかる。でもだいぶ忘れちゃっているのでそのうち復習したい。

Docker / Kubernetes

動かせるし何となくわかる。
設定ファイルくらいは書ける。
でもそんなになかよしではない。もっとなかよくなりたい。

考え方

アジャイル

初めて Ruby を書かせてもらった会社がすごくアジャイルな思想を大事にしている会社だった。当時としてはめずらしかったと思う。文鳥も言葉しか知らなくて、初めてその文化を体験したときは戸惑いもしたけど、同時にものすごい感動もあった。

その会社のアジャイルが結構な原理主義だった気がする。ので、アジャイルのふりした何かに対する拒否感はちょっと強いかも。
開発チーム内でアジャイルプラクティス本の輪読会もあった。そうだよねそうだよねって思いながら読んだ思い出。

あとまずはアジャイルソフトウェア開発宣言を見ような!!

その他

やっちゃったこと

やらかしも書いておく。

いちばん最初に入った会社で、Good First Issue 的なタスクを終えた後に任された案件。PHP と PostgreSQL の組み合わせだったのだけど、どちらも実務経験はほぼ無し。その前のアルバイト先でちょっと触ってただけ。なのにいきなり大手の案件をまるっと任されてしまった。機能追加とデータのインポートをするプログラムの作成。

伸びしろ満載な既存コードを毎日半泣きで読みつつ、カラム追加をした。文字列。必須項目ではない。
実装し、手元でいくらか動作確認をして問題もなさそう。いざリリースしてデータインポート開始!……となったら一瞬でエラー発生。パニックになる文鳥。実装をまったく把握しない上長が出てきて「ああ〜」ってなってる。
ど素人の文鳥は null と空文字を同じものだと勘違いしてたので、null のカラムに空文字のデータをインポートしようとしてユニーク制約のエラーを起こしていたという、何てことないミスだった。

動作確認のときに、テストデータに空文字のデータを一行しか用意していなかったので気づかなかったという話。このときの教訓として、テストデータはできるだけ多めに用意するようになった。

なおこのときの対応の判断を上長がたぶんミスって、それで他の人の担当箇所の不具合が表面化してしまい大惨事になった。そもそも文鳥がやらかさなければその不具合はそこまで大問題にならなかったと思う。

それはもう本当にめちゃくちゃ謝った。それまでの文鳥史上最大に謝った。自分はほとんど怒られなかったけど、不具合出してた人はめちゃくちゃ怒られてた。社長はお客さまにめちゃくちゃ怒られたらしい。みんなごめんなさい。でも文鳥は翌月なぜかしれっと昇給していた。
これだけ長いことやってて大きいやらかしはこれひとつ。だと思うんだけど忘れてるだけかもしれない。何か知ってる人がいたら教えてください。

フリーソフト開発

「Windows のデスクトップにピタって貼り付いてる感じのアプリかわいい、あれ作りたい」って思って作ったやつ。今でいうところのウィジェットになるんだろうか。あれ。

「こんなのあったら使うかなあ」「それなら何ができて何が表示されていたら嬉しいかなあ」と考えながら作るのは楽しかったし、あれなかわいい感じのアプリを完成させられたので非常に満足した。
窓の杜に取り上げてもらったり、当時よく出ていたフリーソフトを寄せ集めた雑誌のすみっこに掲載していただいて人生初献本を経験したり。
でもやっぱり、インターネット上で知らない誰かが使ってくれている気配を感じたときがいちばん嬉しかったな。

技術同人誌の執筆

ずっと OOP のことだけ考えてた時期と Linux カーネルのことだけ考えてた時期があり、どちらもそんなに深く理解しているわけではないけどいろいろ読んだり触ったりしてたぶんそんなに大きく間違えてはいないだろうと思って世に出したもの。

OOP の方は軽い気持ちでブログに書いたら 大炎上 大きな反響をいただき、週間はてなブックマークを1位をいただいてしまった記憶がある。ブクマが増えるたびに炎上するんじゃないかと冷や冷やしてまったく落ち着かなかった。あれめちゃくちゃどきどきするね!

一度は本を作ってみたいな〜と思っていて、それなら多くの人に読んでいただいて燃えることもなかったこれを本にしようと思った。紙の本嬉しい!

焼き直しの内容なのに思いのほか好評で、調子に乗って2冊目も出した。
技術書典に「Linux カーネルをお仕事で扱っている」という方が立ち寄ってくださり、本をざっと読んで「特に間違ってない」とおっしゃっていただけたので本当に安心した。読んでいただいている間も気が気じゃなかった。

ありがたいことに数冊出した本の中でもこの2冊は特にたくさんの方に手に取っていただいている。
新しい本を出したいなーと思いつつ描きかけのものが数年間放置されていてかわいそう。遠くないうちに形にできたらいいな。

まとめ

何もやってないと思ってたけど、ふりかえってみたらそれなりに何かやってた。ここには書ききれていないこともある。よかった。
開発もそれ以外も、幅広くいろんな経験をさせてもらってきたなあと改めて思う。自由にやらせてもらうことも多かった。本当にありがたい。

ずっと実装に自信がなかったけど、よく考えたら「コードきれい」って言われてるし(文鳥にとっては大事なことなので2回目)
特にそのうち1回はめちゃくちゃきれいなコード書く人からだったので本当に嬉しい。とても丁寧で几帳面な人で、彼が書くコードは文鳥がそれまで一緒にお仕事した人の中でも1, 2を争うくらいきれいだった。そういう人から「一緒にお仕事続けても大丈夫」って言ってもらえるくらいにはできてたんだよなって思うとちょっとすごいことな気がしてきた。

設計をレビューで弾かれたこともほとんど記憶にないので、その辺も人並みにできているんじゃないのかな。どうかな。いやあんまり「どうかな?」って自分に問い続けてるとまたすぐ自信がなくなってくるので考えるのをやめよう……

こうやって振り返ってみるとしんどいこともあったけど、楽しいこともやっぱりいっぱいあったなって思う。辞めたあともオンラインオフラインで遊んでくださる方、おしゃべりしてくださる方がたくさんいるのはありがたいし嬉しい。
お世話になったみなさま、一緒にお仕事しているあいだはいろいろとご迷惑をおかけしました。みなさまのおかげで今も技術に関わるお仕事ができています。改めて、本当にありがとうございます!

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?