転職したらスマレジだった件

スマレジのエンジニアやまてのテックブログです。マジレス大歓迎です。

ひと月の振り返り - 2022年7月

こんにちは!

スマレジ・テックファームのWebエンジニアやまてと申します。


7月はこちらの勉強会(交流会)行ってきました!Twitterでしか知り合っていない方とお会いできて楽しかったです。

あと、

七夕はとても大切な願いごとをしました。


はじめに

目的

Web関連の自習について、学習効率を高めることを目的として、月に1記事、振り返りのブログ記事を投稿しています。


半期目標 Goal

自己成長についての半期(2022/05/01~2022/10/31)の目標ですが、以下の内容にしています。

1.DB設計の習得

2.PHPオブジェクト指向の習得

3.Webアプリケーションのセキュリティの習得

(過去記事:ひと月を振り返るための振り返り - 転職したらスマレジだった件

「習得」のレベル感としては実務で求められる業務に食らいつけるくらいのイメージです。

読んでいただく方にとっては参考になるかはわかりませんが、どんなことを考えながら学習を進めているかを書き出していけたらと思います。


今回は、先月7月を振り返っていきます。

INDEX

計画を立てる → ひとまずPDCAサイクルを回していこう!ということで、記事構成としてもPDCAの順に書き出していきます。


計画 Plan - 7月

以下のとおり、先月(2022年6月)の計画を立てました。

計画 Plan - 7月

1. SQL、データベース

  • 独学エンジニアの動画講義、課題

2. PHPオブジェクト指向の習得

3. セキュリティ(徳丸本)

  • 4.Webアプリケーションの機能別に見るセキュリティバグ

4. 技術系のブログ記事投稿(週一ペース)

(過去記事:ひと月の振り返り - 2022年6月 - 転職したらスマレジだった件


1. SQL、データベース

実行 Do

dokugaku-engineer.com

Web開発についての動画学習教材 独学エンジニア の「PART7」の下記の講座(動画視聴、SQLコーディング課題など)を受講しました。

  • レッスン41:高速なクエリを書こう
    • CASE式で条件分岐
    • N+1問題
  • レッスン42:トランザクションで同時実行制御しよう(最新講義)

検証 Check

  • レッスン42については、最新講義で更新中なので、更新された分だけ進めました。
  • 実務でまさにトランザクション制御について考慮する設計を調査する作業があったので、優先的に取り組みました。

改善 Act

  • 8月も最新の講座を都度進めていきます。


2. PHPオブジェクト指向の習得

実行 Do

dokugaku-engineer.com

Web開発についての動画学習教材 独学エンジニア の「PART3 PHPオブジェクト指向」の下記の講座の課題について実装をしました。

ブラックジャックゲームを言語はPHPで、オブジェクト指向を使って実装する課題です。

自分だけでの実装ですが、ブランチ作成、コード変更、プルリク、マージしながら(GitHub flow )、進めています。

github.com


ステップ

  1. 実装前にまずは PlantUML で、ユースケース図、クラス図、シーケンス図を書きました。 github.com
  2. 実装については、クラス図をもとにファイルを作成し、シーケンス図をもとにゲームをスタートする処理を書き始めました。 github.com
  3. このブランチで、ディーラーとプレイヤーの2人で対戦するコンソールゲームとして、基本的な動作をする状態になりました。 github.com
  4. 静的解析ツール(PHP_CodeSniffer, PHPMD, PHPStan)でのリファクタリングをしました。 github.com
  5. 書けていないテストコードを追記しました。 github.com
  6. 機能追加として、A(エース)を1点 or 11点の都合の良い方でカウントする変更をしました。 github.com

検証 Check

  • テストを先に書きながら進める(実装したい機能のテストを先に書いてからその機能を実装する)ことができていませんでした。

  • 残る機能追加の課題は以下の2ステップです。

    • 最大3人までのプレイヤーでプレイできるよう変更する
    • ダブルダウン、スプリット、サレンダーのルールを追加する

改善 Act

  • テストを先に書きながら進める(実装したい機能のテストを先に書いてからその機能を実装する)のを習慣づけることが、今後の課題です。そして、どんなテストを書けばいいかまだわかっていないため、何らかのかたちで習得が必要です。
  • SOLID原則に沿って書けているか、デザインパターンでもっとコードが良くならないかについて、機能追加中か、最終的な段階でチェックしていきたいです。
  • 2週間を期限と設定して始めましたが、1ヶ月経過しています。自習なので与えられた期限はないとはいえ、完成までの期限については実務を意識して、なるべく工数を見積もって進めることを習慣づけたいです。よくわからんからとりあえず2週間で、ではなく、工数の見積もりを分からないなりにもしてみて、仮でも期日を決めて、それを目処に進めるようにします。ということで、残りの機能追加はタスクを書き出して、見積もってみます。


3. Webアプリケーションのセキュリティの習得

実行 Do

5月に読み始めた『体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践(徳丸 浩 (著))』(通称「徳丸本」)を読み進めています。

wasbook.org

  • 4.Webアプリケーションの機能別に見るセキュリティバグ
    • 4.3. 表示処理に伴う問題
    • 4.4. SQL呼び出しに伴う脆弱性
    • 4.5. 「重要な処理」の際に混入する脆弱性
    • 4.6 セッション管理の不備

検証 Check

  • 一日一項目ずつ進めました。

改善 Act

  • 688ページ中の230ページ程度まできました。淡々と読み進めます。ただ、ちょっと読んでて理解が深いところまでできていない感覚があります。
  • ブログ記事の題材としてアウトプットすることを理解を深める次の一手として考えていて、過去にポートフォリオとして作成したWebアプリ(PHP/Laravel)をセキュリティの観点でチェックしていくことを考えています。


4. 技術系のブログ記事投稿

実行 Do

  • 毎週、ブログ記事を投稿しました。記事の内容は以下のとおりです。

ryamate.hatenablog.com

ryamate.hatenablog.com

ryamate.hatenablog.com

ryamate.hatenablog.com

ryamate.hatenablog.com

  • ブログに加えて、Qiitaにも投稿しました。

qiita.com

qiita.com

ER図の作図についての記事は、ブログ記事を書いた時には使ったことなかった Mermaid について使ってみて、それを追記して編集した記事です。

検証 Check

  • ブログの方はアクセス数は中々伸びません。

  • Qiitaに投稿した理由としては、 Mermaid の感想聞きたいとTwitterでリクエストいただいたことと、読んでいただいたリアクションがもっと欲しくなった、という理由です。

トレンド1位は全く想定していませんでした…読んでいただける桁が違いますね。

コメントでツールを紹介いただいたりもして大変参考になりました。

また、スマレジ社内のエンジニアの方でも読んでいただいた方がいて、コメントいただけたこともとてもありがたかったです。

改善 Act

  • アクセス数を伸ばすのは主目的ではありませんが、読んでもらえる記事を書こうとすることは、良いインプットやライティング能力の向上につながると考えているので、工夫していけたらと思います。
  • あと、好きな技術ブログからは真似できるところは真似していこうかと思います。

yutaro-blog.net

blog.capilano-fw.com

  • ブログとQiitaで同じような記事を投稿しても、自身の技術力の向上には直接役に立たないかもしれませんが、今後も題材によってQiitaにも投稿してみようと思います。書き物をより多くの方に見ていただけるという点においては、より良い記事を書くためによりインプットしよう、というモチベーションにはつながり、コメントいただいた際には知見が広がると感じられたためです。


その他(習慣化など)

朝活の継続

  • 一日1〜3時間程度の朝活を、4月8日に開始して以降毎日継続更新中です(7月31日で、115日継続)。

学習時間の確保(月100時間)

  • 98.5時間学習しました。8月も100時間学習を目処に学習します。

実務

  • システム改修の設計段階だったですが、データベース関連のことで、排他制御をどのように実現させるか、ということを考える時間が最も長かったです。AWSのデータベース関連のフルマネージドサービスでどのサービスが良いか、という調査資料を作成したりしました。
  • そして上記をどのように実現させるかについて、PlantUMLでシーケンス図を書いていく作業などをしました。

    図を作成することで自分の頭の中で理解が深まっていく感覚があります。理解が深まることで、今後自分でも、こうした方が良いのではないかなど分かってきたり、仕事の貢献度が変わってくると思うので、自分の頭で考えながら一つ一つの作業を進めていきます。


計画 Plan - 8月

1. SQL、データベース

  • 独学エンジニアの動画講義、課題

2. PHPオブジェクト指向の習得

3. セキュリティ(徳丸本)

  • 4.Webアプリケーションの機能別に見るセキュリティバグ

4. 技術系のブログ記事投稿(週一ペース)

  • 今後のブログ記事の題材案
    • 転職活動時のポートフォリオとして作成したWebアプリの「振り返り」と「これまで学習してきたことを踏まえての深堀り」
    • 徳丸本学習の振り返り
    • PHPブラックジャック作成のまとめ
    • その他、独学エンジニアで学んだことのまとめ


7月とほぼ同様です。

また、下半期開始(11月〜)くらいで、スマレジのAPIを利用したWebアプリ開発したいと思ってます。

振り返りは以上です。来月も振り返っていきます。


ありがとうございました。