こんにちは。今年の3月はひなまつりに皆既月食でしたね。
1月2月に続いて、3月の学習内容も振り返ります。

- 1月ブログはこちら:https://qiita.com/11eleven/items/be7adbd4b5dde77a1419
- 2月ブログはこちら:https://qiita.com/11eleven/items/adb3c3253a63f332f4d9
では、3月分のやったことと分かったことをまとめます!
やったこと
1. 先輩との1on1のためコーディング練習 / 1on1当日
画面共有をしながら、自分のPHPコーディングスキルを確かめるための1on1を行いました。また検索スキルも確認するため、1on1ではAI検索も禁止されていました。
1on1で確認した内容
- 配列をTSV文字列に変換するメソッドの作成
- 名前空間の定義と使用
- メソッド内にて改行コードの使用
- 作成したメソッドの仕様変更
1on1に向けて、個人で多次元配列処理・ループ処理・クラスの実装処理などを事前に整理しました。
正直たくさん準備はしたつもりでしたが、1on1当日、AIを使わず仕様書を確認しながらコードを組み立てることがかなり難しく、ほとんどヒントを貰ってしまったことが悔しかったです...
2. オリジナルアプリ(FoodLog)の作成
1on1を通して、まだまだ実際にコードを書く練習が足りないと気づき、日々食べた食事を管理するWebアプリをピュアPHPで作成しました。
0からアプリを作ってみて、処理の流れをより解像度高く学べたと思います。
加えて、純粋にものづくりとして自作アプリを作るのは面白かったです。あえて特殊文字や使い慣れていないタグを用いてフロントエンドを作ってみたり、論理削除と物理削除機能どちらも実装してみたり、工夫しながら作れたと思います!
FoodLog 実装機能
| 機能 | 内容 |
|---|---|
| 登録 | データの登録処理 |
| 削除 | 物理削除処理 / 論理削除処理 |
| 画像 | 画像登録処理 |
3. SQLの壁打ち練習
FoodLogのPHPファイルにSQL文を埋め込む形でCRUD処理を練習しました。
また、SQLab というSQLの練習サイトで計43問を解きました。
学習したSQL文
- CRUD操作(4大構文)
-
GROUP BY句・HAVING句を用いたグループ化 -
JOIN句を用いたテーブル結合 -
WHERE/LIKE/LIMIT/IS NOT NULL/IN/ サブクエリなどを用いたデータ条件指定
4. Laravelコード読解
先輩が作成したLaravelを用いたWebアプリ(職業管理アプリ)のコード読解を行いました。随所に意図的に抜けているコードがあり、読解を進めながら約20%の実装を担当する形でした。
CBCという学習サイトで簡易的なアプリをLaravelで作った経験がありましたが、このプロジェクトでは初めて知る概念が複数あり、正直かなりAIに頼りました... 自分の力量不足を再度痛感した学習でした。
実装機能一覧
- 職業 一覧画面 表示機能
- 職業 新規登録機能 / 新規画面表示機能
- 職業 詳細画面 表示機能
- 職業 更新機能
- 職業 削除機能
- 職業 編集画面 / 編集確認画面 表示機能
5. AWS SAA資格勉強・合格 🎉
隙間時間にSAAの勉強を行い、合格しました!
学習には Ping-t を使用。特に【試験レベル】の問題集を重点的に解きました。「ヒット」という連続正答できていない問題に絞る機能があり、試験前はそれらを往復練習していました。
学んだこと
FoodLogを通して
0からの自作アプリ作成を通して、フロントエンドに少し慣れることができたと思います。
HTMLタグは計32個、CSSプロパティも32個使用でき、一部Gridの使用もできました。
一方で、以下の点では自分の力量不足を感じたので、今後重点的に学んでいきたいと思います✨
今後の課題
- 複数のテーブルを用いたSQL処理
- バックエンド関連の工夫・アレンジ
- JSを用いた動きのあるフロントエンドの処理能力
先輩のLaravelプロジェクトの読解を通して
コード読解を進めながら、CBCで作成した簡易的なアプリと比べて気づいた点や、理解が浅かった概念を整理できました。
新たに知ることができたこと
- Web.phpの前にコントローラを用いる構成
- 処理の重複を避けるための
@ディレクティブの活用 - ファイル権限の付与が必要なケース
- 通常のforeach文に代わる
foreach(...): endforeach;構文(可読性向上) - LaravelとCSSフレームワーク Bootstrapの併用
まだ慣れていない部分
-
web.phpでのrouteメソッドを用いたURL作成 - Bladeファイルのパーツ化
- PHPの標準関数の把握(今回のプロジェクトで複数の関数を初めて知った)
挙動を確認して理解を深めたこと
- シーダーファイルを編集してオリジナルのテストデータを挿入
-
APP_KEYの作成(コマンド操作)と、未定義時の挙動の確認 -
JobControllerのreturnを変えて遷移ページを操作
SQL学習のふりかえり
基本的なデータ表示・簡単なJOIN・条件指定はできるようになりました。
一方で、以下が今後の課題です。
SQL課題
- JOINした各テーブルを意識した条件指定
- CRUD操作を何も見ずに記述できること(特に以下の3つが曖昧)
INSERT INTO テーブル名 (カラム1, カラム2) VALUES (値1, 値2); UPDATE テーブル名 SET カラム名 = 新しい値 WHERE 条件; DELETE FROM テーブル名 WHERE 条件; - インデックスを用いたパフォーマンス改修
- 実行優先順位の把握(
WHERE→GROUP BY→HAVING)
AWS SAA学習のふりかえり
AWSのコンソール操作は行いませんでしたが、試験学習を通して頻出サービスの組み合わせや構築時の考え方を網羅的に学べたと思います。
それと同じくらい 「学習の記録と復習の重要性」 を改めて痛感しました。
朝一番にすることは新しいことを学ぶことではなくて、昨日の復習。
一日の最後にすることは今日やったことの整理。
この気づきは今後も大切にしていきたいです。
さいごに
次は基本情報技術者試験も合格します!
