じぶん対策

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

Docker Composeについて

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

Dockerを雰囲気ではなく理解して使う

はじめに 以前Dockerについてごく簡単にまとめた記事を書きましたが、Webエンジニアになって一年が経とうとしているので改めてDockerについてまとめようと思います。 公式ドキュメントを自分なりに解釈してまとめたいと思います。 Dockerについての入門から…

astroに入門してみる

はじめに 最近フロントエンドへの自身の理解の甘さを感じるようになってきました。 ここ最近TypeScriptなどフロントエンドに関係する記事をいくつか公開しましたが、そろそろ実際になにか作ってみようと感じるようになりました。 そこで今回は気になっていた…

TypeScriptの型について

TypeScriptの型付け TypeScriptはJavaScriptに対して型を付与するという思想で仕様が定められています。 TypeScriptでは型を付与する方法として、様々な方法が用意されていますが、どこまで利用するかは費用対効果を考えながら行う必要があります。 any型 最…

TypeScriptでAtCoderに挑戦してみる

はじめに スマレジでは、副業が可能です。 https://corp.smaregi.jp/recruit/culture/workstyle.php 個人的に最近、副業にも挑戦しようかなと考え始めています。 副業に割ける稼働時間的には週10h程度となりそうなので、比較的タスクを細かくしやすいフロン…

積読解消 「レガシーコード改善ガイド」を読んでリファクタリングの知識をつける

はじめに 自チームで担当しているプロダクトでは常にリファクタリングを意識した開発を行っています。 なかにはかなりレガシーなプロダクトもあり、その改善への指針として書籍「レガシーコード改善ガイド」を購入していました。 去年の秋頃に買ったんですが…

JavaScriptにおけるクラスとTypeScriptにおけるクラスについて

はじめに 今回はES2015から変更されたJavaScriptのオブジェクト指向構文についてまとめたいと思います。 また、最近TypeScriptについて個人開発等で導入し始めているので違いを意識しながら理解していきたいと思います。 参考書籍 今回の記事は今読んでいるJ…

2022年の振り返り

はじめに 2022年もあっという間に終わってしまいました。 ここ数年の中で一番人生に大きな変化があった一年間ですし、とてもいい出会いが多かった一年間でもありました。 当初考えていた2022年の目標を踏まえて、一年間を振り返りながら、来年の目標を考える…

TypeScriptに入門する

はじめに 前回の記事同様直近の大きな課題感を感じているのはフロントエンド技術です。 今回はその中でも最近主流となっているTypeScriptに入門してみます。 私のエンジニア人生はC言語から始まっているので静的型付けで書けないJSに違和感をずっと感じてい…

JavaScriptにおける非同期処理について

はじめに 今までの学習内容でフロントエンドにあまり触れてなかったので今回はJavaScriptについて改めて理解をしていこうと思います。 JavaScriptに対する個人的な理解度はある程度文法や言語思想は理解できているもののJavaScriptらしい部分や歴史的な部分…

プログラミングにおける「DI」二種類の違いとは。依存性注入と依存性逆転について

はじめに エンジニアになって初めて人に知識を伝えるという場面がありました。 これまでチーム内ではたいてい自分が一番技術的に拙い部分が多かったので少しうれしくもありますが、正しくわかりやすく伝えるために勉強してきたことを棚卸しするとともに現時…

「ドメイン駆動設計入門」を読む その2 ユースケースを組み立てるためのパターン編

はじめに 前回の記事にて、ドメイン駆動設計への入門として、ドメインオブジェクトを紹介しました。 今回は実際にドメインオブジェクトを利用してユースケースを組み立てていきます。 そのためのステップとして、先にいくつか便利なパターンを紹介しておきま…

「ドメイン駆動設計入門」を読む その1 ドメインオブジェクト編

はじめに スマレジにて私が担当しているプロジェクトではドメイン駆動設計を取り入れて日々開発をしています。 ジョインしてからドメイン駆動設計について説明を受けたものの体系的に学べていないので書籍を一つ読みながら足りていない箇所を補っていきます…

システムの権限方式について

はじめに 今回はシステムのアクセス制御、つまりユーザーの操作権限の管理のしくみを考えていきます。 管理者フラグ形式 最も簡単に実装できる方法です。 ユーザーテーブルに管理者フラグを実装し、管理者の場合は権限を持つように実装します。 メリットはシ…

ソフトウェアのユニットテストにおけるモック化を巡った派閥と費用対効果について考えてみる回

はじめに 以前からたびたびソフトウェアのユニットテストに関する記事を公開してきました。 過去記事 - ユニットテストについて考えてみる。PHPUnitでモックを使用して小さいユニットテストを書く。 - Mockeryの基本的な使い方 - ユニットテストに関する前提…

再帰的なデータ構造で閉包テーブルを使用したToDoリストを作ってみる ~その1~ 目標設定とDB設計

はじめに 前回の記事で半年間の振り返りをしました。このブログも約半年間継続できていろんなことをインプットできているかなと思います。 そろそろアウトプットとしてゴリゴリ実装したいなという気持ちになっているので、インプットと並行してなにか個人開…

2022上半期を振り返ってみる(その他最近の雑記)

はじめに 私が株式会社スマレジに入社したのは2022年の3月でした。早いことにもう半年以上が経ちます。 エンジニアとして働き始めたのは前職からなので数年の経験があることになりますが、スマレジに入社してからの半年間はかなり濃いものでした。 今回は日…

LaravelのEagerLoadについて

EagerLoadとは 「Eager」は「熱心」という意味 ORMにおけるN+1問題を解決するために使用される 先に取得したModelに対して事前にリレーションを取得する仕組み Eloquentの場合はプロパティとしてリレーションにアクセスする場合に行われる。 例 まずは公式サ…

クリーンアーキテクチャのUseCaseにおけるInput,Outputについて

はじめに クリーンアーキテクチャにやっとの思いでなれ始めているこの頃ですが、日頃業務で実装をしていくにあたって疑問に感じることがあります。 とはいえ大抵のドメインでは既存の実装に倣ってしまうこともあるんですが、自分の感じた疑問については自分…

JavaScriptの基本の復習

はじめに https://gihyo.jp/book/2016/978-4-7741-8411-1 本を読んだ感想や内容の簡単なまとめを書きます。丸写しではなくあくまでも自分用のメモなので細かい箇所については書籍をご確認ください。 JavaScriptの言語仕様についてのまとめになるので、全てを…

ORM(オブジェクト関係マッピング)について

はじめに 今回はORMについて調査したいと思います。 また、よく比較されるクエリビルダについても調査し、その違いを理解したいと思います。 ORMとは ORMとは、Object-Relational Mappingの略です。 データベースとオブジェクト指向プログラミングの間のデー…

OAuth2.0のフローについて

はじめに 前回の記事でOAuthについて紹介しました。 今回はOAuthに関するRFC 6749において定義されている認証のフローについて調査してまとめていきたいと思います。 OAuth2.0で定義されているフロー 認可コード 一時的に発行される認可コードとアクセストー…

OAuth2をおおまかに理解する

はじめに 前回の記事で認証と認可について触れ、OpenID Connectのざっくりとした仕組みについて紹介しました。 今回は認証、認可においてよく聞くOAuth2について、調査してみようと思います。 今回の記事のゴールは、「OAuthという単語を聞いたことがある」…

OpenID Connectについて

はじめに 今回はOpenID Connectについてです。 認証の仕組みについて理解に乏しい部分があったため、調査したいと思います。 今回はOpenID Connectを利用した認証の流れについて理解することを目的としています。 暗号化やデータの形式については今回理解し…

SQLアンチパターンを読んでいく_その3

はじめに 今回も引き続き「SQLアンチパターン」を読み進めていきます。 今回から第二部「データベース物理設計のアンチパターン」についてまとめます。 ラウンディングエラー(丸め誤差) 目的: 整数の代わりに小数値を使用する 小数を扱いたい場合、かつ計算…

SQLアンチパターンを読んでいく_その2

はじめに 今回も引き続き「SQLアンチパターン」を読み進めていきます。 前回より見返した時にわかりやすくなるよう文量を減らしてまとめていきたいと思います。 前回の記事 IDリクワイアド(とりあえずID) 例: 記事のタグと記事の関連付けを表現するテーブル …

SQLアンチパターンを読んでいく_その1

はじめに SQLについて最近学び始め、実際に業務で使用する際に避けるべきアンチパターンを前もって知っておくために「SQLアンチパターン」という書籍を購入しました。 さまざまなところで耳にする評価の高い本という印象があります。 アンチパターンとは 「…

2022年のお盆は帰省バイク旅

はじめに スマレジに入社してかもう少しで半年が経とうとしていることに驚いています。 このブログも開設から半年が近づいています。 ふと、弊社のブログ制度は月一本までプライベートな内容がOKだったことを思い出したので今年のお盆の予定について書いてみ…

データベース知識基礎まとめ

はじめに 今回はデータベース周りを勉強するにあたって頻出する単語や知識についてまとめていきたいと思います。 現在データベース周りに課題を感じていて、チーム内で話していても自分のデータベース周りの知識が足りていないなと感じているため直近の課題…

localStorageについて

LocalStorageとは 参考: https://developer.mozilla.org/ja/docs/Web/API/Web_Storage_API WebStorageAPIの一種 ブラウザがキーと値のペアを安全に保存できる仕組み。 2種類の仕組みがある。 sessionStorage localStorage sessionStorage セッションデータを…