じぶん対策

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

2022-01-01から1年間の記事一覧

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 セッションデータを…

Mockeryの基本的な使い方

はじめに 前回の記事でユニットテストについて書きました。 今回は前回にも使用したMockeryというフレームワークについて少し掘り下げてみたいと思います。 公式 https://readouble.com/mockery/1.0/ja/index.html 公式にもあるように、他のテストフレームワ…

ユニットテストについて考えてみる。PHPUnitでモックを使用して小さいユニットテストを書く。

はじめに 前回の記事でユニットテストに関する知識を調査したのでよければ参照してください。 今回の目的 テスト駆動開発しやすい設計について考えること クリーンアーキテクチャの利点であるテスタブルなコードのテストを書く方法を考えること 方針 テスト…

ユニットテストに関する前提知識

はじめに (ちょっと記事見づらすぎたのでブログのテーマとかcss調整してみました。) ここ最近はユニットテストのことばかり考えている時間が長い気がしています。 先日、チーム内でユニットテストについて自分の考えを話して議論したので、まとめたいと思い…

LT会用のスライドを楽に作って楽に管理したい

はじめに 弊社では現在、月一回のペースで社内LT会を行なっています。 毎回観覧側として参加していましたが、入社して三ヶ月が経ち、自分でも発表してみようと思いました。 そこで必要なのが発表スライドです。 とは言ってもLT、つまりLightning Talksなので…

Qiita ConferenceとラクスのLT会を聞いてみた

はじめに ここ最近、エンジニア向けの社外イベントを聞いてみようと思い、いろいろ参加してみました。 株式会社ラクス主催のLT会二つとQiita Conferenceです。 いつもは自分で勉強したことをまとめることが多いのですが、今回はイベントレポのような形でまと…

MySQLのインデックスの役割と活用について

はじめに WEBエンジニアとなってクエリパターンの実装をする際に、SQLのパフォーマンスについて意識する場面が出てきました。 その際にインデックスが貼られていないカラムのソートのパフォーマンスについて指摘をいただく機会があったのでこの機会に調査し…

「Webを支える技術」を読んで

はじめに 個人的に技術書を読む機会が最近多くなりつつあるので、その内容をまとめるとともに感じたことやわからないことなどをまとめていきたいと思います。 できるだけ丸写しではなく要点を絞ることと個人の所見を入れたいと思っています。 Webを支える技…