**Show HN:**

Fortranで書かれたターミナル専用のBluesky/AT Protoクライアントを作成しました。

2026/03/21 7:06

**Show HN:** Fortranで書かれたターミナル専用のBluesky/AT Protoクライアントを作成しました。

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

要約

Japanese Translation:

Fortransky は、主に Fortran で書かれた Bluesky の AT Protocol 用ターミナル専用クライアントです。Rust がファイアホースストリームのネイティブデコーダーとして機能します。
UI は

src/
にあり、Fortran の
iso_c_binding
を介して C の libcurl ブリッジ (
cshim/
) と通信します。このブリッジは HTTP リクエストを静的 Rust ライブラリに転送し、生のエンベロープ(CAR → DAG‑CBOR → NormalizedEvent)を JSON Lines に変換して、Fortran の TUI が描画します。

認証には アプリパスワード を使用し、セッショントークンは

~/.fortransky/session.json
に保存されます。
プロジェクトは標準の Ubuntu/Debian パッケージ(
gfortran
,
cmake
,
pkg-config
,
libcurl4-openssl-dev
)と Rust 1.70+ を利用します。拡張機能が必要な場合は、Python の依存関係(
cbor2
,
websockets
)を追加できます。

ビルドは 2 段階で進行します:まず

cargo build --release
で Rust ブリッジをコンパイルし、その後 CMake がすべてをリンクします。Rust の変更が無ければ、Rust ステップはスキップされます。

主要な TUI コマンドは次のとおりです:

  • l
    – ログイン/タイムライン取得
  • a <handle>
    – 著者フィード
  • s <query>
    – 投稿検索
  • p <handle>
    – プロフィール表示
  • n
    – 通知
  • c
    – 投稿作成
  • t <uri/url>
    – スレッド開く
  • j
    – ストリームタイル(jetstream)
  • m
    – ストリームモード切替 (
    relay‑raw
    )
  • q
    – 終了

ストリーミングには 2 つのモードがあります:jetstream(WebSocket JSON)と relay‑raw(バイナリ CBOR)。Rust デコーダー(

firehose_bridge_cli
)が推奨され、利用できない場合は Python の
cbor2
フォールバックを使用できます。

デフォルトでは Fortransky はテスト用に組み込まれた合成リレー フィクスチャを使用します。ライブ Bluesky リレーへ接続するには

FORTRANSKY_RELAY_FIXTURE=0
を設定してください。

将来の作業としては、DID からハンドルへの解決、手書き JSON パーサーの改善、および TUI の生キー入力を有効化することが挙げられます。軽量でクロスプラットフォームな設計により、重い GUI スタックや大規模言語ランタイムなしで Bluesky への最小限のエントリポイントを開発者とユーザーに提供します。

Text to translate

(incorporating missing details):**

Fortransky is a terminal‑only client for Bluesky’s AT Protocol written primarily in Fortran, with Rust providing a native decoder for the firehose stream.
The UI lives in

src/
and talks to a C libcurl bridge (
cshim/
) via Fortran’s
iso_c_binding
. That bridge forwards HTTP requests to a static Rust library that translates raw envelopes (CAR → DAG‑CBOR → NormalizedEvent) into JSON Lines, which the Fortran TUI renders.

Authentication uses an app password; session tokens are stored in

~/.fortransky/session.json
.
The project relies on standard Ubuntu/Debian packages (
gfortran
,
cmake
,
pkg-config
,
libcurl4-openssl-dev
) and Rust 1.70+. Optional Python dependencies (
cbor2
,
websockets
) are available for extended functionality.

Build proceeds in two stages: first compile the Rust bridge with

cargo build --release
; thereafter CMake links everything, skipping the Rust step if unchanged.

Key TUI commands are:

  • l
    – login/fetch timeline
  • a <handle>
    – author feed
  • s <query>
    – search posts
  • p <handle>
    – profile view
  • n
    – notifications
  • c
    – compose post
  • t <uri/url>
    – open thread
  • j
    – stream tail (jetstream)
  • m
    – toggle stream mode (
    relay‑raw
    )
  • q
    – quit

For streaming, two modes are available: jetstream (WebSocket JSON) and relay‑raw (binary CBOR). The Rust decoder (

firehose_bridge_cli
) is preferred; if unavailable the Python
cbor2
fallback can be used.

By default Fortransky uses a bundled synthetic relay fixture for testing; set

FORTRANSKY_RELAY_FIXTURE=0
to connect to the live Bluesky relay.

Future work includes adding DID‑to‑handle resolution, refining the hand‑rolled JSON parser, and enabling raw keypress input in the TUI. The lightweight, cross‑platform design offers developers and users a minimal entry point into Bluesky without heavy GUI stacks or large language runtimes.

本文

Fortran ベースの Bluesky/AT プロトコルクライアント

Fortran で書かれたターミナル専用の Bluesky/AT プロトコルクライアント。リレ―原データストリームパスには Rust 製ネイティブ Firehose デコーダーを使用します。


アーキテクチャ

src/                     ← Fortran TUI
└─ cshim/                ← C ライブラリ curl ブリッジ
└─ src/atproto/firehose_bridge.f90
   └─ bridge/firehose-bridge/
        ├─ Rust staticlib  (bridge/firehose-bridge/)
        │    envelope → CAR → DAG‑CBOR → NormalizedEvent → JSONL
        └─ firehose_bridge_cli binary   ← relay_raw_tail.py が利用

セッション状態は

~/.fortransky/session.json
に保存されます。
メインの Bluesky パスワードではなく、アプリパスワードを使用してください。


ビルド依存関係

カテゴリパッケージ / コマンド
システム (Ubuntu/Debian)
sudo apt install -y gfortran cmake pkg-config libcurl4-openssl-dev
Rust ツールチェーン
rustc >= 1.70
が必要です。未インストールの場合は rustup で導入:
`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs
Python デペンデンシー (relay‑raw ストリームパスのみ)ヘルパースクリプト
relay_raw_tail.py
は TUI からサブプロセスとして起動され、
cbor2
websockets
をインポートします。
オプション A – システム全体 (最も簡単):
sudo pip install cbor2 websockets --break-system-packages

オプション B – venv:
python3 -m venv .venv

source .venv/bin/activate

pip install cbor2 websockets

Fortransky を venv がアクティブな状態で起動するか、以下を設定してください:
export FORTRANSKY_RELAY_PYTHON=$PWD/.venv/bin/python3
(この環境変数のサポートは計画中)。

ビルド手順

# まず Rust ブリッジをビルド(cargo build --release)し、その後 CMake を実行。
# Rust ステップは変更が無ければ次回以降スキップされます。

ログイン方法

Fortransky 用に 専用 に作成したアプリパスワードを使用してください。

ホームプロンプトで:

l
Identifier: yourhandle.bsky.social
Password/app password: <app password>

セッションは

~/.fortransky/session.json
に保存され、次回起動時に復元します。
ログアウトするには
x
を入力してください。


TUI コマンド

ホームビュー

コマンド動作
l
ログイン + タイムライン取得
x
ログアウト + 保存セッション消去
a <handle>
投稿者フィード表示
s <query>
投稿検索
p <handle>
プロフィールビュー
n
通知
c
文章作成
t <uri/url>
スレッドを開く
j
ストリームタイル
m
ストリームモード切替 (jetstream / relay‑raw)
q
終了

投稿一覧ビュー

コマンド動作
j / k
選択を移動
n / p
次/前ページ
o
選択スレッドを開く
r
選択投稿に返信
l
選択投稿にいいね
R
選択投稿をリポスト
q
投稿の引用
P
著者プロフィールを開く
/query
検索
b
ホームへ戻る

通知ビュー

コマンド動作
j / k
選択を移動
n / p
次/前ページ
o
スレッドを開く
r
返信
b
戻る

ストリームビュー

コマンド動作
j
更新
b
戻る

ストリームモード

  • jetstream – Bluesky の Jetstream WebSocket サービスに接続。帯域が低く、JSON がネイティブで扱いやすい。
  • relay‑raw – 原生 AT プロトコルリレ― (
    com.atproto.sync.subscribeRepos
    ) に接続。フレームは WebSocket 上のバイナリ CBOR。Rust 製ネイティブデコーダー
    firehose_bridge_cli
    が envelope → CAR → DAG‑CBOR → 正規化 JSON を処理します。Python の
    cbor2
    フォールバックはフェスチャーモード用です。

ネイティブデコーダ検出順序

  1. 環境変数
    FORTRANSKY_FIREHOSE_DECODER
  2. bridge/firehose-bridge/target/release/firehose_bridge_cli
  3. bridge/firehose-bridge/target/debug/firehose_bridge_cli
  4. PATH 上の
    firehose_bridge_cli

リレ―フェスチャー (オフラインテスト)

デフォルトでは relay‑raw はバンドルされた合成フェスチャーを使用します。
ライブリレーを利用するには:

FORTRANSKY_RELAY_FIXTURE=0 ./build/fortransky

簡易オフラインデモ:

printf 'b\nm\nj\nb\nq\n' | ./build/fortransky

既知の問題 / 備考

  • JSON パーサは手作りで軽量 – 完全なスキーマ駆動型パーサではありません。
  • relay‑raw は
    app.bsky.feed.post
    の create 操作のみを公開;他コレクションは正規化段階でフィルタリングされます。
  • ストリームビューでは生の DID が表示され、ハンドル解決 (DID → ハンドル) はまだ実装されていません。
  • TUI は行ベース(コマンド入力+Enter)であり、ラストキー入力は扱いません。
  • m
    j
    はホームビューのストリーム制御用 – 投稿一覧にいる場合はまずホームへ戻ってください。

バージョン履歴

  • v1.1 – ネイティブ Rust Firehose デコーダ統合。
    relay_raw_tail.py
    が見つかったら
    firehose_bridge_cli
    を優先使用。CMakeLists で Fortran のリンクに Rust staticlib を組み込み。JWT フィールド長を 1024 に増やし、完全 AT プロトコルトークンに対応。JSON キー スキャナの深度追跡修正(トップレベル feed 配列前にネストされたキーとマッチしていた問題)。
  • v1.0 – いいね・リポスト・引用投稿操作。URL ファセットエミッション。
  • v0.9 – タイプ付きデコード層 (
    decode.f90
    )。TUI の投稿意味合いを豊富化。
  • v0.7 – C libcurl ブリッジでシェル curl を置換。セッション保存サポート。ストリームモード切替 (jetstream / relay‑raw)。

同じ日のほかのニュース

一覧に戻る →

2026/03/21 6:03

**OpenCode – オープンソースAI コーディング エージェント**

## Japanese Translation: **改善された要約** OpenCodeは、プライバシーを最優先にしつつオープンソースで開発されたAIコーディングエージェントです。ターミナル、IDE、またはデスクトップアプリとしてスムーズに動作します。使用されるLLMに応じて自動的に適切なLanguage Server Protocol(LSP)をロードし、同一プロジェクト上で複数のエージェントを同時に起動できるようにします。セッションは簡単なリンクで共有でき、参照やデバッグに利用できます。OpenCodeはGitHub Copilot、ChatGPT Plus/Pro、およびModels.devを通じて75社以上の大規模言語モデルプロバイダー(ローカルモデルも含む)と統合しており、さらに**Zen**というコーディングエージェント向けに特別にテスト・ベンチマークされたAIモデルのキュレートセットを提供します。プロジェクトは120,000件以上のGitHubスター、800人の貢献者、10,000件以上のコミット数を誇り、毎月5百万社以上の開発者に利用されています。またコードやコンテキストデータを保存しないため、プライバシーセンシティブな環境にも適しています。新リリースや機能拡張について情報を受け取りたいユーザーはウェイトリストに登録できます。

2026/03/21 4:16

**Windows 品質への我々の約束**

## Japanese Translation: Microsoft は、ユーザーから報告されたタスクバーの混乱したオプション、Copilot エントリポイントのごちゃごちゃ、侵入的なアップデート、遅いファイルエクスプローラー、騒がしいウィジェット、分断された Insider Program などの課題に対処するため、Windows 11 のユーザビリティ・パフォーマンス・信頼性の一連の更新を展開しています。 主な変更点は次のとおりです: - **タスクバー**: 新しい再配置オプション(上部、左側、右側)とより小さなタスクバーで、パーソナライズ性が向上します。 - **Copilot**: スニッピングツール、フォト、ウィジェット、メモ帳のエントリポイントを削減し、有用な体験に焦点を当てることでアクセスを簡素化しました。 - **Windows Update**: コントロールが拡張されました—設定中にアップデートをスキップでき、長時間停止、再起動またはシャットダウン時にインストールせずに済み、自動再起動/通知の数が減ります。 - **ファイルエクスプローラー**: 起動速度向上、ちらつき軽減、ナビゲーション滑らか化、ファイルタスクパフォーマンスの信頼性向上です。 - **ウィジェット**: デフォルトが静かになり、外観コントロールが改善され、Discover フィードのパーソナライズが向上しました。 - **Insider Program**: チャネル定義を明確化し、機能アクセスを容易にし、ビルド品質を高め、フィードバック可視性とエンゲージメント機会を増やすことで簡素化されました。 - **Feedback Hub**: 提出速度の向上とコミュニティインタラクションのために大幅な再設計が行われました。 - **システムパフォーマンス目標**: Windows のリソース使用量を低減し、メモリフットプリントを削減、アプリケーション、ファイルエクスプローラー、WSL 全体で応答性を改善します。 - **信頼性イニシアチブ**: OSクラッシュ、ドライバー品質、Bluetooth/USB の安定性、カメラ/オーディオ接続、デバイス再起動の一貫性、および月1 回の単一再起動と一時停止オプションを対象にします。 - **Windows Hello**: 顔認証の信頼性向上、指紋サインイン速度の高速化、ROG Xbox Ally X のようなゲーム用ハンドヘルドデバイスでの PIN 設定のセキュリティ強化です。 - **Craft 改善**: スタート/タスクバーの信頼性向上、パーソナライズ拡張、デバイス設定を静かに、ウィジェットの賢さ向上、通知削減、タスクバー・スタート・ファイルエクスプローラー・設定間で一貫した検索機能。 Microsoft は実際のハードウェア上で検証/テストを深化させ、デフォルトのセキュリティ設定を引き上げ、Insider のフィードバックに依存して将来の Windows 11 リリースを導く予定です。その結果として、ユーザーと開発者双方に対し、より柔軟なインターフェイス、スムーズな更新、静かな通知、そして高い信頼性が実現します。

2026/03/21 6:42

**タイトル:** GLP‑1薬を中止すると心筋梗塞と脳卒中のリスクが急増 **主なポイント:** - GLP‑1受容体作動薬(GLP‑1 RA)をやめると、心筋梗塞・脳卒中のリスクが高まります。 - これらの薬を中止した患者は、継続している患者に比べて心血管イベントの発生率が増加する可能性があります。 - 本研究は、GLP‑1 RAを服用している患者の心血管安全性には、投与継続(薬剤遵守)が重要であることを示唆しています。

## Japanese Translation: (以下の文は、元の意味を正確に保持し、構造や専門用語もそのまま維持した日本語訳です。) **改訂された要約:** 研究によると、短期間であってもグルカゴン様ペプチド‑1(GLP‑1)薬を中断すると、米国退役軍人の2型糖尿病患者において心臓発作や脳卒中のリスクが増加し、継続使用ではそれらのリスクが低減することが示されました。研究者は33万3000人以上の退役軍人を3年間追跡調査しました:GLP‑1治療を2年間停止したグループは心血管リスクが22%増加し、決して中断しなかった患者は18%リスク減少、再開のみで12%の利益にとどまることが明らかになりました。治療が途切れた際には体重・炎症マーカー・血圧・コレステロールが悪化し、「代謝的ウィップラッシュ」と呼ばれる効果が観察されました。GLP‑1薬はもともと糖尿病のために開発されましたが、現在では腎臓・肝臓・心血管系・関節炎・認知症・依存症などのアウトカムにも有益です。ただし、新規使用者のおよそ半数が早期に中断しています。著者らは、服薬遵守と効果を別々に追跡すべきだと主張し、医療システムには長期的な継続利用を支援するプログラムの構築を求めています。この研究は *BMJ Medicine* にZiyad Al‑Aly(ワシントン大学)によって発表され、心血管保護のためにGLP‑1療法を持続させる重要性を強調しています。

**Show HN:** Fortranで書かれたターミナル専用のBluesky/AT Protoクライアントを作成しました。 | そっか~ニュース