恒例?の年末振り返り
仕事
あんまり外で仕事の話をしないのでたまにはw
プライベートでSalesforce関連のアクティビティが多くて、たまに仕事の心配されるんだけどそうじゃないんですよって言いたいw
現職に来てから昨年までの約2年くらいはRuby/Railsのサービス開発に携わっていたんだけど、今年はPHPのサービスをメインでやっていた一年でした。 PHPは前職で簡単なフォームやバッチ処理を作る程度の経験だったので、がっつりWebサービス開発業やって色々と勉強になったし、今のPHPはエコシステム的にも言語仕様的にもかなり良くなってきているなと感じました。 特に型付けに関しては他のLLには無い表現力があったり静的解析ツールのPHPStanやIDEが優秀だったり、書きやすくかつ堅牢な言語になっているなと実感しました。
具体的な仕事としては
- サービスのSymfonyのバージョンを2.4 => 3.4 => 4.2にアップグレード
- 15年以上続く独自フレームワークな老舗Webアプリ(600万ユーザ、〜70万行)のPHPのバージョンを5.6 => 7.1にした
- それにあわせて依存パッケージを最新にアップグレードしたり、精査して別のパッケージに切り替えた
- 定期アップグレードする仕組みを作った
- PHPStan導入したりdeclare(strict_types=1)した
- Opcache使って不要っぽいファイルの当たりを付けてガンガン削除していった
- インフラレベルでのちょっとした改善
と、まぁいわゆるTHE改善業でした。
ちなみにどのWebサービスも はじめまして
状態からスタートしてそれなりのスピード感で改善できていたので、キャッチアップ力も我ながら良かったと思います。
そういや俺、1年以上携わってるサービス無いな…w
インフラ周りだとCloudFormationに初めて触ったんですが、PRで差分確認できたりChangeSet適用ポチっとするだけで適用できるのは良いな〜とIaCの良さを実感。
あと、色々と改善業してみてわかったのが「テストがないコードはレガシー」というのはマジだな、ということ。
逆にここだけちゃんとやっていればリファクタリングしてなんとか挽回できたり仕様の把握もテストコードレベルで確認できたりするけど それが無いと、よりアンタッチャブルで経年劣化していくものなんだなぁというのも思いました。 LLなので削除漏れも検知できず結果として大量の不要ファイルが溢れたり。 静的解析や静的型付け言語・型推論あたりはトレンドだし意味があると思うけど、テストコードを書く(書けるようにする)ことが一番品質を上げやすいと思います。
あとDBの負債はいろんなところに伝搬するし変更しづらいので、DBの設計は注意しないといけないなと思いました。 ロールバックもしづらいし…
ちなみに大量の不要ファイルの削除はOpcache法でやったんだけど本当に簡単で便利な方法なので、不要ファイルを検知したい場合は是非ご活用ください。
OSS
Contributionは880くらいでした〜。意外と例年より多かったw
が、PR/issueは全然出さず…未マージのものも含めるとこんな感じっす
- When set -f option, no set -f option automatically by tzmfreedom · Pull Request #227 · zendframework/zend-mail
- fix document on expression language by tzmfreedom · Pull Request #970 · nelmio/alice
- Added Japanese translation by tzmfreedom · Pull Request #532 · KnpLabs/KnpPaginatorBundle
- Update httplug and related packages version by tzmfreedom · Pull Request #777 · KnpLabs/php-github-api
全部PHP…w アップグレードしていくときに困ったところでPRを上げていったという感じ。
自作OSSに関しては例年通り粛々と。 車輪の再発明系だと
- tzmfreedom/go-nes
- tzmfreedom/myvim
- tzmfreedom/mygit
- tzmfreedom/php-mytemplate-engine
- tzmfreedom/myvirtualdom
- tzmfreedom/myvue
- tzmfreedom/mycc
- tzmfreedom/oracli
- tzmfreedom/tetris
Tree構造扱う系が多いw 車輪の再発明は本当にオススメしたいですねー 特にgitやテンプレートエンジン、VirtualDOMの実装はどういう仕組みで動いているのかを脳内ではなく、 身体で実感することができるのでとても良い体験でした。NESもVM作っている感じで面白かった〜
車輪の再発明以外だと
- tzmfreedom/go-soql-driver
- tzmfreedom/phphp
- tzmfreedom/salesfOS
- tzmfreedom/rustforce
- tzmfreedom/hsforce
- tzmfreedom/alt-vf
- tzmfreedom/alt-apex
- tzmfreedom/apex2java
9割Salesforce…w こちらもAST系が多いですねー。来年はもうちょい書くコードの幅を広げたいですなぁ
ブログ
WordPressのお守りが面倒になってきたので思い切って静的サイト(netlify)に移管。 移行ツールはRubyで書きつつ、ブログジェネレータはHaskellで自作しました。
年間記事数はブログ始めてから一番少ない24記事。 例年の半分くらいで、前述の車輪の再発明シリーズを結構やっていたのでブログ記事よりもコードを書く機会・量が増えたという感じ。
アドカレは3つ参加(Salesforce, PHP, Go)
来年は違う技術領域のアドカレで書けると良いな〜
Haskell
関数型言語全くやったことなかったのでHaskellにチャレンジしてみました。 最初は束縛だけでプログラムが書けるのか…?って思っていたけど関数合成やモナドの仕組みで良い感じにコードを書けたり 強力な型推論の機構があるのは面白かったです。簡潔に書けるというのも納得。 ブログジェネレータや自作git、SalesforceのAPIクライアントなど色々と作成してみて勉強になりました。 来年も継続して勉強していきたいっすなー。
登壇
今年はSalesforce Japan Dreamin’ 2019, Salesforce World Tour Tokyo 2019に登壇しました。
どちらもSalesforce関連w
DreaminはApex on Local, SWTTはSalesforceのツールの作り方を紹介させていただきました。
builderscon, DreamforceもCFPを出したんだけど両方ともダメでした。 特にDreamforceの方は結構狙っていただけに残念。 まぁApex on LocalとかAltApexのモチベーションをそんなに維持できていなかったし、 プロポーザルもあんまり中身が無かったのかもしれないとも思うし、 何よりnot acceptedになって色々と勉強になったので来年モチベーションがあればまたチャレンジしたいと思います。
来年ですがトークが採択されまして、PHPerKaigi 2020に登壇することになりました!(またAST関連なんだけどw
まとめ
今年は改善業・車輪の再発明シリーズ・登壇・関数型言語などたくさんチャレンジできました。 両親のご挨拶とか顔合わせとか引っ越しとか入籍とか結婚式とか色々あったけど、それを感じさせないくらいのアクティビティw
総じて最高の一年でした。
来年に向けて
来年は仕事でやっていく技術がこれまでと変わるので、これまで通りスピード感持って習得して深く理解してアウトプットしていきたい感じっす。
フロントエンドやスマホアプリ辺りはあまり詳しくないけど興味がある分野なのでチャレンジしたいですね。特にフロントエンド。 サーバーサイドももっと視野を広げてスキルを上げていきたいし、ソフトスキルももっと強化したい感じ。 来年もこれまで以上に失敗を恐れずにより多くのチャレンジをしていって、謙虚に着実にスキルを上げていければ良いな〜
最後になりますが、2019年も公私ともに色々とお世話になりました!
それでは皆様良いお年を〜