はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマークって?
  • アプリ・拡張の紹介
  • ユーザー登録
  • ログイン
  • Hatena
  • Hatena

    はてなブックマーク

    トップへ戻る

    • 総合
      • 人気
      • 新着
      • IT
      • 最新ガジェット
      • 自然科学
      • 経済・金融
      • おもしろ
      • マンガ
      • ゲーム
      • はてなブログ(総合)
    • 一般
      • 人気
      • 新着
      • 社会ニュース
      • 地域
      • 国際
      • 天気
      • グルメ
      • 映画・音楽
      • スポーツ
      • はてな匿名ダイアリー
      • はてなブログ(一般)
    • 世の中
      • 人気
      • 新着
      • 新型コロナウイルス
      • 働き方
      • 生き方
      • 地域
      • 医療・ヘルス
      • 教育
      • はてな匿名ダイアリー
      • はてなブログ(世の中)
    • 政治と経済
      • 人気
      • 新着
      • 政治
      • 経済・金融
      • 企業
      • 仕事・就職
      • マーケット
      • 国際
      • はてなブログ(政治と経済)
    • 暮らし
      • 人気
      • 新着
      • カルチャー・ライフスタイル
      • ファッション
      • 運動・エクササイズ
      • 結婚・子育て
      • 住まい
      • グルメ
      • 相続
      • はてなブログ(暮らし)
      • 掃除・整理整頓
      • 雑貨
      • 買ってよかったもの
      • 旅行
      • アウトドア
      • 趣味
    • 学び
      • 人気
      • 新着
      • 人文科学
      • 社会科学
      • 自然科学
      • 語学
      • ビジネス・経営学
      • デザイン
      • 法律
      • 本・書評
      • 将棋・囲碁
      • はてなブログ(学び)
    • テクノロジー
      • 人気
      • 新着
      • IT
      • セキュリティ技術
      • はてなブログ(テクノロジー)
      • AI・機械学習
      • プログラミング
      • エンジニア
    • おもしろ
      • 人気
      • 新着
      • まとめ
      • ネタ
      • おもしろ
      • これはすごい
      • かわいい
      • 雑学
      • 癒やし
      • はてなブログ(おもしろ)
    • エンタメ
      • 人気
      • 新着
      • スポーツ
      • 映画
      • 音楽
      • アイドル
      • 芸能
      • お笑い
      • サッカー
      • 話題の動画
      • はてなブログ(エンタメ)
    • アニメとゲーム
      • 人気
      • 新着
      • マンガ
      • Webマンガ
      • ゲーム
      • 任天堂
      • PlayStation
      • アニメ
      • バーチャルYouTuber
      • オタクカルチャー
      • はてなブログ(アニメとゲーム)
      • はてなブログ(ゲーム)
    • おすすめ

      ブラックフライデー

    『mpywさんの記事一覧』

    • 人気
    • 新着
    • すべて
    • Laravel の FormRequest バリデーションの動きに忠実なテスト方法を考える

      7 users

      zenn.dev/mpyw

      Laravel の FormRequest とは? 基本的な説明は割愛します。公式ドキュメントを参照してください。 FormRequest が実際に解決される動き これに関しても以下の記事によくまとまっていますので,リンクしておきます。 ポイントとなるのは FormRequestServiceProvider にある $this->app->afterResolving(ValidatesWhenResolved::class, function ($resolved) { $resolved->validateResolved(); }); $this->app->resolving(FormRequest::class, function ($request, $app) { $request = FormRequest::createFrom($app['request'], $re

      • テクノロジー
      • 2023/12/08 17:26
      • article
      • 強い思想: Go を Web 開発に採用する上で

        282 users

        zenn.dev/mpyw

        フラットパッケージは正義か? 私が SNS で何度か言及した以下の記事がある。 フラットパッケージ戦略は,確かに Go の文化圏においては一定の支持を集めている。Go の公式リポジトリや有名ライブラリなんかも,Java などの言語に比べたらずっとパッケージ階層が浅く,ネストしていないものが多いと思う。 しかし,それも 「コードベースを小さく保つ」 を大前提としていることを忘れてはならない。 DDD やクリーンアーキテクチャといった言葉が飛び交うぐらいの規模であれば,パッケージを切ることに関して後ろめたさを感じる必要はない。 むしろ,大きなコードベースが誕生することが開発初期から簡単に予見できるような状況で, YAGNI という言葉に甘んじて設計を放棄するのは極めて悪手であると私は断言する。身を以て失敗を経験した私の口から伝えたい。

        • テクノロジー
        • 2023/09/09 17:52
        • go
        • golang
        • あとで読む
        • 開発
        • 設計
        • web
        • プログラミング
        • ツール
        • development
        • programming
        • なぜ Go ではロガーをコンストラクタ DI してはならないのか

          176 users

          zenn.dev/mpyw

          問題のある実装パターン 共通実装 以下のような applog パッケージ上のロガー実装を考えましょう。ここでは Go 標準の log.Logger をラップしていますが,様々な実装に拡張できることを想定しています。 package applog import ( "fmt" "log" "os" ) type Logger interface { Info(message string) Error(message string) } func NewLogger() Logger { return &logger{ inner: log.New(os.Stdout, "", log.LstdFlags), } } var _ Logger = (*logger)(nil) type logger struct { inner *log.Logger } func (l *logger)

          • テクノロジー
          • 2023/09/06 16:12
          • golang
          • go
          • あとで読む
          • DI
          • log
          • logging
          • プログラミング
          • programming
          • 後悔しない日付時刻・タイムゾーン設計と Laravel での実践法

            12 users

            zenn.dev/mpyw

            はじめに 最近 𝕏 で, Go のプロジェクトで起こっていたタイムゾーンに起因するトラブルをきっかけとして話を広げていったポストがありましたが,そのとき意外と反響がありました。 その一方で,時間をかけて設計された社内の PHP プロジェクトでは比較的トラブル少なく解決できているので,その知見を共有していこうと思います。 (将来的には Go のプロジェクトにも知見を応用できればいいなと考えています) データベースについて RDBMS の選定 さて,まず Laravel にフォーカスした話をする前に,データベース上での日付時刻のデータ型の選び方というアプローチからこの記事を書こうと思ったのですが,さらにその前に使用する RDBMS を決めなければなりませんね。 MySQL か Postgres を選ぶ状況が多いと思うので,この 2 つに絞って回答します。 Postgres を使ってください。

            • テクノロジー
            • 2023/09/03 10:04
            • postgresql
            • db
            • article
            • development
            • programming
            • design
            • [Laravel] createOrFirst の登場から激変した firstOrCreate, updateOrCreate に迫る!

              9 users

              zenn.dev/mpyw

              TL;DR firstOrCreate() updateOrCreate() という機能がもともと Eloquent に備わっていたが,これらはレースコンディションを考慮した実装になっていなかったため,大きなアクセス数が伴うプロダクションで安心して使うには少し工夫が必要な機能だった。 Laravel v10.29.0 で createOrFirst() という機能が実装され,さらに firstOrCreate() updateOrCreate() が内部的にそれを利用するように変更された。 はじめに ご無沙汰しております。最近記事を書く機会がめっきり減ってしまいましたが,今回はかなり強い動機を伴う出来事があったため書くに至りました。今回は Eloquent まわりの最新事情に関する告知になります。 以前 Qiita に以下のような記事を投稿していました。今回は Zenn に投稿していますが

              • テクノロジー
              • 2023/09/01 03:18
              • article
              • MySQL/Postgres におけるトランザクション分離レベルと発生するアノマリーを整理する

                153 users

                zenn.dev/mpyw

                読者対象 ANSI 定義の古典的なトランザクション分離レベルとアノマリーは概ね理解している MySQL/Postgres では理論的な部分がどうなっているのかを知りたい 理論面の前提知識 2022-08-19 追記: 社内勉強会向けのスライドを作成しました。先にスライドを見てから,引用文献およびこの記事を読むと理解が深まると思います。 まず ANSI 定義の古典的な定義を聞いたことが無い方は,以下のリンクを参照されたい。 ANSI 定義に対応する解説はこれらのサイト以外にもたくさんあるため,自分にとって読みやすいと感じる情報をあたってほしい。(既に熟知されている方は十分) 次点で読んでいただきたいのが, @kumagi さんの以下の記事。古典的には 4 つの分離レベルと 3 つのアノマリーだけで説明されていたものの,不十分であることが学術的に指摘され,解像度を上げようとする流れが後になって

                • テクノロジー
                • 2022/07/31 01:58
                • postgresql
                • mysql
                • db
                • RDBMS
                • トランザクション
                • あとで読む
                • 分離レベル
                • transaction
                • 開発
                • SQL
                • [記事下書き] MySQL/Postgres におけるトランザクション分離レベルの実際

                  75 users

                  zenn.dev/mpyw

                  実際はどう? 共通で言えること MySQL/Postgres とも,ファジーリードとファントムリードはセットで起こったり起こらなかったりするようになっているため, SQL 標準のように更新なのか新規・削除なのかを意識する機会は少ないです。 一貫性読み取りで参照するデータは,更新時に参照するデータ本体とは隔離された スナップショット になります。 文の種類 アクション 参照先 ロック

                  • テクノロジー
                  • 2022/07/29 09:27
                  • postgresql
                  • mysql
                  • DB
                  • データベース
                  • あとで読む
                  • SQL
                  • 排他制御のためだけに Redis 渋々使ってませんか?データベース単独でアドバイザリーロックできるよ!

                    326 users

                    zenn.dev/mpyw

                    トランザクション分離レベルについての教養があったほうがこの記事の内容を理解しやすいため,必要に応じてまず以下を参照されたい。 背景 以前, Qiita で以下の記事を投稿した。今回の議題に直接的な関係はないが,関連している部分があるため引用する。 MySQL/Postgres とも, MVCC アーキテクチャの恩恵で, SELECT と UPDATE は基本的には競合しない。 単一レコードのシンプルな UPDATE でも排他ロックされ,排他ロック中のレコードへの UPDATE での変更操作は トランザクション分離レベルによらず ブロックされる。UPDATE 文に含まれる WHERE 句での検索もブロックされ,これはブロックされない SELECT による検索とは別扱いになる。 但し UPDATE 文の WHERE 句上で,更新対象をサブクエリの SELECT から自己参照している場合は例外。

                    • テクノロジー
                    • 2022/07/07 10:28
                    • redis
                    • mysql
                    • postgresql
                    • あとで読む
                    • DB
                    • データベース
                    • ロック
                    • database
                    • 排他制御
                    • Postgres と MySQL における id, created_at, updated_at に関するベストプラクティス

                      499 users

                      zenn.dev/mpyw

                      読者対象 ある程度データベースに関する知識を持っている,経験年数 1 年以上のバックエンドエンジニア 特定のプログラミング言語に依存する部分は含めないため,すべての SQL 使用者を対象とする また,ゼロからの丁寧な説明というよりは,リファレンス感覚で使える記事という形にまとめる。 RDBMS の対象バージョン PostgreSQL: 9.4 以降 MySQL: 8.0.28 以降 id (データ型と INSERT 時のデフォルト埋め) 導入 一般的に採用されやすいプライマリキー用の値として,以下を考える。 連番整数 MySQL では AUTO_INCREMENT, Postgres では IDENTITY や SERIAL と呼ばれるもの UUID v1: ハードウェアごとにユニークな単調増加値 UUID v4: ランダム値 UUID v7(ドラフト): 単調増加であるタイムスタンプとラ

                      • テクノロジー
                      • 2022/06/16 09:03
                      • postgresql
                      • mysql
                      • db
                      • あとで読む
                      • SQL
                      • database
                      • データベース
                      • UUID
                      • 設計
                      • id
                      • PHP 8.1 において名前付き引数で NULL と引数省略を区別する方法

                        8 users

                        zenn.dev/mpyw

                        CREATE TABLE users( id INTEGER PRIMARY KEY, name TEXT NOT NULL, description TEXT NOT NULL ); このテーブルに関して, 「指定された ID のユーザの, 指定されたフィールドのみを 差分更新したい」 という要求があり,それに合わせて以下のように UserRepository クラスを実装した。 class UserRepository { public function update( int $id, ?string $name = null, ?string $description = null, ): void { // 処理内容はダミー $updated = []; if ($name !== null) { $updated['name'] = $name; } if ($descript

                        • テクノロジー
                        • 2022/06/11 08:40
                        • php
                        • 開発
                        • プログラミング
                        • article
                        • TypeScript で「コンストラクタで渡さなかった引数だけ後で必須にする」の型制約を書く

                          44 users

                          zenn.dev/mpyw

                          /** * [α] T 型から undefined 不可キーの union を抽出 */ type RequiredKeys<T> = { [K in keyof T]-?: Record<any, unknown> extends Pick<T, K> ? never : K; }[keyof T]; /** * [β] α を利用し, Passed 型から Req 型の条件を満たさないものだけを抽出 */ type MissingKeys<Req, Passed extends Partial<Req>> = { [K in keyof Pick< Req, RequiredKeys<Req> >]: Passed[K] extends Req[K] ? never : K; }[keyof Pick<Req, RequiredKeys<Req>>]; /** * [γ] β を利用し

                          • テクノロジー
                          • 2021/07/09 08:56
                          • TypeScript
                          • あとで読む
                          • dev
                          • tips
                          • 5年間 Laravel を使って辿り着いた,全然頑張らない「なんちゃってクリーンアーキテクチャ」という落としどころ

                            541 users

                            zenn.dev/mpyw

                            この記事は Laravel Advent Calendar 2020 - Qiita 最終日の記事です。 TL;DR DDD や "真の" クリーンアーキテクチャは, Web 業界における大抵の現場ではオーバースペックだし,導入しても全員がついてこれるとは限らない app/UseCases ディレクトリだけ切って,ドメインごとに単一責務なクラスを置くと使いやすいよ ActiveRecord 指向のフレームワークで Repository パターンを無理に導入すると死ぬので, UseCase で Eloquent Model の機能を使うことを恐れるな はじめに Zenn では初投稿です。日本の Laravel コミュニティではもうお馴染みのようで実はあまり顔を出していない(?) @mpyw と申します。オンラインサロンの火付け役となった Synapse が最初の仕事でしたが,就職後すぐ会社が

                            • テクノロジー
                            • 2020/12/24 19:57
                            • laravel
                            • php
                            • あとで読む
                            • アーキテクチャ
                            • DDD
                            • 開発
                            • 設計
                            • プログラミング
                            • クリーンアーキテクチ
                            • CleanArchitecture

                            このページはまだ
                            ブックマークされていません

                            このページを最初にブックマークしてみませんか?

                            『mpywさんの記事一覧』の新着エントリーを見る

                            キーボードショートカット一覧

                            j次のブックマーク

                            k前のブックマーク

                            lあとで読む

                            eコメント一覧を開く

                            oページを開く

                            はてなブックマーク

                            • 総合
                            • 一般
                            • 世の中
                            • 政治と経済
                            • 暮らし
                            • 学び
                            • テクノロジー
                            • エンタメ
                            • アニメとゲーム
                            • おもしろ
                            • アプリ・拡張機能
                            • 開発ブログ
                            • ヘルプ
                            • お問い合わせ
                            • ガイドライン
                            • 利用規約
                            • プライバシーポリシー
                            • 利用者情報の外部送信について
                            • ガイドライン
                            • 利用規約
                            • プライバシーポリシー
                            • 利用者情報の外部送信について

                            公式Twitter

                            • 公式アカウント
                            • ホットエントリー

                            はてなのサービス

                            • はてなブログ
                            • はてなブログPro
                            • 人力検索はてな
                            • はてなブログ タグ
                            • はてなニュース
                            • ソレドコ
                            • App Storeからダウンロード
                            • Google Playで手に入れよう
                            Copyright © 2005-2025 Hatena. All Rights Reserved.
                            設定を変更しましたx