こんにちは!
スマレジ・テックファームのWebエンジニアやまてと申します。
はじめに
Web関連の自習について、学習効率を高めることを目的として、月に1記事、振り返りのブログ記事を投稿しています。
半期目標 Goal
下半期(2022/11/01 ~ 2023/04/30)の目標は、以下を掲げています。
1. PHPフルスクラッチでのWebアプリケーション開発の学習
2. スマレジアプリマーケットのWebアプリ開発
3. 出向先で必要な技術の学習
※ 半期目標の詳細はこちらの記事で書きました。
目次
今回は、先月 11 月を振り返ります。
- はじめに
- 1. PHPフルスクラッチでのWebアプリケーション開発の学習
- 2. スマレジアプリマーケットのWebアプリ開発
- 3. 出向先で必要な技術の学習
- その他
- 計画 Plan - 12月
- おわりに
記事は PDCA の順に書き出します。
それぞれ、以下を書き出すイメージです。
- 計画 Plan → 何をするの?
- 実行 Do → 何をしたの?
- 検証 Check → やってみてどうだった?
- 改善 Act → 今後どうする?
計画 Plan - 11月
以下のとおり、先月の計画を立てました。
計画 Plan - 11月
下半期(2022/11/01 ~ 2023/04/30)の目標に沿った11月の計画です。
1. PHPフルスクラッチでのWebアプリケーション開発の学習
- 独学エンジニアの動画講義、課題
- 読書『良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方』
2. スマレジアプリマーケットのWebアプリ開発
- 読書&ハンズオン『TerraformでFargateを構築してGitHub Actionsでデプロイ!Laravel編』
- スマレジ・アプリマーケットに公開できるWebアプリ(PHP/Laravel)開発の下調べ
3. 出向先で必要な技術の学習
1. PHPフルスクラッチでのWebアプリケーション開発の学習
具体的な行動計画は以下の通りです。
- 独学エンジニアの動画講義、課題
- 読書『良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方』
1-1. 独学エンジニアの動画講義、課題
1-1-1. パート「フルスクラッチでWebアプリケーション」(最新更新分)についての動画試聴と課題
実行 Do
- Web開発についての動画学習教材 独学エンジニア の「PART8 フルスクラッチでWebアプリケーション」の下記の講座(動画視聴、課題)を受講しました。
検証 Check
- 講義内容は、実装の概要説明 → 実装の演習(動画講義内で実装の画面を全て実演してくれるハンズオン動画)です。自分でも演習どおりにハンズオンで進めながら、動画自体は繰り返し視聴しました。
- 完成後は、デバッガー(Xdebug)でステップ実行しながら、実際の動きを確かめました。
改善 Act
- ルーティング、コントローラー、オートローディング、ビューと順に作成していますが、言語フレームワーク(Laravelなど)でやってくれている機能を実際に実装することは、本当に勉強になります。
- また、本当にフレームワークみたいに動いてる!…ということに単純に驚きました。笑
- ただ、ルーティングを実装したときにも思いましたが、コードの節々を理解するのは難しく感じたため、何度か復習して理解を深めたいです。
1-1-2. ブラックジャックについて、スマレジの教育担当の方にレビューをもらった点についての修正
実行 Do
- 9月まで取り組んでいた「PHPで作ったコンソール画面で操作するブラックジャックゲーム」について、社内の教育担当の方にレビューをしていただいた改善点について、以下の修正をしました。
メッセージ表示についての Message クラスへの一任
検証 Check
- コードを久しぶりに読み返しましたが、整理してきたのもあり、まだまだではありますが可読性が少し上がったのでは、と実感しました。
改善 Act
- 全て実施するつもりでしたが、以下のレビュー内容の修正のやり残しがあるため、12月序盤で完了させます。
- switch 文の利用
- status 情報の判定ロジックの Class への内包
1-2. 読書『良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方』
実行 Do
『良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方』(以下、ミノ駆動本)について、以下の章を読みました。
- 1 悪しき構造の弊害を知覚する
- 1.1 意味不明な命名
- 1.2 理解を困難にする条件分岐のネスト
- 1.3 さまざまな悪魔を招きやすいデータクラス
- 1.4 悪魔退治の基本
- 2 設計の初歩
- 2.1 省略せずに意図が伝わる名前を設計する
- 2.2 変数を使い回さない、目的ごとの変数を用意する
- 2.3 ベタ書きせず、意味のあるまとまりでメソッド化
- 2.4 関係し合うデータとロジックをクラスにまとめる
- 3 クラス設計 ―すべてにつながる設計の基盤―
- 3.1 クラス単体で正常に動作するよう設計する
- 3.2 成熟したクラスへ成長させる設計術
- 3.3 悪魔退治の効果を検証する
- 3.4 プログラム構造の問題解決に役立つ設計パターン
- 4 不変の活用 ―安定動作を構築する―
- 4.1 再代入
- 4.2 可変がもたらす意図せぬ影響
- 4.3 不変と可変の取り扱い方針
検証 Check
- 電車での通勤時間があるため、往復で30分程度の読書時間に充てています。
- 読むタイミングとしては、とても良いタイミングと感じています。独学エンジニアでオブジェクト指向についての課題(ブラックジャックゲーム作成など)を完了させて間もないため、そのときにどう書くのが良かったかを考えながら読んでいます。
改善 Act
- 読書感想文を、ブログ記事(もしくは Qiita 記事)としてアウトプットをしようと考えています。読書した本に関連したアウトプットをしたことがないため、どういう切り口で書くか考え中です。ブラックジャックゲームのプログラムについて、ミノ駆動本で得た知識でリファクタリングする、というのが案のひとつとして考えていますです。
2. スマレジアプリマーケットのWebアプリ開発
具体的な行動計画は以下の通りです。
- 読書&ハンズオン『TerraformでFargateを構築してGitHub Actionsでデプロイ!Laravel編』
- スマレジ・アプリマーケットに公開できるWebアプリ(PHP/Laravel)開発の下調べ
2-1. 読書&ハンズオン『TerraformでFargateを構築してGitHub Actionsでデプロイ!Laravel編』
実行 Do
以下の章について、ハンズオンを実施しながら、読み進めました。
- 第1章 Laravel アプリケーションの作成
- 第2章 Terraform のセットアップ
- 第3章 ECR の構築と Terraform の基本操作
- 第4章 GitHub Actions でイメージを ECR にプッシュする
検証 Check
- まだ序盤ですが、初見のことばかりなので、理解がかなり大変でした。
- まだ、 Terraform のコマンド実行で何が起きているのか、こんな感じかなとふんわりとしか理解しないままハンズオンを進めている感覚ですが、実際にハンズオンしているとなんとなーくはわかってくる感触があるため、基本的な使用方法については、そのうち身に付きそうです。
改善 Act
- アプリ開発で実際に活用できるように、なるべく早く一巡を完了させたいと思っています。
2-2. スマレジ・アプリマーケットに公開できるWebアプリ(PHP/Laravel)開発の下調べ
実行 Do
未着手です。以下を実施しようとしていました。
- インセプションデッキ作成
- 技術選定
- 開発環境構築
検証 Check
- なし。
改善 Act
- 以下を実施します。
- インセプションデッキ作成
- 技術選定
- 開発環境構築
- まずはどんなアプリを作るか、ざっくりと決めて、ざっくりとした1つの機能を作るところまで、なるべく早く到達したいです。
3. 出向先で必要な技術の学習
具体的な行動計画は以下の通りです。
- AWS(ECS(Fargate)、DynamoDB)、Docker、Redisについて、以下の学習
3-1. 読書&ハンズオン『TerraformでFargateを構築してGitHub Actionsでデプロイ!Laravel編』
同上です。
→2-1. 読書&ハンズオン『TerraformでFargateを構築してGitHub Actionsでデプロイ!Laravel編』
改善 Act
- 出向先で必要な技術の学習については、 Redis の基礎を特に把握しておきたいと思っているので、12月の課題としたいです。
その他
所属部署の有志での内製アプリ共同開発
- 同部署(スマレジ・テックファーム)の経験3年以上のエンジニアの方が、開発するならコードレビューするよ、と言ってくださっていて、実際に始動しました。コードレビューに飢えている私にとってはこの上ない機会だと思っています。すでにやることを目いっぱい設定していますが、優先度繰上げで取り組んでいきます。
実行 Do
以下を実施しました。
- DockerでLAMP環境の開発環境構築(Amazon Linux 2/Apache/MySQL/PHP8.1/Laravel9)
- Laravel Breeze での認証機能追加
- ソフトデリート機能追加
- DB設計(テーブル設計、ER図作成)
- Xdebug 導入
検証 Check
- 今のところ毎週 MTG させてもらっています。その時に技術的な聞きたいことが聞けるので最高です。
改善 Act
- 目標設定した課題との優先順位を決めていきたいところですが、今のところは全部やろうとしてみて、調整していこうと思います。
- 12月から行動計画に組み込みます。
ブログ記事投稿
実行 Do
以下のブログ記事を投稿しました。(週一ペース)
検証 Check
- ポートフォリオとして作成したWebアプリの機能実装を振り返るのは、Laravel での開発を忘れてしまいそうだったのを思い出せたので、このタイミングでやっておいてよかったです。
改善 Act
- 今後も記事内容としては、インプットしたい内容のアウトプットに絞っていきたいです。
Qiita記事投稿
実行 Do
以下の記事を Qiita で投稿しました。(月 1 記事)
- PHP についての Qiita 公式イベントがあったので参加しました。
Qiita Advent Calendar 2022 に参加することにしたので、 投稿予定の 14 記事の下書きをしました。
検証 Check
- スマレジでの研修の振り返りの機会になりました。
改善 Act
- 12月は、 Qiita Advent Calendar 2022 に参加して 25 記事投稿します!14 記事は下書きが完成してるので、あと 11 記事を書いていきます。
Qiitan のぬいぐるみもらうために、今日からの25日間、毎日1記事投稿します。https://t.co/UDFWJmGm8K
— やまて|Webエンジニア2年目 (@r_yamate) 2022年11月30日
朝活の継続
- 一日1〜3時間程度の朝活を、4月8日に開始して以降毎日継続更新中です(11月30日で、237日継続)。
学習時間の確保(月100〜120時間)
- 105時間学習しました。
- 実は新型コロナウイルス陽性になりました。が、症状は軽かったため、学習は継続しました。
コロナの症状は発熱もなく、軽度のまま過ぎ去りそう。朝活1時間以上の毎日継続は途切れなくて済んだ。
— やまて|Webエンジニア2年目 (@r_yamate) 2022年11月17日
SES出向先での実務
実行 Do
- システム改修の設計段階ですが、資料作成(詳細設計書の作成)について、作業しています。
検証 Check
- 家族や自分のコロナ療養期間につき、 11/11(金)〜22(火) の期間、出向先での勤務ができませんでした(出向先には在宅勤務での勤務体制がなかったため)。
- コロナの症状は軽度だったため、勤務日については、ずっと自己研鑽の学習をさせていただいていました。
改善 Act
- 現在の案件については、3月末までを予定しているため、それまでは実装業務はありませんが、設計その他の知識を得ていきたいと思います。
計画 Plan - 12月
下半期(2022/11/01 ~ 2023/04/30)の目標に沿った12月の計画です。
1. PHPフルスクラッチでのWebアプリケーション開発の学習
- 独学エンジニアの動画講義、課題
- 読書『良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方』
2. スマレジアプリマーケットのWebアプリ開発
- 読書&ハンズオン『TerraformでFargateを構築してGitHub Actionsでデプロイ!Laravel編』
- スマレジ・アプリマーケットに公開できるWebアプリ(PHP/Laravel)開発の下調べ
3. 出向先で必要な技術の学習
- AWS(ECS(Fargate)、DynamoDB)、Docker、Redisについての以下の学習
4. アプリ共同開発
- アプリ共同開発
おわりに
11月の振り返りは以上です。
ありがとうございました。
昨年の12月1日入社だったので、今日からWebエンジニア2年目。1年目同様、この先一年も淡々と毎日継続する。1年で2年分強くなる。
— やまて|Webエンジニア2年目 (@r_yamate) 2022年11月30日
2021年12月からスマレジで働いているため、2022年11月末時点で、Webエンジニア経験はちょうど 1 年になりました!…焦りもありますが、結局は一つ一つ着実に進めるしかないので、そのようにやっていきます。