Splas はカラーフォーマットです

2026/06/04 6:22

Splas はカラーフォーマットです

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

最も重要な革新は「Splash」であり、これは赤、緑、青のチャンネル値(0〜9)をそれぞれ各桁が表す、人間もコンピュータも読み込める 3 桁の色形式です。これにより正確に 1,000 の離散的な色が得られ、決定麻痺を軽減します。例としては、900 が純粋な赤、555 がニュートラルグレー、000 が黒、999 が白を示します。当初は Cellpond でドラッグ&ドロップインターフェースのために採用されましたが、Splash は無限の RGB スライダーや従来のヘックスコードと比較して色選択を簡素化します。このシステムは、すべての 1,000 の変換をリスト化した静的リスト(例:090 → #000071)、Splash コードを変換する JavaScript 関数(数学計算またはルックアップテーブルを使用して)、Matan から提供された SCSS 関数(

@function splash($r, $g, $b)
)およびすべての色を含むプリバックド CSS ファイルによってサポートされています。デザイナーは手作りのルックアップテーブルを使用してテーマをカスタマイズでき、Roman Komarov は
--splash-bg: 971
といった直接的なスタイル定義のための CSS ミクスインをサポートを追加しました。Felix Roos の「garten」サイトをインスピレーション源とし、Splash は多様なプロジェクト要件を満たしつつ美的精度を維持し、ユーザーらを完璧主義から解放する効率的なエコシステムを構築します。

Text to translate:

Summary:

The most significant innovation is "Splash," a human- and computer-readable three-digit color format where each digit represents red, green, or blue channel values (0–9), yielding exactly 1,000 discrete colors to reduce decision paralysis. Examples include 900 for full red, 555 for neutral grey, 000 for black, and 999 for white. Originally adopted by Cellpond for its drag-and-drop interface, Splash simplifies color selection compared to infinite RGB sliders or traditional hex codes. The system is supported by a static list of all 1,000 conversions (e.g., 090 → #000071), a JavaScript function that converts splash codes via math or lookup tables, and an SCSS function (

@function splash($r, $g, $b)
) from Matan alongside a pre-baked CSS file with all colors. Designers can customize themes using hand-crafted lookup tables, and Roman Komarov added CSS mixin support for direct style definitions like
--splash-bg: 971
. Drawing inspiration from Felix Roos's "garten" site, Splash creates an efficient ecosystem that meets diverse project requirements while maintaining aesthetic precision and liberating users from perfectionism.

本文

Splash カラーシステム:簡易 RGB の魅力

Splash は、色のフォーマットを3 桁の数字で表すシステムです。

システムの特徴と仕組み

  • 構造: 各桁はそれぞれ異なる色チャンネルに対応します。
    • 1 桁目: (Red)
    • 2 桁目: (Green)
    • 3 桁目: (Blue)
  • 値の範囲: 各数は
    0
    から
    9
    の整数です(例:
    900
    は赤が最大で緑・青が最小)。
  • 決断麻痺防止:
    • 完璧な色を探すための頭を抱え込む手間を省きます。
    • 感情的な負担なく、「どれを選んでも大丈夫」という安心感を提供します。

標準的な色組み合わせの例

基本的には以下の組み合わせが最も一般的です。

コード名称備考
000
すべてのチャンネルが最小
999
すべてのチャンネルが最大
555
グレーチャンネルのバランスが等しい
079
淡い水色
090
099
シアン
009
409
ピンク
909
ライトピンク淡い色合いを含む
900
940
オレンジ
990
黄色

自由度の確保: 標準的な組み合わせだけでなく、独自スタイルを作る十分な余地があります。

  • 例:
    289
    (より深いシアン)、
    529
    (パープル) など
  • 完璧でなくても問題ありません。この制約こそが、ミスを恐れずに色を選べる「解放感」を生み出します。

なぜ「1,000 種類」なのか?

Splash カラーは合計 1,000 種類しか存在しないため、すべての組み合わせをリスト化する現実的なメリットがあります。

  • 高速動作: コードが静的に生成できるため、パフォーマンスに優れています(Cellpond プロジェクトの戦略の一例)。
  • 直感的な操作: ユーザーは
    1
    から
    9
    の個々の値のみを扱うだけで済み、ドラッグ&ドロップも容易です。

JavaScript での実装方法

Splash コードから標準的な RGB / 十六進法 (#Hex) に変換する方法はいくつかあります。

方法 1:自動計算によるマッピング

単純な数学式で

0-9
0-255
にマッピングします。ライブラリ不要でゼロから構築可能です。

function getHexFromSplash(splash) {
  // 1. 入力を文字列とし、不足分を '0' で埋める (例: "9" -> "009")
  const splashChannels = splash.toString().padStart(3, "0").split("")

  // 2. 各値を線形マッピングする (値 / 9 * 255)
  const rgbChannels = splashChannels.map((v) => Math.floor((v / 9) * 255))

  // 3. 各成分を十六進法に変換し連結する
  const hexChannels = rgbChannels.map((v) => v.toString(16).padStart(2, "0"))
  
  return "#" + hexChannels.join("")
}

// 例: Splash "900" -> "#f00" (赤)
console.log(getHexFromSplash("900")); 

方法 2:テーマに合わせたカスタマイズ

「完全な黒」や特定の色バランスを好む場合は、ルックアップテーブルを手作業で作成し使用します。

例えば、暗い背景でも視認性が高く、かつ青み・緑みが少し入ったようなパステル調を実現したい場合:

const CHANNEL_VALUES = [
  // Red channel values (0-9 mapped to hex)
  ['17', '37', '46', '62', '80', '9f', 'ae', 'cc', 'f2', 'ff'],
  // Green channel values
  ['1d', '43', '62', '80', '9f', 'ae', 'cc', 'de', 'f5', 'ff'],
  // Blue channel values
  ['28', '46', '62', '80', '99', 'ae', 'cc', 'de', 'f7', 'ff'] // ※調整済み例
]

function getHexFromSplash(splash) {
  const splashChannels = splash.toString().padStart(3, "0").split("")
  
  // ルックアップテーブルから直接取得
  const hexChannels = splashChannels.map((v, i) => CHANNEL_VALUES[i][v])
  return "#" + hexChannels.join("")
}

方法 3:静的ルックアップテーブル(超高速化)

計算ロジックを完全に省略し、配列の直接参照のみを使用する方法です。パフォーマンスが最大化されます。

const SPLASH_TO_HEX = [
  "#000000", "#00001c", "...", "#ffffff" 
  // 全ての 000〜999 のケースを事前に定義
];

function getHexFromSplash(splash) {
  return SPLASH_TO_HEX[splash]
}

その他の言語・フレームワークでの利用

SCSS (Matan)

SCSS 関数として実装され、

splash()
で指定可能です。

@function splash($r, $g, $b) {
  @return rgb($r * 28.34, $g * 28.34, $b * 28.34);
}

.foo {
  background-color: splash(0, 0, 9); // Splash "009"
}
  • プリセット CSS: すべてのカラーを含む静的なファイルも利用可能です。
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/matan-h/splash-css@master/dist/styles.css">
    <!-- 使用例 -->
    <span style="background-color: var(--sp090)">090</span>
    

CSS ミックスイン (Roman Komarov)

CSS 変数と組み合わせることで、以下のように簡潔に記述できます。

<span style="--splash-bg: 971">971</span>
  • 利点: 3 桁の数字のみを入力するため、テキストコードとの相性が抜群です。

まとめ

Splash カラーは、人間が扱いやすく、コンピュータでも高速に処理できる理想的な色システムです。

  • 読みやすさ:
    900
    という数字だけで「赤」と即座に理解できます。
  • 柔軟性: 計算ロジックを使わず、静的テーブルで完全に抽象化することも可能です。
  • 心身の健康: 選択肢が多すぎることで生じる「決断麻痺」を防ぎます。

ご意見やアイデアがありましたら、お気軽にお知らせください!

同じ日のほかのニュース

一覧に戻る →

2026/06/08 4:01

Linear がなぜこれほど速いのか?技術的な解説

## Japanese Translation: # リニア革命:ウェブアプリケーションのパフォーマンス革新 リニアは、データベースをブラウザ内に完全に実行する(IndexedDB を使用)ことで、従来の CRUD アプリのデータ読み込み時間である約 300ms を数ミリ秒に短縮します。この「ローカルファースト」アーキテクチャでは、標準的なネットワークループが逆転し、デバイス上で変更を即時適用し、WebSocket を経由で非同期でデルタをプッシュすることで、アップデート待ちの地味な网络待ち時間を排除します。共同創設者のトゥオマス・カンカレは、この自社工程エンジンをゼロから構築することを強く推奨しました。タンスタッククエリや SWR などの一般的な楽観的な更新ライブラリを使用せず、サーバーを単なる同期ターゲットとして厳密に扱うアプローチを採用しています。JavaScript のサイズを最小限に抑えるため(圧縮後の JS は約 21MB にまで削減され、ルートレベルのチャンクに分けられている)、チームはバンドルパイプラインを 4 回も移行しました(Parcel → Rollup → Vite → Rolldown)。これにより、配送されるコード量は約 50% 削減されました。重要資産には、フォント(単一の可変 Inter ファイル)、数百のルートチャンクが含まれており、サービスワーカーと `<head/>` に設定された並行モジュールプレロードリンクを通じて事前キャッシュされます。これにより、オフライン時や繰り返し訪問時でも即座にレンダリングが可能になります。さらに、重要な CSS、JavaScript、認証ロジックは HTML に直接埋め込まれており、認証にはセッショントークンの即時取得ではなく、ローカルストレージ内の存在を確認する方式を採用しています。该系统は、50 件のイシューリストが変更された場合、わずか 50 セルだけを更新するなどの粒度の細かなリレンダを達成します。これは、データをプロパティごとの MobX オブザーバブルに水浸げすることで実現されており、標準的なフレームワークでは追いつけない優れた速度優位性を保証しています。

2026/06/08 3:33

依存症、逮捕、犯罪歴からの再起:ゼロから立ち直すまで

## Japanese Translation: 最も重要な示唆は、技術分野における採用決定において過去の過ちよりも将来の可能性を優先させるべきであるという点です。堅い身元調査は無視できない課題を乗り越えた有能な個人が不当に排除されるためです。著者は自らの驚異的なキャリア回復の実例によってこの主張を具体化しています:未成年の逮捕歴(監禁中に最大保安施設で Schedule II 指定薬物への所有および製造・頒布意図に関する 17 の起訴を含む)から、現代の技術産業における高位な技術職に就くまでです。当初、企業の「前科者なし」という採用ポリシーにより 8 社のオファーが撤回されましたが、彼は後に、ワークリリースインターンシップ期間中やハスラ(現在は PromptQL)で創設者から felony conviction の開示を受け入れた際に再雇用されるなど、採用管理者が大きなリスクを冒して彼を採用したことで成功を果たしました。彼の journey はまた、試行錯誤を通じて学んだ特定の教訓も強調しています:Techtonic での不当な解雇とその後 Slack の履歴を調べて正当化されたことや、Hasura などのコミュニティ主導のツールの発見とその仕事が不可欠になったことなどです。この個人的な物語は、犯罪記録を超えて才能が存在し、支援的なリーダーシップが人生を変えうることを説得力のある証拠として提供します。これからの未来において、業界リーダーは候補者の履歴に基づいて自動的に不合格にするのではなく、実証されたスキルを評価するよりニュアンスのある採用慣行を採用すべきです。功績基準による評価システムへとシフトすることで、技術セクターは見逃された膨大な talent の蓄水池を活用できるほか、更生と労働市場への再統合を積極的に支援し、より包摂的な環境を構築できます。

2026/06/08 3:54

LLM が人間のような属性を持つなら、同じく「エイジ オブ エンパイア2」もそうだ

## Japanese Translation: 本文書(arXiv:2605.31514)は、Adrian de Wynter 氏によるものであり、大規模言語モデル(LLM)に独自の人間のような(擬人化された)特性を帰属させることは欠陥のある仮定であると論じます。その理由は、そのような特性は「Age of Empires II」といったリアルタイム戦略ゲームでトレーニングされたニューラルネットワークを含む、あらゆる十分に複雑なシステムにおいて現れる可能性があるためです。著者は「Age of Empires II」が機能的かつチューリング完全であることを認めつつも、レゴの組み立てやグレート・ボストン地域など他のエンティティを、同様の擬人化的特性を示し得る強力なサブストレートの例として挙げています。基本的な証拠は、根本的な応答特性は一定のままでも、観測される行動の解釈はサブストレートによって変化する可能性があることを示しています。擬人化された属性が存在するかどうかを、サブストレートに依存せずに仮定することは循環的な結論や情報不足の結論につながります。著者は「null(零)」という仮説を提唱しており、明示的な測定がそれを否定するまで、LLM をこれらの特性において非特異であると扱うよう提案しています。この転換は、技術業界に対して、ニューラルネットワークだけでなく他のシステムにも人間のような性質を見出さないよう警戒することを促します。これを裏付けるために、本稿では分野の概要調査、潜在的な異議への言及、そして「null」仮説を適用する具体例について論じています。本研究は、オープンネスとユーザーデータのプライバシーを重視する arXivLabs の取り組みの一部です。

Splas はカラーフォーマットです | そっか~ニュース