クローチャーを使った約1 ヶ月後の私の感想

2026/06/03 4:56

クローチャーを使った約1 ヶ月後の私の感想

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

要約

Japanese Translation:

著者は GNU Make とシェルスクリプトから静的 Web サイト構築にクローチャを移行することに成功しました。当初はその構文にためらいを抱えていましたが、1 ヶ月足らずでこの言語が驚くほど使いやすさに気づきました。著者は、クローチャの単一の個人による統一的な設計を共通 LISP の歴史的妥協案やスキームの最小限のエコシステムに対する主要な利点として指摘しています。この転換を促した特定の機能には、「seq」のような統一された抽象化、マクロなしで複合的に扱われる一級データ構造(リスト、ベクトル、マップ、集合)、および JVM コアに含まれているため外部ツールに依存せず利用可能な大規模な標準ライブラリが含まれます。Java からの呼出慣習との相互運用性の課題については認識しつつ、著者はこれらを実質的に克服したとしています。今後については、Babashka を用いたスクリプティングと Project Euler の問題解決を通じて専門性を深化させる計画を抱えており、現在は問題 2304741 に取り組んでいます。結局のところ、この経験はクローチャを、レガシーな複雑さを持たず深い JVM 統合を求める開発者のための強力かつシンプルで洗練された代替手段であることを浮き彫りにしています。

本文

Clojure 学習記:1 ヶ月の感想と考察

現在、このサイトは GNU Make とシェルから書き換え直して間もないばかりか、静的サイトジェネレーターの作成に Clojure を選んでいました。当初は括弧の多さに皮肉を込めていましたが、実際には非常に強力であることがわかりました。ここ約 1 ヶ月の触り心地についてまとめます。

✨ 気に入った点

一貫性のある設計(Common Lisp との違い)

  • Common Lisp (CL) は 80 年代に存在した Lisp をすべて折衷した結果、奇妙な雑拌合体となっています。
    • 例:リストマッピングは
      mapcar
      、フィルタリングは
      remove-if-not
      など、命名法則に統一感がありません。
    • 「委員会によって設計された」ような印象が強く、学習コストが高いです。
  • Clojure は一人の作者による産物であり、言語全体の統一感(コヒーレンス)が高いです。
    • シーケンス(配列)の抽象化により、配列
      aref
      とリスト
      nth
      を個別に記憶する必要がありません。どちらでも
      nth
      で動作します。
    • ハッシュマップのマッピングも簡潔です。
    ; Clojure の簡潔な書き方
    (map (fn [[k v] ...]) hash-table)
    
    ; Common Lisp の冗長な例
    ;; あるいは
    (maphash (lambda (k v) ...) hash-table)
    
    • 等価性判定もシンプルで、型依存的な細かさ(
      eq
      ,
      eql
      ,
      equal
      など)を気にせず、基本的に
      =
      で問題ありません。
    • 数値比較:
      ==
    • 同一性確認:
      identical?

「機能込み」の実用性(Scheme との違い)

  • Scheme は機能を削ぎ落とし、純粋な理想を追求した「美しい宝石」ですが、人体工学的機能や利便性は最小限です。
    • R5RS 仕様書は 50 ページ以内ですが、エラーハンドリングやファイル処理、ハッシュマップなどの基本機能が欠落しています。
  • Clojure は標準ライブラリが充実しており、JVM をホスト言語としています。
    • **「機能込み」**という設計により、どのドメインでも恐らく必要になるライブラリが用意されています。
    • プラクティカル(実践的)なツールとして非常に適しています。

人間工学的なデータ構造

  • 「すべてはリストである」という Lisp の哲学を愛しましたが、現実にはランダムアクセス可能なベクター辞書的なハッシュマップが必要不可欠です。
  • Clojure はこれらを 第一級オブジェクトとして扱い、4 つの基本データ型(リスト、ベクター、ハッシュマップ、セット)をコア言語で平等に扱っています。
    • これにより、人間が直感的に扱うための良いデータ構造選択が実現されています。

🛑 躓いた点

構文が多すぎる

  • Lisp の特徴である「丸括弧とスペースだけの単純な構文」から大きく外れています。
    • シーケンスの抽象化:
      ()
      (リスト)、
      []
      (ベクター)、
      {}
      (マップ)、
      #{}
      (セット)が混在します。
    • シンボル名の
      /
      . 
      が特殊な意味を持ちます。
  • クォート解除構文
    ~
    は当初大きなマイナスでしたが、時間をかけて慣れ始めました。ただし、ブロック終了の
    ])]})
    部分などが複雑です。

Java の知識不足

  • Clojure は JVM で動作するため、Java エコシステムに依存しています。
  • 初期は学習意欲が薄かったものの、インターホップ呼出規約(Interop)については理解が進んでいます。
  • Java を全く知らなかったため、その分だけ補完やエラーメッセージを正しく読み解くのに苦労しました。

🚀 今後の方針:Clojure に固執する

以上の経験を踏まえ、現在 Clojure を継続して使用します。理由は以下の通りです。

  • 楽しさ: 学習プロセスが非常に楽しいです。
  • 使いやすさ: シンプルかつ強力な言語です。
  • スクリプト実行:
    babashka
    などにより、迅速なスクリプト実行も可能です。
  • Java エコシステム: Java の世界に慣れることは決して悪い選択ではありません。

現在はサイトをビルドするだけでなく、コードを書く訓練のために Project Euler を行っています。

同じ日のほかのニュース

一覧に戻る →

2026/06/03 3:47

MAI コード 1 のフラッシュ処理

## Japanese Translation: 以下の内容は、Key Points List に含まれていた欠落していた具体的な指標およびデータポイントを統合しつつ、明瞭さを維持した改良されたバージョンです。 **Improved Summary:** MAI-Code-1-Flash は、実稼働環境で使用される GitHub Copilot harness を直接トレーニングによって訓練され、現実世界の agentic タスクを処理するコーディング AI における画期的な進歩を表します。以前の手法では正確性と効率性は排他的なものとして扱われていましたが、本モデルはこれらがシームレスに共存できることを実証しました。適応的なソリューション長制御を活用し、推論の深さを動的に調整することで、単純なリクエストには簡潔に応答し、複雑な問題にはより多くの予算を割く仕組みです。その結果、開発者は競合製品である Claude Haiku 4.5 に比べて最大 60% も少ないトークンで有用な出力をより早期に受け取り、レイテンシと運用コストを大幅に削減できます。 同じプロダクション harness 内での多様なデータセット(SWE-Bench Verified、SWE-Bench Multilingual、SWE-Bench Pro、Terminal Bench 2)を含む評価が、優位性の高いパフォーマンスを確認しました。MAI-Code-1-Flash は、テストされたすべてのコアコーディングベンチマークにおいて Claude Haiku 4.5 を凌駕し、多様で現実世界のタスクである SWE-Bench Pro で注目される +16 ポイントのリード(51.2% vs. 35.2%)を達成しました。これらの結果は、MAI-Code-1-Flash を使用する場合、より高い正確性と更大なる効率がもはやトレードオフではないことを検証し、インタラクティブなコーディングワークフローを滑らかにしつつ、全体の生産性を最適化するためのトークン投資を実現します。

2026/06/03 5:30

BYD の車部品 CT 走査検査

## Japanese Translation: 主な洞察は、現代のペットボトルが数十年前進化する工学によって最適化されており、シュリンクラップ、積み重ね、粗悪な取扱いなどに対して耐え抜き、産業物流に適合するように設計されているにもかかわらず、開封した後は実用的な使用時間がわずか数秒しかないという点にあります。この耐久性のパラドックスは、長距離輸送での耐久性に大規模な投資を行いながら製品を瞬時に廃棄するという重大な非効率性を浮き彫りにしています。重量のあるガラス(コカ・コーラの 1899 年の製瓶;エビアンが数世紀の陶器製の壺の使用の後、1908年にガラスへ転換)からプラスチックへの進化は、コスト、安全性、重量削減によって推進されました。初期のプラスチック試作には、モンサント社の「Easy-Goer」アクリロニトリルコポリマー(1975 年)があり、それが漏出と動物毒性に関する懸念から 1977年にFDA にて禁止されました。これにより、デュポン社が Polyethylene Terephthalate(PET)を導入した 1967–1973 年へと道が開かれました。1970年代後半には、大型の 2リットルボトル用の PET 生産が始まり、初期デザインは最大 96 g の重量を持ち、接着剤を用いたベースと 0.3–0.4 mm の壁厚を特徴としていました。1990年代初頭の革新としては、接着剤を使用しない「Petaloid」ベースや、より薄い壁(例:アクアフィナで約 0.2 mm)を採用するものがあり、材料使用量を大幅に削減しました。それ以降のさらなる進歩—例えば、ニージャラ・ボトルリング社の Eco-Air デザインが厚さ 0.17 mm 以下を達成し、1998年から現在にかけてプラスチック使用量を 60%削減した事例や、半リットルボトルが 2000年代中期のバージョンと比較して 75%少ないプラスチックを使用した事例—は、継続的な効率向上を反映しています。これらの進歩は企業の戦略とも整合しており、ネスレ社がペリエ社を買収(1992年)や、ペプシ/コカ・コーラがアクアフィナとダサニを中〜後半の 1990年代に発売したことは、ソーダ販売の減少への対応として行われました。しかし環境上の課題は依然として残っています。リサイクルシステムが材料の分離や汚染管理—if 特に破砕されたガラスが多材料ストリームに混入し、新しい容器にとって使用不可能になる—を失敗した場合、これらの良質に設計されたボトルは多くが埋め立て地に行き着いたり、下位利用されたりします。将来の進歩には、スマートなデザイン、厳格な材料分離プロトコル、改善されたリサイクルインフラストラクチャを通じて、サプライチェーンの耐性と廃棄物削減を調和させる必要があります。 ## Text to translate: The primary insight is that modern water bottles represent decades of advanced engineering optimized for robust industrial logistics—surviving shrink-wrapping, stacking, and rough handling—even though they have only seconds of practical use once opened. This durability paradox highlights a major inefficiency: investing heavily in long-haul resilience while discarding the product instantly. The evolution from heavy glass (Coca-Cola's 1899 bottling; Evian's switch to glass in 1908 after decades of earthenware jugs) to plastics was driven by cost, safety, and weight reductions. Early plastic attempts included Monsanto's "Easy-Goer" acrylonitrile copolymer (1975), which faced FDA bans in 1977 due to leaching and animal toxicity concerns, paving the way for DuPont's Polyethylene Terephthalate (PET) introduced around 1967–1973. By the late 1970s, PET production for large two-liter bottles began, with early designs weighing up to 96 g, featuring glued bases and wall thicknesses of 0.3–0.4 mm. Innovations in the early 1990s, such as "Petaloid" bases that eliminated glue and thinner walls (e.g., Aquafina at ~0.2 mm), cut material use significantly. Further advances since then—such as Niagara Bottling's Eco-Air designs under 0.17 mm thickness, which achieved a 60% plastic reduction from 1998 to today, and half-liter bottles using 75% less plastic than mid-2000s versions—reflect ongoing efficiency gains. These advances also align with corporate strategy: Nestlé's acquisition of Perrier (1992), and Pepsi/Coke launching Aquafina and Dasani in the mid-to-late 1990s, all in response to declining soda sales. Yet environmental challenges remain. If recycling systems fail to separate materials or manage contamination—especially with crushed glass mixed into multimaterial streams that become unusable for new containers—these well-engineered bottles often end up landfilled or downcycled. Future progress must reconcile supply chain resilience with waste reduction through smarter design, stricter material separation protocols, and improved recycling infrastructure.

2026/06/03 4:27

「グメールが私をおろかに思っている」と感じたので、退社しました。

## Japanese Translation: 著者は、嫌悪感と軽慢さを感じてしまう強制的な AI 機能のため、16 年使用してきた Gmail アカウントを恒久離脱することにした。具体的な問題は、不要なメッセージの要約、自動補填された返信文、そして「メールを書いてください」、「Tab で改善する」など、ユーザー自身がメールを作成できないか、あるいは受信者への時間の価値が低いことを示唆するような常駐的なプロンプト(促し)が含まれる。一部の AI 機能はオフにすることもできるが、それを行うことで自動的なスレッド分類といった長く使い続けられ有用な機能を犠牲にせざるを得なくなる。著者は、これらの強制的な機能が真のユーザーニーズを満たすためではなく、言語モデルの利用指標を人為的に高めるための意図的な戦術であることを疑っている。Google の従来からある安定したサービスや、fediverse を通じて独自ドメインと接続して使用している Fastmail での良好な第一印象とは裏腹に、著者はこの移行を Google エコシステムからの故意の断絶——単なるクライアントの切り替えではない——と捉えている。著者は連絡先を移す予定だが、歴史のあるメールスレッドはインポートせず、「不快な経験」として記述する後に「きれいな決別」を図る打算である。この状況はより広範な懸念を示している:技術企業は、ユーザーの自律性や長期的な信頼よりもエンゲージメントデータを優先することで、忠実な顧客を失うリスクを抱えている。 ## Text to translate: Improved Summary: The author is permanently leaving their 16-year-old Gmail account due to mandatory AI features they find intrusive and disrespectful. Specific issues include unsolicited message summaries, pre-filled replies, and persistent prompts ("help me write," "Tab to improve") that imply the user cannot compose emails themselves or that recipients do not deserve their time. While some AI features can be disabled, doing so forces users to sacrifice long-standing, useful functions like automatic thread categorization. The author suspects these unsolicited features are intentional tactics to artificially inflate language model usage metrics rather than serve genuine user needs. Despite Google's historically stable service and positive first impressions with Fastmail (which they have connected their custom domain to and use via the fediverse), the author views this move as a deliberate break from Google's ecosystem—not merely a client switch. They plan to migrate their contacts but will not import historical email threads, seeking a "clean break" after what they describe as a "bad taste" experience. The situation highlights a broader concern: tech companies risk losing loyal customers by prioritizing engagement data over user autonomy and long-term trust.