kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

最近の個人的なコード事情

1年ぐらいブログ書いてない状態から久しぶりの投稿は精神的なハードルが高かったです。

2月に入ったら、また気軽に書いていこう。と思いつつ3日経っていたので、危なかった。

1年間ブログを書いていなかったので、その間の情報を少し書いてみます。

プログラミング

仕事でやっているコードはあまり変わっておらず、PHP, Go, Vueあたりを中心に業務系のwebを作成しています。

仕事といってもフリーランスで知り合い経由でのお仕事のみ行っているため、自分で使用する言語を決めて構築する感じなのでいきなり変わったりすることはないと思います。

ただし、世の中は進歩しており言語のバージョンアップや便利な機能はどんどん出てきています。その中で構築する環境が変わっていきました。

・vue2 -> vue3 ・php7.4 -> php8.2

個人的に影響があったのはvue, phpでしたね。

vue3でComposition Apiにするようにして本当に便利になりました。ページのコードが役割ごとに分割できるようになったおかげでかなり読みやすくなりました。vue2で書いてあるソースは全部vue3に置き換えたい衝動でいくつかプロジェクトのコードを直して不具合出して謝罪をいくつかやってしまいましたが、エンジニアとしては満足でした。(本当は気軽にやっちゃダメ)

phpのバージョンアップも以前から気になっており、調べてみると速度的なメリットとコード上のメリットが見込めたのでどこかでやっておきたいと思い、適用したりしました。

php8系は型の部分が厳密になっている感じで、int + string でエラーになることが多く、PHPerが今後どういうコードを書いていくのかちょっと気になるバージョンだと思っています。嫌いになる人結構でるんじゃないかな。個人的にはありがたいけど、入力次第でエラーになるケースが増えそう。

php8にして使いたかったのはAttributesを利用してgetter, setter楽に作りたい。というモチベーションでバージョンアップしました。正直getter, setterはコード増えるし自動で作成できてもあまり作りたくないコードだったのでスッキリしたコードになってくれるとうれしいですね。最近は複数人で開発する機会がないのでpublicのプロパティを作って横着してます。

別件で良かったのは、去年一年はDBにほとんど触ってなかったです。DBなくても結構問題なく作れます。運用上も結構楽です。

新しい言語はやってないです。

サーバー

ここ2年ぐらいはNuxtjsを利用してwebを作っていましたが、本番運用してみるとnodeを利用した運用周りの知識が乏しく、phpに戻す決断をしてルーティングだけphpにするような仕組みで作るようになりました。

node系のコードで本番運用するのはビルドしたものをアップする以外はかなり厳しいのかな。と思うようになりました。

個人的な理由としては2つあり、一つはpackage周りの依存が大変でこまめなメンテナンスをしない限り無理だと思ったこと。もう一つは動作スペックが高い気がするところですね。

リリースするたびに一時的に動作しなくなったり、サーバー自体が止まるケースも増えたため諦めました。

単体のサーバーで運用はまず無理っぽい気がしてます。

構築の仕方が問題だというのも理解しつつ、いままでのnginx + phpのやり方でも問題がないと思ったので新しくnodeで構築をする必要がないと判断してnode周りからは撤退しましたね。

サーバーサイドでの運用はかなり厳しいし、情報も少なかったです。

テスト

いままでテストコードをしっかり書いてきたことがなかったので、書き方自体がわからず放置してきましたが、時間があったので取り組むようにしました。

phpunitを使用していますが、unitテストで関数の挙動を確認するところから書き始め、integrationテストまで一応かけるところまでやるようになりました。

テストコードの有用性は理論上感じていましたが、書いたことがなかったため机上の空論状態でしたね。

テストコードを書き始めて最近はかなり便利さを感じつつ、テストコードに費やす時間のトレードオフを考えてしまっています。ただテストコードというのは長い目でみると開発効率が良くなるという情報も見ているので、テストコードを書いたことについて良かったと思っています。

実際にPHPのバージョンアップを行う際に、テストコードで事前にエラーになる部分が把握できたのはかなり価値観を変えてくれる出来事でした。

まぁ、テスト書くのは当たり前だろ。と思う人はいると思いますが、会社にいる時にテストコードを書くプロジェクトを経験していないため「テストコードってどう書けばいいの?」「サンプルみても、シンプルすぎて、このテストって実際のプロジェクトになるとどう書くの?」という壁にぶつかってきて、ようやく実際のプロジェクトに適用することができたということで、時間をかけてよかったです。

勉強することに時期が遅い。ということはない。ということです。必要な時に必要な知識を得れればいい。

目標

去年は二つほど知り合い経由での仕事のプロジェクトが運用にのったこともあり、成果になったと思います。一つは自分でサーバー保守運用まで行っており、継続的に開発していきたいです。

あと当分はブログ書くようにしたいです。(時間が結構ある)

別で自分のドメインのブログ作りたかったけど、まだ作ってないです。去年の目標だったけど、結局やらなかったなー。

そろそろ貯金が減り始めたので、就職も目処にいれる必要が出てきて焦っております。

アウトプット頑張ります。