じぶん対策

日々学んだことをアウトプットして備忘録にしています。

DRY原則とそのトレードオフ

はじめに おそらくもっとも有名なソフトウェア工学の原則の1つに、DRY(Don't Repeat Yourself)原則があります。DRY原則は、同じコードを何度も書かないようにすることを目指しています。この記事では、DRY原則の重要性とそのトレードオフについて考えてみ…

「世界一流エンジニアの思考法」から学ぶエンジニアが持つべきメンタルモデル

はじめに 今回は「世界一流エンジニアの思考法」を読んで、エンジニアが持つべきメンタルモデルについて考えてみます。 結構流行りの本なので、要約記事も多く存在しますが、個人的に重要だと感じた部分をピックアップして個人的な所感をまとめてみます。 「…

駆け出しエンジニアからジュニア・ミドルレベルへの成長の道のり

はじめに エンジニアとしてのキャリアをスタートしたばかりの方が、ジュニアレベルやミドルレベルのエンジニアとして活躍するために必要なスキルや知識について考えてみます。 この記事はWEB領域のエンジニアを対象としています。 前提 前提として、私の知っ…

Next.jsのServerActionsを試してみる

はじめに ここ最近あまり手を動かして新しいものを作成することができていなかったので、今回はNext.jsのServerActionsを試して見たいと思います。 まずは簡単なTodoリストの作成から始めてみます。 開発方針 個人開発ですが、先にデプロイの方法を考えてか…

最初からちゃんといろんなことを検討して設計しろ VS 爆速でプロトタイプ作った方がいろんな問題可視化されて結果的に早いだろ

はじめに 社内slackのtimesチャンネルでふと思ったことを書き込んだところ、複数の方から反応があったので個人的な意見をまとめてみました。 書き込んだ内容は 最初からちゃんといろんなことを検討して設計しろ VS 爆速でプロトタイプ作った方がいろんな問題…

2024年の抱負

はじめに ぼちぼちスマレジに入社して二年が経とうとしています。 入社してから、必死にいろんなことに取り組んできた二年間でしたが、今年の目標も言語化しておきたいと思います。 2024年の目標 今年達成したいなあと思っていることは、大きく分けると個人…

「t-wadaさんが後世に残したい、実録レガシーコード改善」を聞いて得た気づきメモ

はじめに 個人的なエンジニアとしての強みとして、テストやレガシーコード改善を武器にしていきたいと考えて日々プログラミングと向き合っています。 そんな中、t-wadaさんが後世に残したい、実録レガシーコード改善というイベントの再放送に参加し、自身の…

2023年の振り返り

はじめに 2023年もあっという間に大晦日になりました。 今年は、エンジニアとして仕事面でも成長でき、プライベートも充実した一年間でした。 今年一年間力をいれて取り組んできたことと、来年取り組んでいきたいことをまとめてみたいと思います。 2023年の…

PHPの例外入門!

はじめに PHPやLaravelを使って開発をしていると、例外処理という言葉をよく耳にします。 前半は例外処理について、初学者を対象に解説していきます。(PHPにはこういう機構があるよといった入門的な部分) 後半はPHP,Laravelの例外の概要と、筆者の考える実践…

Mockeryを使った引数の検証方法まとめ

はじめに プログラミングをしていて、誰しもわからない箇所やメソッドの使い方がわからなくて調べる事があると思います。 今回、私は一度引っかかったことにもう一度引っかかって、さらに思い出すまでに時間がかかったのでメモとして残しておきます。 また、…

社内勉強会レポ 2023-11-10 GraphQL

はじめに 今回は社内勉強会のレポートです。 定期的に社内のエンジニアで集まって勉強会を行っています。 勉強会のノリとしてはだいぶ緩く、お題はなんでもいいんですが参加者が気になっている技術などについてあまり前準備なく、みんなで調べて見解を共有す…

DDD(Domain Driven Design: ドメイン駆動設計)を布教したい

はじめに 今回はドメイン駆動設計を布教する際に押さえておくことを整理して記事にしたいと思います。 この記事では、DDDの概要を整理するとともに、DDDの採用におけるメリットを整理していきます。 これから勉強する人、そもそもDDDに興味がない人がすこし…

「プログラマー脳」を読んで得たエッセンス

はじめに 今回は、書籍「プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチ」を読んで、職業エンジニアとして業務を行うなかで、よりいいコードを書くために意識しておくべきことのヒントをいくつか得たのでまとめておきたいと思…

DB基礎 物理設計周り

はじめに WALプロトコル WALプロトコルは、Write Ahead Logの略で、データベースのトランザクション処理において、データの更新前にログを書き込むことを指します。 基本的な動作は以下の2点です。 データベースの更新は、まずその操作をログに書き込む(更新…

DB基礎 正規化と関係演算

はじめに 今回は実施まであと10日に迫ったIPAのDBスペシャリスト試験への対策としてDBの基礎的な部分の復習をしていきます。 本業に加えて副業、個人開発等も行いながらのため対策の時間をなかなか捻出できていませんが、受験申し込みはしたので試験当日はし…

linuxの基本的なコマンドを復習する

はじめに 前回の記事でLinuxの簡単な操作について復習しました。 今回はよく使うコマンドについてオプション等を含めて再確認しながら、知らない部分をキャッチアップしていきます。 ls ファイルやディレクトリを一覧表示する ls [ディレクトリまたはファイ…

linuxの操作を復習する

はじめに WEBエンジニアにとってLinuxの操作は避けては通れない基本操作の一つです。 情報系の学校を卒業していたり、新卒でエンジニアになった場合は研修等で身につける機会があると思いますが、私のように専門の違う学校を卒業し、他業種からの転職でエン…

Renovate + GitLab CI を使ってパッケージの依存関係を自動更新する

Renovateとは 依存関係の自動アップデートツールです。 公式サイトはこちら 有名なのはdependabotですが、dependabotの場合は手動でalertsの内容を確認し、ローカルでnpm audit fixやcomposer updateを実行します。 その後、修正内容をコミットしてプッシュ…

LaravelにおけるRepositoryについて再考してみる

はじめに ここ最近、ツイッター上でLaravelにおいてのRepositoryの実装についての記事や意見をいくつか見かけました。 それらの記事や意見の内容を整理しつつ、自分なりにLaravelにおけるRepositoryの実装について再考してみたいと思います。 Repositoryとは…

ReactのuseEffectをきちんと理解する

はじめに 最近ReactやNext.jsを触る機会が多いのですが、スマレジでの業務で使用しているわけではないため、キャッチアップがおろそかになっているなあと感じています。 今回は、Reactに触れる上で必須かつVueとの違いにおいて重要な仕組みであるuseEffectに…

ChatGPTを活用しながらRailsで個人開発をしてみる

はじめに スマレジではLaravelをメインで使っているのですが副業で触っているRailsについては理解がまだまだ浅い部分があるため、個人開発でも触ってみたいと思います。 LaravelがRailsに影響を受けているフレームワークでもあるため、Railsを触ることでLara…

OIDCを使用したクライアントシークレットなしでのソーシャルログイン実装について調査してみる

はじめに 最近OpenID Connect(OIDC)を使用したログインを実装するにあたって、implecit flowを用いる方法があることを教えてもらったので調査した結果をまとめてみます。 関連するRFCや信頼できそうな記事、理解しやすい記事を含めたいと思います。 参考: OI…

「勉強法の勉強会」参加レポと個人的な所感まとめ

はじめに 久しぶりに社外の勉強会イベントに視聴者として参加してきました! 今回参加したのはゆめみ x とらラボ!主催の「勉強法の勉強会」です。 勉強会ってこんなにメモ取るのが忙しかったっけ?と感じるくらい自分に刺さる濃い勉強会だったのでその参加レポ…

エラーハンドリングをクリーンアーキテクチャで書く場合に意識すること

はじめに 業務においてクリーンアーキテクチャを意識してコードを日々書いていますが、「これってクリーンアーキテクチャの考えに沿うためにはどう書けば良いんだろう」と悩むことがあります。 今回はエラーハンドリングについて、クリーンアーキテクチャに…

ToDoリスト作成の振りかえり

はじめに WEBエンジニアになってすぐに作り始めたリポジトリがある程度まで動作するようになったので今回はそこから得られた学びをまとめておきたいと思います。 以前も少し触れましたが、このブログを書き始めて一年間がたちました。かなり気合を入れて毎週…

ブログを書き始めて一年が経った話

はじめに 今回は具体的な技術の内容ではなく、本ブログについて思うところをまとめたいと思います。 週に一本のペースで欠かすことなく、またそれなりの分量も記事を一年間継続して書けたかなと思います。 継続のために弊社スマレジのブログ手当の存在は結構…

TypeScriptのジェネリクスについて

はじめに 今回はTypeScriptのジェネリクスについてです。JavaScriptがある程度かければTypeScriptでつまづく箇所は結構少ないとは思いますが、つまづいたのがジェネリクスという概念でした。 今回はジェネリクスの仕組みと何を解決できるのかについて調査し…

「チームで働くエンジニアの心構え」について新人だった頃から意識してきたことを言語化してみる

はじめに 今回は書籍「Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセス」を読んでエンジニアになってチームで働くにあたって意識してきたことを自分なりに振り返ってみようと思います。 個人的にはエンジニア…

新しくPCを買ったのでDotfilesを作ってみる

参考 https://qiita.com/yutkat/items/c6c7584d9795799ee164 https://dev.classmethod.jp/articles/joined-mac-dotfiles-customize/ はじめに 今週M2 Pro Mac mini(2023)を購入しました! 2023モデルのM2チップ搭載Mac miniは最小構成で84800円と前モデルより…

Docker Composeについて

はじめに 前回の記事でDockerについて調査した続きです。 今回は実際にアプリを作成するとなると使うことになるであろうDocker Composeについて調査します。 前回同様公式ドキュメントのGet startedの内容を確認し、自分なりの設定方法を考えてみます。 Dock…