Naughty1029のブログ

エンジニアリングのこととか、日々の学びとか

エンジニアリング日誌 No.006

やったこと

  • 開発グループの取り組みロードマップを調整する
  • Test Doubleの調査
    下記のサイトでTestDoubleと間接入力と間接出力を学習 なんとなくの理解はできたが、手を動かしながら学習を進めていこうと思う。

これで迷わないテストダブルの分類(ダミー、スタブ、スパイ、モック、フェイク) #Kotlin - Qiita

xUnit Test PatternsのTest Doubleパターン(Mock、Stub、Fake、Dummy等の定義) - 千里霧中

明日やること

よもやま

今日から仕事始めということもあり、まずはロードマップの作成から行ってみた。 あいかわらずロードマップ系の作成というのは難しいのと、こういった開発以外の取り組みってなかなか進展しないので。仕組みが必要だ思った。 とりあえず金曜の午後半日は取り組みDayとして、リソースを割くようにグループ運営してみたいと思う。

エンジニアリング日誌 No.005

やったこと

Mockオブジェクトまでは理解できたが、そのあとのonce()やwith()などの理解が浅いと感じた。
ドキュメントや技術書などを読み込んで理解したいと思う。

明日やること

よもやま

今日は久しぶりに10km程度の長距離ランニングをしたため、学習体力まで削られたが、そんな中でもUdemyを少しでも進められたのは成果!
5分だけでもやる!と自分に言い聞かせてPCを開く意識を持つのは結構効果がありそう。これからもやる気がないときは、「5分だけやる」の気持ちで取り組むのが良さそうだ。

エンジニアリング日誌 No.004

やったこと

  • 開発グループの取り組みロードマップを作成

昨日の学びを活かしてChatGPTを活用して作成。あした調整作業をする。

今日は体調がよくなく何もできなかったな。

明日やること

エンジニアリング日誌 No.003

やったこと

  • 月間の学習計画を作成

ChatGPTを活用して作成したのだが、なかなか良い感じのスケジュールをさくっと作ってくれるので、こういったロードマップ的なものを作る時は今後も生成AIに任せてしまい、自分自身はその調整や実行にリソースを割いた方が良いなと感じた。

学んだこと

ttj.paiza.jp

上記の記事を読んだのだが、以下の部分が勉強になった。

たしかに管理職を経験したおかげで、転職先から管理職として来てほしいと言われたのですが、それだけのために管理職を目指すのはオススメしません。できれば自分の人生観や世界観を広げるために、管理職を経験してほしいです。

行ったことのない世界の国を旅すると、世界観が変わる。前から会いたかった憧れの人と話すと、人生観が変わる。同じような位置づけで、管理職を経験してみるといいと思います。

わたしも管理職やってて成長できてるんだっけ?と迷うことがあったが、他の人が経験できない世界を体感しているというのは、貴重なことだと改めて感じた。

一度管理職を経験して得た人生観・仕事観を文章にまとめることをしてみても面白いなと感じた。

明日やること

広告を非表示にする

エンジニアリング日誌 No.002

今日やったこと

PHPUnitの基礎学習のために、学習中。セクション4/10まで完了。

すべて英語の動画教材だが、説明がわかりやすいため、問題なく視聴はできそう。

PHPUnitのバージョンが7とかなり古いため、注意が必要だが、学習自体は問題なくできそうな感があるため、このまま受講を進めてみようと思う

学んだこと

PHPUnitにて例外のテストをする場合は以下のようにexpectException()を利用することで実装可能。

<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ExceptionTest extends TestCase
{
    public function testException(): void
    {
        $this->expectException(InvalidArgumentException::class);
    }
}

公式ドキュメントにも記載があるが、expectException() メソッドは、例外がthrowされる前に使用する必要があるとのこと。

例外がthrowされるとコードが呼び出される直前にcallされるのが理想的らしいので気を付ける。

たしかに、assertと違い、expect(期待する)というメソッド名からも、呼び出される前に記載するというニュアンスが含まれていることを意識すると良さそう。

参考記事

docs.phpunit.de

あしたやること

広告を非表示にする

エンジニアリング日誌 No.001

エンジニアリング日誌を始めてみる

2025年度の初読書として『達人プログラマー』を読んでみました。その中で「エンジニアリング日誌」をつけることが推奨されていたため、今年は日報として、日々学んだことや考えたことをこのブログに記録していこうと思います。

日報を書く目的を考えていた際、ふと「ゲームクリエイターの桜井さんが日報に関する動画を投稿していたな」と思い出しました。

www.youtube.com

動画によると、桜井さんが日報を書く目的は以下の4つだそうです:

  • 自身を知ってもらう
  • 情報共有
  • アウトプットのトレーニング
  • 進捗共有

私もこの4つを意識しながら、エンジニアリング日誌を進めていきたいと思います。

『達人プログラマー』を読んでみた

「エンジニアが読むべき書籍」として紹介されているのを見かけ、気になって読んでみました。

本書では、生産的かつ効率的なプログラマーになるための考え方が詳述されています。400ページを超えるボリュームで読み切るのは少し大変でしたが、セクションごとに短く完結しており、目次や付録のTips集を活用しながら、必要に応じて読み返す形式が合っていると感じました。

この本は、一度読んで終わりではなく、常に手元に置いてバイブルとして活用するのが良さそうです。

一通り読み終えた中で特に印象的だったTipsをいくつか挙げます:

印象的なTips

割れた窓を放置しておかない

不適切な設計や誤った意思決定、貧弱なコードを見つけたら、必ず修正すること。

変化の触媒たれ

他人に変革を強制するのではなく、未来を見せ、その実現に向けた支援をする。

良い設計は悪い設計よりも変更しやすい

良い設計とは、使用者や状況の変化に適応できる設計を指す。コードも同様に、変更に柔軟でなければならない。

ひとりぼっちでコーディングに取り組んではいけない

プログラミングは非常に難易度の高い作業であるため、仲間と協力して進めるべきだ。

早めにテスト、何度もテスト、自動でテスト

ビルドごとに実行される自動テストは、ただのテスト計画書よりもはるかに効果的である。

このように学んだことや考えたことを日々記録していくことで、自己成長の糧にしたいと思います。今年一年、頑張って続けていきます!

広告を非表示にする

Docker Desktop 完全に理解した 〜仕組みを理解してもっと効果的に使うための基礎知識〜

普段、当たり前のように使っている「Docker Desktop」。

その便利さゆえに、その中身や仕組みについて深く考えたことがない人も多いのではないでしょうか。

私自身も、ふと「Docker Desktopってそもそも何者なんだろう?」と気になり、改めて公式ドキュメントや参考書を読み直してみました。

今回は、その調査を通じて分かったことを整理しながら、Docker Desktopの仕組みや背景を掘り下げてみます。


Docker Desktopとは?

Docker Desktopは、MacやWindows上でDockerを簡単に利用できるようにするためのアプリケーションです。

DockerはもともとLinux前提の技術であり、そのままでは非Linux環境で動作させることはできません。

しかし、Docker Desktopによって、Linux以外のOS上でもシームレスにDockerを動作させられるようになりました。

Docker Desktopが提供する主な機能

Docker Desktopには、以下のようなツールがひとまとめに含まれています

  • Docker Engine:コンテナの実行や管理を行う中核部分。
  • Docker CLI:コマンドラインツール。
  • Docker Compose:複数コンテナの構成を記述・管理するためのツール。
  • 仮想化技術:非Linux環境にLinux環境を提供するための技術(後述)。

これらを一括で提供してくれるDocker Desktopは、初心者から上級者まで幅広いユーザーにとって使いやすい環境を整えてくれる、いわば「Dockerパッケージ」です。

過去の背景:Docker Toolbox時代

Docker Desktopが登場する以前、MacやWindowsでDockerを使うには「Docker Toolbox」という仕組みが必要でした。

このDocker Toolboxは、VirtualBoxを使ってLinuxの仮想マシンを動作させ、その上でDockerを動かすというものでした。

当時は、以下のような手順が必要でした

  1. VirtualBoxでLinux環境を用意する。
  2. その環境にDockerをインストールする。
  3. 各ツールを手動で連携させる。

手間も多く、特にDockerの初心者にはハードルが高い方法だったといえます。


現在の仕組み:Docker Desktopの進化

現在のDocker Desktopは、この仮想化部分を大幅に簡略化しています。MacではHyperKit、WindowsではWSL2(Windows Subsystem for Linux)といった軽量な仮想化技術を活用することで、Linux環境を自動的に提供してくれます。

この仕組みによって、以下のような利点が生まれました

  • シームレスな操作性:仮想マシンの管理を意識せずにDockerを使える。
  • パフォーマンス向上:より高速な起動と動作。
  • 簡単なセットアップ:ツールや環境を手動でインストールする必要がない。

深掘りしたいDockerの裏側

Docker Desktopを使うとき、普段あまり意識しない「Dockerの裏側」には、実に興味深い仕組みが隠れています。これらを知ることで、Dockerをより効果的に使えるようになるかもしれません。

1. コンテナとイメージの仕組み

Dockerのコンテナは、軽量な仮想化技術に基づいており、イメージというテンプレートを元に作られます。イメージはレイヤー構造になっており、必要な部分だけを効率よく管理できます。この仕組みを理解することで、ストレージ使用量を最適化したり、イメージのビルド時間を短縮したりすることができます。

2. ネットワーク設定

Dockerでは、複数のコンテナ間や外部ネットワークとの通信を設定するための仮想ネットワークが用意されています。Docker Desktopでは、デフォルトの設定でも十分に使えますが、必要に応じてカスタマイズすることで、セキュリティやパフォーマンスを向上させることが可能です。

3. ストレージ管理

コンテナ内でのデータの永続化は重要な課題の一つです。Docker Desktopでは、ボリュームやバインドマウントといった仕組みを活用することで、データを効率よく管理できます。


まとめ:基礎を整理し、もっと深く学ぶ

こうしたDocker Desktopの仕組みや背景を理解することで、普段の開発体験がさらに向上します。

私自身、この調査を通じて「もっとDockerを深く知りたい」という意欲が湧いてきました。

これからはコンテナやイメージの効率的な管理方法や、より高度なネットワーク設定などにも挑戦し、学んだことをブログ記事やコミュニティで共有していきたいと思います。

Dockerは奥が深い技術ですが、仕組みを理解することで使いこなしの幅が広がります。もしこの記事が「Dockerをもう一度見直してみよう」というきっかけになれば幸いです。

参考情報

docs.docker.com book.mynavi.jp Docker Desktop for Macのボリュームのデータはどこに保存されるのか #Linux - Qiita

広告を非表示にする