並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 208件

新着順 人気順

Objectの検索結果1 - 40 件 / 208件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

Objectに関するエントリは208件あります。 プログラミングprogrammingTypeScript などが関連タグです。 人気エントリには 『Value Objectについて整理しよう - Software Transactional Memo』などがあります。
  • Value Objectについて整理しよう - Software Transactional Memo

    Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a

      Value Objectについて整理しよう - Software Transactional Memo
    • オブジェクト指向は必要なのか / Is object-oriented needed?

      2024/3/24に開催されたObject-Oriented Conferenceでの登壇資料です。 https://ooc.dev/2024/

        オブジェクト指向は必要なのか / Is object-oriented needed?
      • 値オブジェクト(Value Object)は3種類ある - パンダのプログラミングブログ

        パンダとおくだが、Web業界の当たり前を「これって本当にそうだっけ?」と問い直すラジオを配信しています Value Object(値オブジェクト)は3種類あった Value Object(値オブジェクト) の意義と使い所がわからなかった。そこで調べてみたらなんと3種類あった。面白かったのでその調査過程を紹介する。 なお、現在では DDD の意味での Value Object がメインであること、またこれは自転車置き場の議論であり、DDD Quickly の Value Object の章を読む方が有意義であることを先に記しておく。 1. Data Transfer Object 1つ目は、Data Transfer Object(DTO)の意味だ。これは PoEAA に少しだけだけ出てくる。かつてのJava界隈の一部では(?)DTOのことを Value Object と呼んでいた。だが、現

          値オブジェクト(Value Object)は3種類ある - パンダのプログラミングブログ
        • Java 20, 21, オブジェクト指向からデータ指向へ / Java20, 21, Object Oriented to Data Oriented

          2023/5/10(水)に開催されたTechFeed Experts Night#18での登壇資料です。 https://techfeed.io/events/techfeed-experts-night-18

            Java 20, 21, オブジェクト指向からデータ指向へ / Java20, 21, Object Oriented to Data Oriented
          • TypeScript エラー処理パターン - Object.create(null)

            M 年前にも N 年後にも人類は同じ話をしている. まとめ エラーの発生方法は throw と return に大別できる throw には簡潔さ, return には明瞭さと型安全性といった特徴がある どちらの方法がより適しているかはプログラムの規模, エラーの種類, ハンドリングの方法などが判断の材料になる 実際にどちらの方法を使うかは上の判断材料と, フレームワークやプロジェクトのコーディング規約なども合わせて複合的に決めるのがよい エラー発生方法の分類 まず前提として, 関数から呼び出し元にエラーを伝える方法は以下の 2 つに大別できます. 逆にこの記事ではこれ以上の具体的な方法についての議論はしません. throw エラーを throw して呼び出し元に伝える方法です. 例えば以下のようなものが当てはまります. throw new Error("...") Promise.rej

              TypeScript エラー処理パターン - Object.create(null)
            • Effective TypeScript 読んだ / 郷に入っては郷に従う - Object.create(null)

              Effective TypeScript (第2版) を読んだ なんらか他の人に読んでおくと良いよと紹介できる本があると良いなと思って読みました. 2020 年以降に TypeScript を書く上での常識が概ね網羅されていると思うので, そういった前提知識に自信をつけたいならおすすめです. www.oreilly.co.jp ただ「項目18 推論可能な型でコードを乱雑にしない」で, 関数の戻り値の型アノテーションをデフォルトで省略するよう推奨していることについては明確に反対したい. より正確には, コールバックなど再利用を想定しない関数についてはデフォルトで省略してもよいが, 通常関数は再利用を目的として定義されがちなことを考えると, デフォルトで省略するというのはあまり実態に則していないと思う. 実際にこの本の後の章には戻り値の型アノテーションを書いておけばよかったのにという状況がしば

                Effective TypeScript 読んだ / 郷に入っては郷に従う - Object.create(null)
              • TypeScript 型レベル関数型プログラミング in 2023 - Object.create(null)

                ちょっと前に話題になった hotscript の技法の紹介やら, ラムダ計算を TypeScript の型にコンパイルする話やらなんやら. 通常の型レベル関数 TypeScript の型エイリアスはパラメータを取れるので, これは型レベルの関数であるとみなせます. type IsNumber<X> = X extends number ? true : false; type A = IsNumber<42>; // = true 一方でこのようにして定義された関数は第一級ではない, つまり関数そのものを他の関数の引数として渡したりすることができません. type FilterUnion<F, X> = X extends unknown ? (F<X> extends true ? X : never) : never; // ~~~~ // ^ Error: Type 'F' is n

                  TypeScript 型レベル関数型プログラミング in 2023 - Object.create(null)
                • 中止ボタンがしいたけに見えて困る - Object.create(null)

                  令和最新版. Vivaldi でアイコンがカスタマイズできるようになっている テーマ設定画面を眺めていたら, Vivaldi 6.0 からツールバーのアイコンがカスタマイズできるようになっているのに気がつきました. 流石 Vivaldi です (?) vivaldi.com しいたけ復活 こうなっては中止ボタンをしいたけにするしかありません. しいたけアイコンは以下で用意されていたものを拝借します*1. バッテン髪飾り派の人も安心. momizine.hatenadiary.org というわけで完成です. フラットデザイン全盛の時代にスキュモーフィックしいたけが悪目立ちしていて最悪ですね. *1:画像の究極の出典ではないかもしれないので, そのあたりの扱いは自己責任で

                    中止ボタンがしいたけに見えて困る - Object.create(null)
                  • then() を export した結果www - Object.create(null)

                    Promise と Thenable Promise が ECMAScript の言語仕様に追加されたのは ES2015 ですが, Promise ライクなオブジェクトはそれ以前からも広く使われてきました (jQuery の Deferred など). そういった Promise ライクなオブジェクトとの互換性のため, Promise の仕様は本物の Promise と Promise ライクなオブジェクトを混ぜて使えるようになっています. 具体的には, Promise ライクなオブジェクトは一般に Thenable という共通のインターフェースを持つことになっています. オブジェクトが Thenable であるために必要なのは「then() という名前のメソッドを持っている」という一点のみです. もし Promise を解決 (resolve) するときに使われた値が Thenable

                      then() を export した結果www - Object.create(null)
                    • 共通化すれば良いとは限らない - Object.create(null)

                      ここのところ偶然なのか「共通化」という言葉を多く聞いているのですが, その言葉を聞くたびに身構えていることに気がついたので, この気持ちの出どころを共有しておきます. なぜ身構えているかというと, 共通化が必ずしもコードを良い状態にするとは限らないにも関わらず, それ自体が目的になってしまっている (ように見える) ことが多いからです. この手のリファクタリングの目的はあくまでコードの改善のはずで, そのことを忘れて共通化するだけで満足してしまうと, 良くてリファクタリングの効果が半減, 悪ければ逆効果になってしまいます. 個人的にコードを共通化する上で注意してほしいと思っているのは以下の二つです. コードを共通化すべきでない場合もある 共通化されたコードは一般的な原則にしたがって設計されなければならない 似たようなことは歴史の中で何度も繰り返し言われていることだろうと思いますが, 改めて

                        共通化すれば良いとは限らない - Object.create(null)
                      • N 文字以上なら省略表示 - Object.create(null)

                        「N 文字以上 / 以内」みたいなことを言われたときに考えること. 「文字」とは? 単に「文字」と言っても, それが指しているものが何かは自明ではない. 符号単位 (code unit) JavaScript の場合, 文字列は UTF-16 としてエンコードされている*1ので, そのエンコードの単位である 16 bit ごとに分割するというのがこの方法. .length で取得できるのはこの符号単位の数で, .slice() に与えるのも符号単位で数えたインデックスとなっている. > "あいうえおABCDE".length 10 > "あいうえおABCDE".slice(0, 5) "あいうえお" ところで Unicode には 16 bit で表せる数以上の「文字」 (U+0000 〜 U+10FFFF) が含まれるので, UTF-16 では 1 つの符号単位で表せない「文字」は 2

                          N 文字以上なら省略表示 - Object.create(null)
                        • JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった

                          ASTをみてみよう この不思議な現象を調査するために、AST(Abstract Syntax Tree: 抽象構文木)の状態を見てみることにしました。ASTはソースコードを構文解析した結果をツリー構造にしたもので、AST Explorerを使うと簡単に見ることができます。 ({}) + "" のAST ({}) + "" のASTをみると、ひとつの ExpressionStatement となっているのがわかります。ExpressionStatement の leftは ObjectExpression 、 operator は + 、rightは Literal となっていて、たしかに Object と String の足し算になっています。これなら確かに"[object Object]" が返ってくるでしょう。 {} + ""のAST しかし、{} + "" のASTをみると、Bloc

                            JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった
                          • プログラムの複雑さ・表面積・グラフの構造 - Object.create(null)

                            特に何かしらの出典はありません. プログラムの複雑さに対する大局的で直感的な指標として, 表面積とグラフの構造というのを個人的に意識しているという話. いわゆる code smell をどう嗅ぎつけているか. 表面積 プログラムは最も単純には 1 つの入力チャンネル (引数) と 1 つの出力チャンネル (戻り値) でモデル化できます. 要するに関数ということですが, 関数型プログラミングに限らず大抵は似たような考え方ができます. graph LR yield[ ] -- 引数 --> program[プログラム] -- 戻り値 --> return[ ] 一方で現実世界で価値のあるプログラムとなるためには引数と戻り値だけでは不十分で, 実際にはその他の入出力チャンネルも必要になってきます. 例えば, 可変な変数の読み書き 環境変数の読み取り ユーザー入力の読み取り 画面への出力 ファイル

                              プログラムの複雑さ・表面積・グラフの構造 - Object.create(null)
                            • fetch() では Host ヘッダーを設定できないし話はそこまで単純じゃない - Object.create(null)

                              JavaScript (TypeScript) のコードから HTTP リクエストを送る手段として, 最近では Web 標準の一つである Fetch Standard で定義された fetch() が使われることが多いですね. await fetch("https://example.com"); リクエストヘッダーには Host を設定できない Fetch Standard では Host をはじめとして Content-Length, Cookie, Origin など, いくつかのリクエストヘッダーを設定 (JavaScript から上書き) することが禁止されています. https://fetch.spec.whatwg.org/#forbidden-request-header いずれのヘッダーも HTTP やセキュリティ上の取り決めに従うために, ページの JavaSript

                                fetch() では Host ヘッダーを設定できないし話はそこまで単純じゃない - Object.create(null)
                              • Next.js でよくある一覧 + 詳細画面を作る - Object.create(null)

                                あの日見たパターンの名前を僕たちはまだ知らない. よくある一覧 + 詳細画面を作りたい 例えば TODO アプリで, /todo にアクセスしたらタスクの一覧を, /todo/42 にアクセスしたら一覧は表示したまま ID = 42 のタスクの詳細を表示する, というよくあるパターンの画面を作りたい. 世の中の実例としては Asana や, URL の形は異なりますが GitHub の Projects なんかがこういう感じですね. /todo で一覧, /todo/42 で一覧 + 詳細 技術的には要するに SPA なのでやればできるはずなんですが, これを Next.js (App Router) 上で作るにはどうしたら良いかという話をします. 素朴な実装は微妙 Next.js はファイルシステムベースのルーティングを行います. ということで最も素朴には以下のようにファイルを配置すれば

                                  Next.js でよくある一覧 + 詳細画面を作る - Object.create(null)
                                • TypeScript の DI 手法あれこれ - Object.create(null)

                                  TypeScript で DI (依存性注入) するためのライブラリを作ったんですが, それを紹介する前に既存手法をまとめておいた方が説明が楽だなと思ったのでまとめておきます. そもそも DI の目的とは, みたいなところは詳しく説明しないのであしからず. 手法の比較 DI なし Service Locator エフェクト Constructor Injection Setter Injection デコレータ typed-inject 次回予告 手法の比較 DI なし まずは DI を使わない場合を見ていきましょう. ここでは例として, 以下のような時刻と乱数を必要とするコンポーネント MyService が, 時刻と乱数を扱う機能をそれぞれ提供するコンポーネント Clock と Random に依存するような場合を考えます. type Clock = { getTime: () =>

                                    TypeScript の DI 手法あれこれ - Object.create(null)
                                  • 写真パシャ→3Dデータ完成。3DキャプチャーAPI「Object Capture」 #WWDC21

                                    写真パシャ→3Dデータ完成。3DキャプチャーAPI「Object Capture」 #WWDC212021.06.08 04:2018,426 ヤマダユウス型 3Dづくり、どんどん身近になっていくね。 新たなmacOS Montereyにて実装された機能のひとつが「Object Capture」。デベロッパー向けの3DキャプチャーAPIで、3Dオブジェクトが簡単に作れますよーというものです。 やり方は、3D化したいアイテムをiPhoneやiPadで撮影するだけ。アイテムの周辺をぐるりと撮影することで、一連の2Dイメージをフォトグラメトリー(二次元の写真から3Dモデルを作成する技術)で3D化します。LiDARには触れてなかったから、LiDAR非搭載のデバイスでも使えるのかな? 作成したデータはCinema 4Dに取り込んだり、ARオブジェクトにすることもできるみたい。デベロッパー向けにAPI

                                      写真パシャ→3Dデータ完成。3DキャプチャーAPI「Object Capture」 #WWDC21
                                    • k6 + Echo + go-sqlite3 + Litestream + Linode Object Storage 簡易負荷試験メモ

                                      注意 とっても雑な検証なので参考などにはしないでください。ちょっとした興味で自分用に調べてるだけです。 結論 Echo を利用した秒 1 万リクエストを超えないウェブサービスで、かつ SQLite の機能で要件がみたせるのであれば、SQLite + Litestream 十分と判断出来る結果だった。 利用技術 Load testing for engineering teams | Grafana k6 Grafana に買収された Go で書かれた負荷試験ツール JS でシナリオが書ける Litestream - Streaming SQLite Replication SQLite リアルタイムバックアップツール mattn/go-sqlite3: sqlite3 driver for go using database/sql Litestream も使ってる 安心と信頼の matt

                                        k6 + Echo + go-sqlite3 + Litestream + Linode Object Storage 簡易負荷試験メモ
                                      • TypeScript をより安全に使うために まとめ - Object.create(null)

                                        こういう一連の記事を書きました. susisu.hatenablog.com susisu.hatenablog.com susisu.hatenablog.com TypeScript の型安全性 TypeScript の型システムは健全ではありません. TypeScript Design Goals にある通り, そもそも言語設計の段階で完璧な型安全性は目標になっておらず, 既存の JavaScript の言語仕様や資産を活用しやすいように, 生産性や利便性とのバランスをとることを目標としています. では TypeScript の型システムではどの程度の安全性が保証されるのでしょうか? 型安全性を第一の目標に置いていないとはいえ, TypeScript がまったく見当違いな型検査をしているというわけではありません. したがって, ある制限された範囲内であれば, 安全性を担保するのに十分

                                          TypeScript をより安全に使うために まとめ - Object.create(null)
                                        • イラつくバルーンを滅ぼそう - Object.create(null)

                                          みなさんにもマウスホバーで表示されるバルーン内のリンクが開けなくてイラついた経験があるかと思います. リンクにカーソルを移動しようとすると閉じてしまうバルーン 丁寧に吹き出しの三角形の部分を通ったときだけリンクに辿り着ける. イライラ棒か? こんな体験は今すぐ滅ぼしましょう. Web なら floating-ui を使うと, そもそものバルーン自体の実装も簡単にできますし, この問題への対策も 1 行で済みます. 対策 1. バルーンが閉じるのを遅延させる リンクにカーソルを合わせようとするとマウスホバーが外れ, その瞬間にバルーンが閉じてしまうのが問題の原因です. ということで, 素朴にはバルーンが閉じるまでに遅延を入れてあげると良いですね. floating-ui での実装では delay を追加するだけです. // ... const hover = useHover(context

                                            イラつくバルーンを滅ぼそう - Object.create(null)
                                          • TypeScript 型レベルプログラミング フリースタイルガイド - Object.create(null)

                                            TypeScript の型レベルプログラミングのための真面目なスタイルガイドではありません. 型なしラムダ計算で喜ぶような人間が使うための諸刃の剣です. この記事の内容は TypeScript の 2022 年 1 月時点での最新版である 4.5.4 に基づいています. 将来のバージョンでの妥当性は保証しません. 「型〜」「〜型」という用語の「型」はしばしば省略します. 値レベルの話題は一切登場しません. 以前作った型レベル Brainfuck インタプリタはこのスタイルに則っているので参考にどうぞ. いつまでこのネタを引きずるんですか? パラメータに対して制約を付与しない 型定義のパラメータに対して extends を使って制約を付与すると, そのパラメータに与えられる引数を制約を満たすもののみに限定することができます. 例として, 以下の Append には string の部分型のみ

                                              TypeScript 型レベルプログラミング フリースタイルガイド - Object.create(null)
                                            • #fukabori をきいて Value Object と Value Object パターンについて頭の中を整理 - Mitsuyuki.Shiiba

                                              連休の余韻も楽しんだので今日から散歩を再開した。ちょっと前までは「陽の光を浴びなきゃ!」と思って3時過ぎにウロウロしてたけど、これからはもうちょっと涼しい時間帯がいいなと思って、夕暮れ時に散歩しながら fukabori.fm を聴いてた。Value Object のお話。面白いなぁ 73. Value Object w/ kumagi | fukabori.fm kumagi さんの記事はこちら Value Objectについて整理しよう - Software Transactional Memo お絵描き PoEAA や DDD はだいぶ前に読んだことがあるけど、Value Object を雰囲気で捉えてるからちゃんと見直しておこうと思って、調べたりしながら絵を描いた。こういうことなのかな? (絵をかくほどでもなかった・・・ Value Object とは? kumagi さんも書いてる

                                                #fukabori をきいて Value Object と Value Object パターンについて頭の中を整理 - Mitsuyuki.Shiiba
                                              • 「君だけのオリジナル async / await を作ろう」スピーカーノート & 補足 - Object.create(null)

                                                TSKaigi 2025 での登壇「君だけのオリジナル async / await を作ろう」のスピーカーノートと補足です. (TSKaigi 2025 自体の感想や面白かった発表の話なんかはまた別途書きます.) スピーカーノート & 補足 参考文献 スピーカーノート & 補足 「君だけのオリジナル async / await を作ろう」というタイトルで発表します. susisu ですよろしくおねがいします. 今日, 特に最後の方は多少抽象度が高い話題を扱うので, もしかしたらちょっと難しい話になってしまうかもなんですが, 最終的に私が一番伝えたいのは「TypeScript 面白い」ということなので, 気楽に聞いていただけたら幸いです. 改めましてこんにちは susisu です. 株式会社はてなというところでエンジニアをしています. 趣味は TypeScript の限界を攻めることで, 例

                                                  「君だけのオリジナル async / await を作ろう」スピーカーノート & 補足 - Object.create(null)
                                                • TypeScript をより安全に使うために その 2: オブジェクトの具体的な形にアクセスするのを避ける - Object.create(null)

                                                  前回はこちら. susisu.hatenablog.com 引き続き環境は以下を前提とします: TypeScript 4.4 (この記事を書いている 2021 年 11 月時点の最新版) strict: true 原則: オブジェクトの具体的な形にアクセスするのを避ける 具体例 in 演算子による型の絞り込み Object.keys の誤った使用 Object.values, Object.entries の使用 リテラルの先頭以外での object sperad 次回 原則: オブジェクトの具体的な形にアクセスするのを避ける ここで「オブジェクトの具体的な形にアクセスする」とは, 静的な型によらずに, 実行時にオブジェクトがどのようなプロパティを持っているかといった情報を取得することを指しています. ある種のリフレクションと呼んでも良いかもしれません. こういった操作には, JavaSc

                                                    TypeScript をより安全に使うために その 2: オブジェクトの具体的な形にアクセスするのを避ける - Object.create(null)
                                                  • TypeScript をより安全に使うために その 1: オブジェクトの mutable な操作を避ける - Object.create(null)

                                                    ふだん TypeScript のコードレビュー時に参考に貼ったりしている内部ドキュメントがあるのですが, 内部では何かと人目につきにくいので, 内容を整えて公開していきます. TypeScript の型システムは安全ではありません. つまり型検査を通過したコードであっても, 実行時にエラーが発生する可能性があります. TypeScript の設計についてのドキュメントにおいても, non-goals の一つとして Apply a sound or "provably correct" type system. Instead, strike a balance between correctness and productivity. が挙げられており, 完全に安全なものを目指すのではなく, 安全性と利便性とのバランスをとるものとされています. かといって TypeScript を使うなら

                                                      TypeScript をより安全に使うために その 1: オブジェクトの mutable な操作を避ける - Object.create(null)
                                                    • COM(Component Object Model)は古い技術だが、いまだに現役 あらためて解説する (1/2)

                                                      前回解説したプレビューハンドラなど(「エクスプローラーのプレビューウィンドウについて解説する」)、エクスプローラーの拡張機能は、COM(Component Object Model)を使って作られている。 COMは、すでにWindowsでは主流ではなく、後継として.NET Frameworkが登場している。しかし、COMは廃止されたわけではなく、いまだにWindowsのさまざまな場所で使われ続けている。というのも、Windows XPまでは、WindowsのOSの主要オブジェクト技術であり、Windows自身がCOMで構築されていたと言っていいほど利用されていたからである。 エクスプローラーや関連技術でいまだにCOMが使われているのは、その名残でもある。長らく続けてきた本連載だが、COMについては解説するタイミングを失っていた。ちょうどいい機会なので、今回はCOMを簡単に解説してみたい。

                                                        COM(Component Object Model)は古い技術だが、いまだに現役 あらためて解説する (1/2)
                                                      • TypeScript で実行時の入力を含む文字列を型で弾く - Object.create(null)

                                                        TypeScript (4.7 時点) において, 文字列に付けられる型には以下の 3 つ (とそのユニオン型) があります. 文字列型 string 文字列リテラル型 ("foo" など) テンプレートリテラル型 (`data-${string}` など) これらのうち, 実行時の入力, 特に事前にパターンが想定されていないような任意の入力が含まれるような文字列に対しては, string や string を含むテンプレートリテラル型を付けることはできても, 文字列リテラル型を付けることはできません. 文字列リテラル型を付けるためには型検査時 (実行の前) に入力文字列の内容がわかっている必要があるので, まあそれはそうですね. このことを利用して, 実行時の入力を含む文字列を与えようとすると型検査に失敗するような関数を作ることができそうです. まずは与えられた型が文字列リテラル型, ま

                                                          TypeScript で実行時の入力を含む文字列を型で弾く - Object.create(null)
                                                        • Value Object (値オブジェクト) でリファクタリングしたら結構良かった

                                                          ドメイン分析とモデル化ここで「モデル化」と呼ぶのは、実装者が理解しやすいように重要な側面に注目して、端的な形に抽象化する行為であると定義します。 また、実際に実務で行なっている自身のモデル化を行う時の書き振りを近しく再現(中身は変更)しているため、わかりづらいかもしれませんが、”実務ではこうやっている” というのを理解していただければ。 先の要件を整理すると、数という概念に金額とポイントという2つのドメインモデルが含まれる。 金額とポイントという異なる概念を計算して最終的に獲得ポイント数を導き出す必要がある。 存在する制約 金額が負の数になることはありえない。ポイントが負の数になることはありえない。金額は日本円のみを考慮し、外貨は存在しない。ポイントは文脈によって呼び名が変わるが、単位は変わらない。支払い金額合計以上にポイント利用数が設定されることはない。金額に小数点は存在しない。ポイント

                                                            Value Object (値オブジェクト) でリファクタリングしたら結構良かった
                                                          • never が好き - Object.create(null)

                                                            この記事は はてなエンジニア Advent Calendar 2025 の 4 日目の記事です. id:susisu です. TypeScript の never 型がたいへん奥ゆかしいので見ていってください. 基礎編 まずは never 型がどういったものなのかを見てみましょう. 値のない型として 例えば number 型に対しては 42, 3.14, NaN など , string 型に対しては "", "Hello" などのように, 一般的な型にはその型が付けられる値が存在します. 一方で never 型にはそういった値が存在しません (こういった型は一般にボトム型などと呼ばれたりします). never 型の変数には何を代入しようとしてもエラーになります. const x: never = 42; // エラー undefined や null も「値が存在しない」と説明されることが

                                                              never が好き - Object.create(null)
                                                            • Rubyのobject_id

                                                              Rubyのobject_idを入口にして、Rubyの実装詳細について学びます。

                                                                Rubyのobject_id
                                                              • ESLint の Flat Config を書く時に読んでほしい記事 (2024-08版) - Object.create(null)

                                                                2025-03-30 追記: 改訂版を書きました. susisu.hatenablog.com ESLint v9 から Flat Config がデフォルトの設定ファイルの形式となり, 徐々に対応しているプラグインも増えて移行が進みつつありますが, 実際に移行したプロジェクトを見ているとしばしば勘違いなどから誤った設定をしている事例を目にします. ということで, Flat Config を書くにあたっていくつか知っておいて欲しいことや, よく見かけるミスをまとめてみました. この記事では網羅的な説明はしませんので, ESLint や typescript-eslint の公式ドキュメントを前提として, 副読本的に参照してください. Getting Started with ESLint - ESLint - Pluggable JavaScript Linter Getting Star

                                                                  ESLint の Flat Config を書く時に読んでほしい記事 (2024-08版) - Object.create(null)
                                                                • null or undefined #kyotoasterisk とその補足など - Object.create(null)

                                                                  Kyoto.なんか #6 で発表しました. speakerdeck.com 以下はその補足情報など. 仕様書中の出現頻度 null と undefined がそれぞれの仕様でどの程度使われているのかは, 仕様書中の出現頻度を見るだけでもある程度わかりりそうです. ということで ECMAScript 2024 と WHATWG の標準 (2024-09-07 時点) のうちいくつかの仕様書の中での出現頻度を見てみましょう. Spec #null #undefined ES2024 300 939 DOM 368 120 Fetch 276 10 HTML 1778 275 URL 98 9 見ての通り, 顕著に登場頻度に差があることがわかりますね. なお上記の null の出現数には WebIDL の nullable (T?) を含めていないため, Web 標準における実際の null の

                                                                    null or undefined #kyotoasterisk とその補足など - Object.create(null)
                                                                  • Git's database internals I: packed object store

                                                                    AI & MLLearn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry. Generative AILearn how to build with generative AI. GitHub CopilotChange how you work with GitHub Copilot. LLMsEverything developers need to know about LLMs. Machine learningMachine learning tips, tricks, and best practices. How AI code generation worksExplore the capabilities and be

                                                                      Git's database internals I: packed object store
                                                                    • コードの読み書き - Object.create(null)

                                                                      コードレビューというかコードリーディングというかコードライティングというか、とにかく自分と他人の見えている景色がかなり違っていそうということはわかっているんだが、それを伝えられるなら苦労していないという状態— 塩水うに (@susisu2413) June 29, 2025 とにかく他人がコードを読み書きしている様子を見ていると腑に落ちないというか, 何と言うか自分の考える「読み書き」とは全然違うことをしているんじゃないか? あるいは自分の「読み書き」が異常なのか? みたいな気持ちになることが多い. 例えばセルフコードレビューをしてみようみたいな記事を書いて, これを読んでコードを自分でレビューしてみてね, ちゃんと「読み書き」してみてね, みたいに話して実践してもらったりしても, 残念ながら特段めざましい効果 (細かいミスが激減するとか, 品質が大きく向上するとか) が得られたりはしてい

                                                                        コードの読み書き - Object.create(null)
                                                                      • S3 Object Lambda を使って処方箋プレビューに透かしを入れる | MEDLEY Developer Portal

                                                                        2022-10-28 S3 Object Lambda を使って処方箋プレビューに透かしを入れる こんにちは。医療プラットフォーム本部プロダクト開発室エンジニアの中畑です。主にオンライン診療・服薬指導アプリ CLINICS の開発を担当しています。 今回は CLINICS アプリ内で扱う処方箋プレビューに透かし(watermark)を入れた話を紹介したいと思います。なぜ実施したのか、実装方法、パフォーマンスチューニングの 3 本立てでお送りしたいと思います。 課題と解決方針 まず、なぜ処方箋プレビューに透かしを入れることにしたのか。 CLINICS では診察後に患者が希望すると、かかりつけ薬局支援システム Pharms を導入している調剤薬局にてオンライン服薬指導を受けることができます。その際に医療機関から処方箋の画像ファイルや PDF をアップロードし、患者は CLINICS アプリを通

                                                                          S3 Object Lambda を使って処方箋プレビューに透かしを入れる | MEDLEY Developer Portal
                                                                        • テストコードの保守性を高めるPlaywrightのPage Object Model入門 〜Percy連携までの実践的アプローチ〜 | DevelopersIO

                                                                          情報システム室の進地@日比谷です。 E2Eテストにおいて、テストコードの保守性は重要な課題の一つです。この記事では、PlaywrightでのPage Object Modelの実装方法と、Visual Regression TestingツールのPercyとの連携について、実践的なアプローチをご紹介します。 なぜPage Object Modelが必要か テストコードの保守性の課題 まず、Page Object Modelを使用しない一般的なテストコードを見てみましょう。 test('ログインテスト', async ({ page }) => { await page.goto('https://example.com/login'); await page.fill('#email', 'test@example.com'); await page.fill('#password', '

                                                                          • JavaScript Object の === による比較では中身は比較されないので JSON.stringify() して比較する - KAEDE Hack blog

                                                                            object の中身が比較で見られていないことを確認する === で同じ内容の object が true にならなかった object の比較をして、うまくいかなかった const dog = { name: 1, age: 5, } const dog2 = { name: 1, age: 5, } console.log(dog === dog2); これが 中身のプロパティは同じなのに false になる 同じ中身を持つ違う名前の object を === で比較できない。 同一参照のみ === で true になることを確認 www.deep-rain.com 同一参照、同じメモリ?同じものを参照している物の場合のみ === が効くようだ。 しかし、ハードリンクのように、全く同じものを参照しているかどうかを JS の === は判定しているわけではない。 const dog =

                                                                              JavaScript Object の === による比較では中身は比較されないので JSON.stringify() して比較する - KAEDE Hack blog
                                                                            • イベントストーミングによるオブジェクトモデリング・オブジェクト指向プログラミングの適用・開発プロセスの変遷・アーキテクチャの変革 / Object modeling with Event Storming.

                                                                              Object Oriented Conference 2024 にてお話ししました 【アブストラクト】 本トークでは、イベントストーミングを活用したオブジェクトモデリングの実践が開発プロセスとアーキテクチャにどのような変革をもたらしたかについて詳しくお話しします。 「どのようなオブジェクト…

                                                                                イベントストーミングによるオブジェクトモデリング・オブジェクト指向プログラミングの適用・開発プロセスの変遷・アーキテクチャの変革 / Object modeling with Event Storming.
                                                                              • Object.keys() が返す配列の順序における数値キーの昇順には上限がある - カミナシ エンジニアブログ

                                                                                はじめに こんにちは。昨年の10月にカミナシに入社したソフトウェアエンジニアの tokuse です。 気が付けば入社してから既に半年以上経っており、光陰矢の如しで驚愕しています! カミナシではフロントエンドを TypeScript で開発しています。そんな中、先日 Object.keys() の仕様に起因する不具合が発生し、その際に Object.keys() が返す配列の順序に関する仕様について詳しく知りました。当稿ではその仕様について説明します(ECMAScript 最新前提です)。 はじめに 問題となった処理 Object.keys() の仕様 まとめ 余談 おわりに 問題となった処理 まず、問題となった処理をサンプルコードで紹介します。次のコードは、オブジェクトの数値キーのうち最大値を取得しようとした処理です。 type UserId = number; type User = {

                                                                                  Object.keys() が返す配列の順序における数値キーの昇順には上限がある - カミナシ エンジニアブログ
                                                                                • Brainfuck 実装で学ぶ TypeScript 型レベルプログラミング - Object.create(null)

                                                                                  およそ 4 年前に「TypeScript で型レベル Brainfuck」という記事を書きました. susisu.hatenablog.com それから 4 年間の間に TypeScript も進化し, 型レベルプログラミングの技法にも大きな変化がありました. 特に顕著な影響があったものでは, TypeScript 4.0 のタプル型の改善 TypeScript 4.1 のテンプレートリテラル型や条件型での再帰 TypeScript 4.5 の条件型での末尾再帰の除去と, 再帰の上限の緩和 などがあります. こういった変化も踏まえた上で, いまから TypeScript の型レベルプログラミングに入門する人に向けて改めてまとめ直したものがこの記事です. 内容は記事執筆時点の最新版である TypeScript 5.4.5 で動作を確認しています. ぜひ Playground などを使って,

                                                                                    Brainfuck 実装で学ぶ TypeScript 型レベルプログラミング - Object.create(null)

                                                                                  新着記事