フレームブック

2026/03/09 0:21

フレームブック

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

要約

Japanese Translation:

この記事は、2006年製のファーストジェネレーションMacBook(A1181)を、その外観を保ったまま完全に機能する現代型ノートパソコンへとDIYで改造した内容を記録しています。著者は古くなった内部構成をFramework Laptop 13のメインボードに差し替え、Intel i7‑1280Pプロセッサと64 GB DDR4 RAM を搭載し、アルミテープを使用してCSOT 27.5″ MND307DA1‑9ディスプレイを取り付けています。電源は故障したMacBookバッテリーを再利用し、車体に接着して供給し、充電用にカスタムボタン/入力シン(shim)を追加しています。

キーボードとトラックパッドの機能は、Apple内部PCBへUSB‑Cケーブルを直接はんだ付けすることで復元されました。これは初めてのはんだ付け作業でした。複数の剥離されたUSB‑Cハブ(Anker, EZQuest, SVPRO)をカスタム3Dプリントのスタンドオフに取り付け、音声はFramework Laptop 13スピーカーキットから供給され、ウェブカメラは車体をドレミングした後に統合しました。上部ケースの裏側には7×7×0.28 cmのLEDが設置され、Appleの輝くロゴを再現しています。また、Wi‑Fiカードは右側USBハブ下に装着し、アンテナは車体の上端まで伸びています。

構造的変更としては、元々あった真鍮スタンドオフを接着した3Dプリント製に置き換え、多くの部品には瞬間接着剤(スーパグルー)を使用しました。全作業は約三か月を要し、はんだ付け・Blenderモデリング・電子組み立てといったスキルが必要でした。今後の計画としては、剥離されたハブをカスタムPCBに置き換え、取り付け方法を洗練させることでより統合的な仕上げを目指す予定です。

このプロジェクトは、現代のモジュラー硬件がレガシーラップトップのフォームファクタにどのように適応できるかを示しており、メーカーがデバイス寿命を延ばしつつ電子廃棄物を最小化するための設計図として役立ちます。

本文

リメイクされたクラシック作品。少しだけボトムが不安定ですが、全体としては楽しいプロジェクトでした。


イントロダクション

2006年に登場した初世代のMacBook(A1181)は、私のお気に入りのラップトップデザインの一つです。長い間、黒い MacBook を入手できる唯一のモデルが PowerBook G3 と同じだったため、特に魅力的でした。また、私自身が所有した最初の MacBook でもあります。しかし、2015 年にはその性能はかなり劣っていました。

このプロジェクトを始めたきっかけは、古い Mac や PC を新しいハードウェア(主に M1 Mini)でレトロフィットする記事や動画を読んだことです。誰かがすでに同様の作業を行っていると知り、F4Mi の iMac G5 を完全装備モニターへ変換した映像を見た瞬間、挑戦しようという気持ちになりました。


購入・分解

  • 黒いポリカーボネート製 MacBook(A1181) を eBay で数台購入。全てかなり使用済みでバッテリーがなく、電源投入できませんでした。
  • OEM 部品として外装ケースを入手し、iFixit のチュートリアルに従って完全分解。結果として、裸のシャーシだけが残りました。

使い捨てにした理由は、既製品よりもクリーンな見た目だったためです。動作しない部品はほとんど破棄し、下部ケースにねじ込む金属ブラケットと上部のヒンジ保持用ブラケットのみを残しました。


取り付けるハードウェア

項目製品
Framework Laptop 13 MainboardIntel® Core™ i7‑1280P、64 GB(2×32 GB DDR4 RAM)
MND307DA1‑9 CSOT Display Panel-

周辺機器・その他

  • Anker USB‑C Hub
  • EZQuest USB‑C Hub (7‑in‑2)
  • SVPRO 8MP USB Camera
  • Framework Laptop 13 Speaker Kit
  • USB 2.0 Expansion Module

組み立て手順

1. トップケース / キーボード

キーボード/トラックパッドとして使用できるように、ケースの回路を利用し USB ケーブルをはんだ付けする方法の記事を見つけました。初めてはんだ付けでしたが、多くのチュートリアルを観た後で自信が持てました。USB‑C ケーブルをはんだ付けしてメインコンピュータに接続すると動作確認完了です。

はんだパッドは小さく壊れやすいため、偶然ケーブルを引っ張った際にパッドが剥がれてしまいました。トップケースを交換し、新しいケーブルをはんだ付けしました。

2. スタンドオフ

下部ケースの元々あった真鍮インサートスタンドオフを取り外し、3Dプリントした自作スタンドオフに Gorilla Glue で固定。M2 螺旋は引き続き使用しました。

3. メインボード配置

メインボードはファンの排気口を後方に合わせるためやや中心から外れています。ベアリングは明確な位置に取り付け、スピーカーは元の MacBook よりも音質が向上しています。

4. バッテリー

既存の壊れた MacBook バッテリを取得し、セル保持側のプラスチックを慎重に外して裏面に超接着剤で貼り付け、穴を埋めました。ロック機構が欠落していたため、カスタム 3D プリント「ボタン」を作成して代替しました。

5. I/O

左側にはオリジナルのポート全てを配置。F4Mi の動画に触発され、USB ハブをケースから外し、3D プリントしたスタンドオフで再配置。さらに左側用の I/O シールドを設計し、古い穴を置き換えました。

右側は DVD ドライブスロットが USB‑C ポートの高さと合致するため、USB‑C ハブを注文してシールドを設計。スタンドオフで取り付けることでポートを固定すると同時にトップケースを閉じる機能も持ちます。

6. 接続

  • 小型フラット USB‑C ケーブルを使用し、ゴム被覆を剥がして FPC コードを露出。余分な部分は切り取り、メインボードに接続。
  • ウェブカメラとトップケースは右側の小さな USB モジュールで接続。入力シンブ(shim)にはんだ付け可能なポイントを用意しました。
  • 元の膜式電源ボタンを、ヘッダピン出力付きの小型ボタンへ置き換え。同じ入力シンブへのワイヤー接続。

7. Apple ロゴ

元のディスプレイパネルはバックライトがロゴのバックライトとしても機能。カスタム LED(7 × 7 × 0.28 cm)をトップケース背面に設置し、USB モジュールへ配線してはんだ付け。これでロゴ表示が可能になりました。

8. ディスプレイ取り付け

ディスプレイをベゼル中央に配置し、マスクテープで固定。その後強力アルミニウムテープで全周囲を閉じました。

9. ウェブカメラ

オリジナルのウェブカメラモジュールは小さく、使用しているものよりも大きいです。トップケース上部のプラスチックを大部分削除し、レンズ通過用に金属ブラケットから穴を広げました。

10. 内部構成

すべてを安全に固定し、ショートや破損が起こらないように注意しました。内部レイアウトは次のようになっています:

  • バッテリー周辺に発熱抑制用パッドを追加。
  • 空きスペースを埋めるため 3D プリントした矩形ブロック。
  • WiFi カードは右側 USB ハブ下部にぴったり収まり、アンテナはトップケースへ伸びます。
  • トップケースは USB‑C モジュールのマルチポートで接続。必要に応じて切り離し、通常の USB‑C M2M ケーブルを使用可能。

ギャラリーと結論

このプロジェクトは楽しく、非常に興味深いものでした。開始から完了まで約 3 ヶ月かかりました。以下のスキルを身につけました:

  • はんだ付け
  • 3D モデリング
  • その他多岐にわたる

次回は、USB ハブを使う代わりにカスタム PCB を設計し、接着剤よりも確実な取り付け方法を模索したいです。


感謝の言葉

この「レトロフィット」プロジェクトをご覧いただきありがとうございます。細部の説明が不足していたり手順が抜けている点については、写真や詳細なドキュメントを用意できませんでした。ご質問があればメールまたは Bluesky の DM でどうぞ。

特別に感謝:

  • N3rding – トップケースと電源ボタン用入力シンブ
  • Phillip – Blender を使ったスタンドオフ・I/O シールド設計の指導

そして、この記事を読んでくださったあなたへも心から感謝します! :P

BYEEEEE!!!!!!!!!

同じ日のほかのニュース

一覧に戻る →

2026/03/09 5:30

エージェント・セーフハウス – macOS ネイティブサンドボックスによるローカルエージェントの保護 --- **ポイント解説** - **Agent Safehouse** は、macOS 上で動作するローカルエージェント(バックグラウンドプロセスやサービス)を安全に隔離し、外部からの不正アクセスや権限昇格を防ぐための仕組みです。 - 「macOS‑native sandboxing」は、Apple が提供するサンドボックス機能(`sandbox-exec`, `com.apple.security.*` など)を利用しており、追加のソフトウェアやカーネル拡張は不要です。 **主な特徴** 1. **最小権限で実行** – 必要最低限のファイル・ネットワークアクセスのみ許可し、それ以外は自動的にブロック。 2. **監査ログ** – アクセス試行や失敗がすべて記録され、後からトラブルシューティングやセキュリティ調査に利用可能。 3. **設定の柔軟性** – プロファイルベースでポリシーを定義でき、企業規模に合わせた細かな制御が可能。 **実装例(サンドボックスプロファイル)** ```xml <key>com.apple.security.app-sandbox</key> <true/> <key>com.apple.security.files.user-selected.read-write</key> <true/> ``` このように、エージェント・セーフハウスは macOS の標準機能だけで安全性を大幅に向上させるソリューションです。

## Japanese Translation: > Safehouse は、ローカル AI エージェントがアクセスできるファイルを厳密に制御する軽量な macOS ネイティブサンドボックスです。デフォルトでは「deny‑first」ポリシーに従い、指定されたワークスペース外への読み書き試行はカーネルエラー(“Operation not permitted”)を引き起こし、SSH キーや `.aws` などの機密項目やその他個人リポジトリを保護します。ツールは `curl` を使って `~/.local/bin` にインストールされる単一の Bash スクリプト(`safehouse.sh`)でセットアップされます。 > > エージェントは `safehouse claude --dangerously-skip-permissions` のようなコマンドで呼び出され、現在の作業ディレクトリ(通常は git リポジトリルート)への読み書きアクセスを自動的に許可し、インストール済みツールチェーンへの読み取りアクセスのみを許可して残りのホームディレクトリは拒否します。 > > 上級ユーザーは `safe() { safehouse --add-dirs-ro=~/mywork "$@"; }` のようなシェル関数を `.zshrc` や `.bashrc` に追加し、すべてのエージェント呼び出しがデフォルトで Safehouse 内で実行されるようにできます。セッションごとにサンドボックスをバイパスするには、コマンドに文字列 `command` を接頭辞として付けます(例:`command claude`)。 > > このゼロコンフィグ方式により、開発者やチームはローカルファイルとの AI 連携を安全に行い、個人プロジェクト、クラウド認証情報、企業リポジトリでの偶発的なデータ漏洩を減らすことができます。

2026/03/09 6:40

**ブラックスカイ・AppView**

## Japanese Translation: Blacksky の AppView は Bluesky Social PBC の AT Protocol 参考実装をフォークしたもので、**外部からの貢献やプルリクエストは受け付けません**。すべての変更は `packages/bsky`、`services/bsky` の3つのディレクトリと1つのマイグレーションファイルに限定され、参考コードの大部分を保持しています。 リポジトリは組み込みの TypeScript フィーホーズコンシューマーを Rust ベースのインデクサ **rsky‑wintermute** に置き換えており、並列キューを通じて約10 k+ レコード/秒を取り込むことができます。Wintermute はブートストラップツール(`queue_backfill`、`direct_index`、`label_sync` など)を提供し、ライブインデクシングとバックフィルを分離します。 主なパフォーマンス最適化は次の通りです: - PostgreSQL の LATERAL JOIN 再書き込み(`getTimeline` / `getListFeed` 用) - Redis キャッシュレイヤー(アクタープロファイル TTL 60 s、レコード TTL 5 m、相互作用カウント TTL 30 s、投稿メタデータ TTL 5 m) - 通知設定のサーバー側強制 実装された修正: - JWT 検証における古い署名鍵の処理 - JSON のサニタイゼーションで null バイト/制御文字を除去 - アクターメモリキャッシュ内の protobuf タイムスタンプバグへの対策 Blacksky は **コミュニティ投稿サポート** をカスタムレキシコン namespace(`community.blacksky.feed.*`)と専用 `community_post` テーブル、データプレーン/API 層でのメンバーシップゲーティングを通じて追加しています。これは混在した投稿スレッド(`getPostThreadV2`)とも統合されます。 全体アーキテクチャフロー: Bluesky Relay → rsky‑wintermute(フィーホーズコンシューマ/バックファラー/ラベルインデクサ) → PostgreSQL 17 → bsky‑dataplane(gRPC) → オプションの Redis キャッシュ → bsky‑appview(HTTP) → リバースプロキシ、Palomar が OpenSearch 検索機能を提供 バックフィル性能: ライブインデクシングは約1 k イベント/秒。42 M ユーザーと 18.5 B レコードのフルバックフィルは10 k レコード/秒で 2–4 週間、部分的なバックフィルは数時間〜数日で完了 ブートストラップ課題への対策: - PostgreSQL COPY による JSON 腐敗 - null バイト処理 - タイムスタンプ精度の強制 - 通知テーブルの肥大化緩和 - 投稿埋め込みテーブルの人口化 - ラベル否定順序 - Fjall キュー毒性解決 - TLS プロバイダ初期化 - アカウント移行後の署名鍵回転 **フルネットワーク AppView のリソース要件:** ≥ 16 CPU コア(推奨 48+)、≥ 64 GB RAM(256 GB 推奨)、10 TB NVMe ストレージ(28 TB RAID 推奨)、同一マシンまたは低遅延での PostgreSQL、継続的ネットワーク 100 Mbps(1 Gbps+)以上の取り込み帯域 リポジトリは MIT/Apache 2.0 のデュアルライセンスです。アップストリーム同期手順は `git remote add upstream https://github.com/bluesky-social/atproto.git` で提供されています。

2026/03/09 4:58

「エージェント時代にリテラトープログラミングを見直すべきです。」

## Japanese Translation: > 本稿は、コードと説明文を組み合わせたリテラトープログラミングが、AI エージェント(例:Claude や Kimi)が Org‑Mode ファイルを単一の真実源として扱う場合に実用化できることを主張しています。 > > Org の構文を解析することで、これらのエージェントはランブックを生成し、埋め込みコードブロックを実行し、Jupyter ノートブックのように結果を保存し、プローズとコードを同期して自動的に更新できるため、ナラティブと実行可能なスクリプトを分離する手作業「タンギング」ステップが排除されます。 > > 著者は、Org Mode を設定管理に個人的に使用した例でこれを示しています:エディタ内で直接コマンドを書き込み、それらを実行し、メモを自動的に取得します。 > > コードとプローズの2つの並列文書を維持することは採用への一般的な障壁ですが、AI 主導のワークフローは `AGENTS.md` ファイルに記載された指示(実行前のタンギング、常にステップを説明するプローズ、両側を同期させる)に従うことでそのオーバーヘッドを排除します。 > > このアプローチはワークフローを合理化し、コードベースを複数の読みやすいフォーマットへエクスポートしやすくし、「コードを書く」から「コードを読む」へのシフトを促進します。また、大規模プロジェクトにおける Org‑Mode の Emacs 統合の限界を浮き彫りにし、リテラトープログラミングの普及を広げるために Markdown などの類似フォーマットを推奨することも示唆しています。