ダッシュで奪取

ゲーム、読書、人生

『独習Git』を読んだ

今の会社に入社した頃に購入して、ずっと積んであったのを今更読みました。4年?5年??そんなに???

買った時に読んでおけばよかったな〜という知識も結構ありましたが、今だからスラスラ楽しく読めたのかもしれないし とにかく今年中に読めてよかった!

メモ

  • ファイル名の変更は git mv
    • 例えばファイル名の先頭を大文字にするだけだと差分を検出してくれなかったりするけど、これを使うことで renamed になってくれる
  • git checkout でファイルを最後にコミットした状態に戻せる
    • ブランチを切り替える専用コマンドだと思っていた…
    • 今まで手で修正して戻していた 愚かだった
  • コミットをまとめる方法
    • めちゃくちゃ細かくコミットしてしまうので、これは嬉しいなと思った
    • pushするときは、ある程度まとめておきたいので
  • うっかり削除したブランチの復旧方法
    • こんなの必要なときは来ない方がいいけど、いざとなればできるってことだけは覚えておきたい
  • git notes add でコミットにメモを残せる
  • 自分のローカルからローカルにpushしたり、わざとコンフリクトさせて修正する演習が面白かった

『ちょうぜつソフトウェア設計入門』を読んだ

表紙に惹かれて買ったきり積んでいたのを読みました。

詳しく知りたかったけど後回しにしていたようなことがどんどん出てきて感動しました。例えば、昔PHP7.4 → 8.0へのバージョンアップについて調べていたとき、以下の文で「つまり……何……?」とクエスチョンマークをたくさん浮かべていたのですが、

www.php.net

非互換なメソッドのシグネチャによる継承エラー(リスコフの置換原則違反)については、 常に致命的なエラーが生成されるようになりました。

今なら何を言っているか分かるようになりました。勝手に難しく思っていたけど、大したこと言ってなかった

その他、この本に書かれていた内容(ごく一部)

  • そもそもアーキテクチャって何だ
  • ラッパークラスはどういうときに使うのか
  • 多態性って何
  • 抽象クラスって何
  • インターフェースって何
  • インターフェースを使うと何が嬉しいのか
  • ひとつのクラスはひとつの責務というけど、責務って何
  • スタブとモックって何
  • スタブとモックを使うと何が嬉しいのか
  • テスト駆動開発のやり方
  • 依存性注入って何
  • DIコンテナって何
  • 開放閉鎖原則って何、具体的にどうすればいいの
  • インターフェース分離原則って何、具体的に(略)

上記の疑問が解決したので、自分と同じように「何?」と思っている項目があれば前のめりでおすすめできそうです。肝心の設計の部分はまだちょっとピンときていない部分があり、サッと読んでしまったところがあるのですが、いつか真髄を理解できるだろうと信じて手元に置いておこうと思います。

読んだ本はメモを取ったらフリマアプリに出したり、必要そうな方が周りにいたら譲ることが多いのですが、定期的に読み返したいとなったのはめちゃくちゃ久しぶりかもしれません。良い本だった〜

『独習PHP 第4版』を読んだ

前にPHPの試験を受けたのですが、 kyoruni.hatenablog.com 試験の認定テキストを読んでいなかったので今更読みました。

インターフェイスって何?抽象クラスって何?トレイトって何?公式ドキュメントに何度も出てくるシグネチャって要するに何?のような疑問が解決できたので、読んでよかったです。

SQL以外だと間違いなくPHPを一番長く見ているはずなのに、そういえば一度もまともに学習したことなかったんだな〜と。他の言語は入門するとき何かしら1冊読んだりするのに

適当に検索すれば何かしらの情報が出てくるので、ちゃんと学ぼうみたいな気持ちになれなかったんですよね。そういう意味でも、体系的に知ってみるぞ!のきっかけになる認定試験・資格試験の存在って良いなぁと思いました。

メモ

  • 名前が衝突した場合
    • 自分のクラス > トレイト > 親クラスの順に優先順位が高い
  • オブジェクトは参照渡し
    • 値渡しにしたいときは clone でコピーする
  • オートローダーって何だ
    • 存在しないクラスをインスタンス化するときに、対応するクラスのファイルを自動でincludeしてくれるやつ
  • ワンタイムトークンの仕組み
    • あのとき見かけた謎の hidden はこれだったのか!!!と嬉しくなった
  • イテレーターの実装について
    • 配列に直接オブジェクトを入れたらループできる気がするので、実装するメリットがあまりよく分からなかった
    • 積読本の目次をぱらぱら眺めていたら、これは他の本に載っていそうだったので一旦考えるのは保留