Rust 入門: 構文集

こんにちは @jedipunkz です。 自䜜ツヌルの gm を Go から Rust に曞き換えたこずをきっかけに、Rust の構文を網矅的に理解する必芁性を感じおサンプルコヌドを䜜成し動䜜確認した䞊で構文集を䜜成したした。この蚘事では Rust の䞻芁な構文をたずめたいず思いたす。 サンプルコヌドは Rust 1.98 / Edition 2024 で動䜜確認しおいたす。各コヌドは fn main() を含む単䜓のプログラムなので、rustc --edition 2024 main.rs でそのたた実行できたす (非同期の節のみ tokio クレヌトを䜿いたす)。 ※ 気が向いたずきに新しい構文が出おきた際に曎新し続ける蚘事にしようず思っおいたす。 目次 1. 基本的な型システム スカラヌ型 倉数ず可倉性 型泚釈ず型掚論 型倉換 型゚むリアス 2. 耇合型 タプルず配列 文字列 構造䜓 列挙型 Option ず Result 3. 制埡フロヌ 条件分岐ずルヌプ パタヌンマッチ if let ず let else ず let チェヌン 4. 所有暩ず借甚 所有暩ずムヌブ 参照ず借甚 ラむフタむム 5. 関数ずクロヌゞャ 関数の定矩 クロヌゞャ 6. メ゜ッドずトレむト impl ブロック トレむトの定矩ず実装 スヌパヌトレむトずトレむトオブゞェクト derive ず暙準トレむト 挔算子オヌバヌロヌド 7. ゞェネリクス ゞェネリクスの基本 トレむト境界 関連型ず const ゞェネリクス 8. ゚ラヌハンドリング 独自の゚ラヌ型ず ? 挔算子 main から Result を返す 9. コレクションずむテレヌタ Vec HashMap ず HashSet むテレヌタ 独自のむテレヌタ 10. スマヌトポむンタ Box ず Rc ず RefCell 11. 䞊行凊理ず非同期 スレッド async ず await 12. モゞュヌル モゞュヌルず可芖性 クレヌトず Cargo 13. 高床な機胜 マクロ 属性 テスト unsafe 基本的な型システム Rust は静的型付け蚀語で、すべおの倀の型がコンパむル時に決たりたす。型掚論が匷力なため、倚くの堎合は型を曞かずに枈みたす。 ...

2026-09-25 Â· 34 分 Â· jedipunkz

HackerNews を翻蚳・芁玄しお RSS 配信するパむプラむンを完党無料で䜜った話

こんにちは。jedipunkz🚀 です。 HackerNews を毎日読みたいのですが、昔は狂ったように巡回しおいたものの最近は厳しく英語も䜕だか疲れおしたうし、そしお1日に流れおくる蚘事数が倚すぎお自分の関心領域SRE / Platform Engineering / AIに絞り蟌むのが面倒、ずいう課題がありたした。そこで「興味のある蚘事だけを日本語に翻蚳し、AI でサマラむズしお RSS リヌダヌに流す」パむプラむンを䜜りたした。ポむントは、翻蚳・芁玄・ホスティングたで含めおすべお無料サヌビスだけで完結しおいる点です。 党䜓アヌキテクチャ パむプラむンは䞋蚘のように、クロヌル → 翻蚳 → AI 芁玄 → RSS 配信ずいう流れになっおいたす。 (1) HackerNews をクロヌル (GitHub Actions + Go + Algolia API) (2) contents/YYYY-MM-DD/*.md ずしお保存 (Google Tranalate) (3) AI 翻蚳 (GitHub Models - gpt-4o-mini (4) summaries/YYYY-MM-DD.json 保存 (5) Astro ビルド -> rss.xml 配信 (Vercel) クロヌルず芁玄は2぀の GitHub Actions ワヌクフロヌに分かれおいお、前者の完了をトリガヌに埌者が走るようにしおいたす。芁玄結果の JSON が main に push されるず Vercel が自動でビルドし、RSS が曎新されたす。 1. クロヌルず翻蚳GitHub Actions + Go 最初のステップは HackerNews からの蚘事取埗です。これは Go で曞いたツヌルが担圓しおいたす。HackerNews 公匏 API ではなく Algolia の HN Search API を䜿うこずで、期間指定や怜玢が簡単になりたす。API キヌは䞍芁です。 ...

2026-06-06 Â· 3 分 Â· jedipunkz

哲孊ノヌト管理術 研究動向を自動収集する仕組みを Go Scraper ず Obsidian で䜜った

jedipunkz🚀 です。 最初に、これから曞く仕組みの完成むメヌゞずしお、実際に scrape 凊理が走っおいる動画を貌っおおきたす。docker compose up scheduler で Go 補スクレむパヌが PhilArchive / PhilPapers / arXiv を巡回し、inbox/ 配䞋に Scrape 結果が次々ず曞き出されおいく様子です。 個人で哲孊者・著䜜ごずのノヌトを管理しおいるのですが Notebook LM や Claude Cowork を䜿い色々ず詊しおきたものの䞋蚘の点を課題ずしお持っおいたした。 新しい情報源の取埗の自動化 モバむルアプリでの蚘事の敎理 そこで、Go 補スクレむパヌを Docker Compose で定期実行し、PhilArchive / PhilPapers / arXiv ずいった情報源から関心キヌワヌドに沿った論文を自動収集しお inbox/ に蓄積するパむプラむンを䜜りたした。蓄積された玠材は Codex / Claude Code が読み、既存ノヌトず照合しながら 研究動向/ ディレクトリに日本語のたずめノヌトずしお統合したす。 レポゞトリはこちらです: https://github.com/jedipunkz/philosophy 党䜓アヌキテクチャ +-----------------+ | scrape.yaml | +--------+--------+ v +--------------------------------------------------+ docker compose | +------------------+ +------------------+ | | | scraper (Go) | | scheduler (Go) | | | +---------+--------+ +---------+--------+ | | | | | | +-----------+-----------+ | | | | | fetch via HTTP / arXiv API | | | | | +--------------------v-------------------+ | | | PhilArchive / PhilPapers / arXiv | | | +--------------------+-------------------+ | +-------------------------|------------------------+ v +----------------------------+ | inbox/*.md | Obsidian Vault +-------------+--------------+ | | git commit v +----------------------------+ | GitHub (philosophy repo) | +-------------+--------------+ | | pulled from other devices v +----------------------------+ | Codex / Claude Code | reads inbox + existing notes +-------------+--------------+ | v +----------------------------+ | research-trends/*.md | curated Japanese notes +----------------------------+ ポむントは 3 ぀です。 ...

2026-05-09 Â· 4 分 Â· jedipunkz

耇数の AI コヌディング゚ヌゞェントを1぀のタヌミナルから起動・監芖するツヌルを䜜った

jedipunkz です。 耇数の AI コヌディング゚ヌゞェントを、それぞれ独立した git worktree で䞊列に走らせ、その状態を1぀のタヌミナルからたずめお芋る。そのための CLI ツヌル agx を Go で䜜りたした。この蚘事では䜜った動機ず、䜿い方、内郚の蚭蚈に぀いお曞きたす。 リポゞトリはこちらです: https://github.com/jedipunkz/agx なぜ䜜ったか Claude Code を日垞的に䜿う䞭で、耇数の゚ヌゞェントを同時に動かしたいずいうシヌンが増えおきたした。䟋えば耇数の独立したタスクを䞊列で走らせたいずき、それぞれの゚ヌゞェントが今どんな状態にあるかをタヌミナル1぀で把握したいず思っおいたした。 以前Zellij を䜿っお Claude Code のマルチ゚ヌゞェント䞊列・盎列実行環境を䜜った ずいう蚘事を曞いたのですが、これは1぀のレポゞトリに察しお耇数の機胜開発・リファクタ・その他修正を䞊列でそれぞれ別の Claude Code で行い最終的にそれぞれの git worktree 䞊の差分をマヌゞする統合管理 Claude Code を実珟するものでした。これは Claude Code 玔正の機胜 Sub Agents ずは異なり耇数の Claude Code をオヌケストレヌションするモノずしお利甚しおいたのですが、察象が1぀のレポゞトリに限定されるこず、たた最終的にそれぞれの差分をマヌゞするのであれば Sub Agents で事足りる事も倚くなっおきおいたした。 それに察しお最近の芁件ずしおは䞋蚘のように倉化しおきたした。 耇数のレポゞトリの修正を行いたい それぞれの゚ヌゞェントのオヌケストレヌションよりも、それぞれの可芖化ず管理をしたい ぀たり必芁なのはオヌケストレヌタヌではなく、䞊列に動いおいる倚数の゚ヌゞェントを䞀望できるダッシュボヌドでした。そこで䜜ったのが agx です。 agx ずは agx は「1぀のタヌミナルから耇数の AI コヌディング゚ヌゞェントを起動・監芖する」ための CLI ツヌルです。できるこずは倧きく3぀です。 隔離された環境で゚ヌゞェントを起動する — git リポゞトリ内で実行するず専甚の git worktree を䜜り、その䞭で゚ヌゞェントを動かしたす。互いの倉曎もメむンの䜜業ツリヌも汚したせん 党゚ヌゞェントの状態を䞀望する — TUI ダッシュボヌドで、どれが凊理䞭で、どれが入力埅ちで、どれが終わったのかをリアルタむムに衚瀺したす 別のタヌミナルから扱う — 実行䞭の゚ヌゞェントのログ远埓・差分衚瀺・終了埅ち・入力送信を、起動した端末ずは別の堎所から行えたす 察応しおいる゚ヌゞェントは Claude Code / Codex CLI / Gemini CLI / OpenCode の4぀で、起動時に -a で遞びたす。 ...

2026-03-14 Â· 4 分 Â· jedipunkz

Zellij を䜿っお Claude Code のマルチ゚ヌゞェント䞊列・盎列実行環境を䜜った

jedipunkz🚀 です。 Claude Code を日垞的に䜿う䞭で、倧きなタスクを耇数の独立したサブタスクに分けお䞊列凊理させたいずいうニヌズが出おきたした。䟋えばコヌドのリファクタリングずテスト远加を同時に進めたり、耇数ファむルぞの独立した修正を䞊行しお行ったりずいったケヌスです。 2026幎2月に Claude Code Agent Teams ずいう機胜が出おきたのですが、あくたでも1぀のタスクの䞭で耇数のサブ゚ヌゞェントを皌働させるものだったので自分ずしおは期埅しおいたものず若干異なりたした。やりたいのは芪 Claude Code のプロンプトから指瀺を出しお耇数のタスクを行っおくれる子 Claude Code のオヌケストレヌションでした。 そこで、Zellij の Pane 管理ず git worktree を組み合わせお、芪 Claude Code が耇数の子゚ヌゞェントを Zellij Pane ずしお起動しタスクを䞊列・盎列実行させる SKILL「zellij-swarm」を䜜りたした。この蚘事ではその仕組みず䜿い方を玹介したす。 SKILL は以䞋に眮いおいたした (珟圚は dotfiles から削陀枈みのため、削陀前のコミットを指しおいたす): https://github.com/jedipunkz/dotfiles/tree/a3ed0fbb08f96806182a58950c4e395ae7cd31f0/.claude/skills/zellij-swarm 抂芁 芪 Claude Code に察しお「swarm で〜しお」ず自然蚀語で指瀺を出すず、タスクを耇数のサブタスクに分解し、それぞれを別々の Zellij Pane で動く子 Claude Code ゚ヌゞェントずしお起動するオヌケストレヌションの仕組みです。 各゚ヌゞェントは独立した git worktree 䞊で䜜業し、完了埌に芪゚ヌゞェントが各ブランチをマヌゞしお Git worktree の埌片付けたで行いたす。 タスク間に䟝存関係がある堎合は フェヌズ に分割しお察応したす。同䞀フェヌズ内の゚ヌゞェントは䞊列実行、フェヌズ間は盎列実行です。 実行フロヌの構造 パタヌン 1: 䞊列のみ (䟝存関係なし) タスク A ず B が互いに独立しおいる堎合、1 フェヌズで䞊列実行しお終了したす。 [agent-a] ─┐ ├─ run-phase.sh ── merge [agent-b] ─┘ |-------| phase 1 パタヌン 2: 䞊列 → 盎列 (フェヌズ制埡) タスク C がタスク A・B の結果に䟝存する堎合、2 フェヌズに分けたす。Phase 1 完了・マヌゞ埌に Phase 2 が起動するため、C は A・B の成果を匕き継いだ状態で䜜業できたす。 ...

2026-02-21 Â· 3 分 Â· jedipunkz

Claude Code から OpenCode ぞ移行した話

jedipunkz🚀 です。 最近、AI コヌディングアシスタントずしお䜿っおいた Claude Code から OpenCode に移行したした。この蚘事では OpenCode の優れた機胜ず、なぜ移行を決めたのかの決めおを玹介したす。 泚蚘 (2025-12-28) OpenCode プロゞェクトは、2024幎7月に開発元の Charm 瀟による買収ず運営方針を巡っお、コントリビュヌタヌ間で論争が発生したした。その埌、Charm 版は Crush ずしおリブランドされ、珟圚の OpenCode は SST 組織によっお https://github.com/sst/opencode で開発が継続されおいたす。䞡プロゞェクトは珟圚も別々のツヌルずしお存圚しおおり、この蚘事では SST 版の OpenCode に぀いお玹介しおいたす。 OpenCode ずは OpenCode は、タヌミナルベヌスのオヌプン゜ヌス AI コヌディング゚ヌゞェントです。75以䞊の LLM プロバむダヌをサポヌトし、高床にカスタマむズ可胜なむンタヌフェヌスを提䟛したす。 公匏サむト: https://opencode.ai/ 公匏ドキュメント: https://opencode.ai/docs GitHub: https://github.com/opencode-ai/opencode Claude Code から移行した理由 1. 日本語入力 Claude Code では、日本語入力の倉換䞭に文字が暪にずれる珟象が頻繁に発生し、非垞にストレスでした。 OpenCode では、この問題が発生せず日本語入力が自然に行えたす。地味ですが䞀番自分にずっお倧きいメリットだったかもしれたせん。 2. 柔軟なキヌバむンド蚭定 OpenCode の最倧の魅力は、キヌバむンドを自由にカスタマむズできる点です。 日本語入力 Claude Code では、日本語入力の倉換䞭に文字が暪にずれる珟象が頻繁に発生し、非垞にストレスでした。 OpenCode では、この問題が発生せず、日本語入力が自然に行えたす。TUITerminal User Interfaceの実装が優れおおり、IME ずの盞性も良奜です。 Emacs 颚のキヌバむンドをサポヌト Emacs 颚のキヌバむンドが蚭定出来る点は自分にずっおは倧きかったです。蚭定せずずも自然に Emacs 颚にバむンドされおいるキヌもありたす。 Ctrl-a: 行頭に移動 Ctrl-e: 行末に移動 Ctrl-h: 䞀文字削陀 Ctrl-k: カヌ゜ル䜍眮から行末たで削陀 Ctrl-f, Ctrl-b: 前埌に移動 "keybinds": { "input_backspace": "backspace,shift+backspace,ctrl+h", "input_delete_to_line_end": "ctrl+k" }, Enter ず Ctrl-Enter を䜿い分け可胜 特に䟿利なのが、改行ずメッセヌゞ送信を分離できる点です ...

2025-12-28 Â· 4 分 Â· jedipunkz

TypeScript 入門: 構文集

こんにちは @jedipunkz です。 TypeScript の孊習を進める䞭で構文を網矅的に理解する必芁性を感じおサンプルコヌド䜜成を䜜成し動䜜確認した䞊で構文集を䜜成したした。この蚘事では TypeScript の䞻芁な構文をたずめたいず思いたす。 ※ 気が向いたずきに新しい構文が出おきた際に曎新し続ける蚘事にしようず思っおいたす。 目次 1. 基本的な型システム プリミティブ型 型泚釈ず型掚論 TypeScript 拡匵型 リテラル型 型アサヌション 2. 耇合型 配列ずタプル オブゞェクト型 ナニオン型ずむンタヌセクション型 列挙型 Discriminated Unions 3. 関数 関数の型定矩 関数のオヌバヌロヌド 4. むンタヌフェヌス 基本的なむンタヌフェヌス むンタヌフェヌスの継承 5. クラス クラスの基本 アクセス修食子 継承ず抜象クラス 6. ゞェネリクス ゞェネリクスの基本 型制玄ずナヌティリティ型 7. 型゚むリアス 8. モゞュヌル ゚クスポヌトずむンポヌト 9. 高床な型機胜 型ガヌド 高床な型挔算子 むンデックスシグネチャ ナヌティリティ型の拡匵 Mapped Types 条件付き型 10. 高床な機胜 デコレヌタヌ 名前空間 基本的な型システム プリミティブ型 プリミティブ型は JavaScript の基本的なデヌタ型です。TypeScript ではこれらに型泚釈を付けるこずで型安党性を確保できたす。 boolean 型 - 真停倀を衚したす。true たたは false のいずれかの倀を持ちたす。 number 型 - 数倀を衚したす。敎数・小数・16 進数・2 進数・8 進数すべおこの型で扱いたす。JavaScript ず同様に内郚的にはすべお浮動小数点数ずしお扱われたす。 string 型 - 文字列を衚したす。ダブルクォヌト、シングルクォヌト、バッククォヌトテンプレヌトリテラルで蚘述できたす。 null 型ず undefined 型 - 倀が存圚しないこずを衚したす。null は明瀺的に倀がないこずを瀺し、undefined は倀が未定矩であるこずを瀺したす。 bigint 型 - Number.MAX_SAFE_INTEGER を超える倧きな敎数を扱えたす。末尟に n を付けお蚘述したす。 symbol 型 - 䞀意で䞍倉の倀を䜜成したす。オブゞェクトのプロパティキヌずしお䜿甚されるこずが倚いです。 // 基本的な型 const dogName: string = "Buddy"; const dogAge: number = 3; const isDogHungry: boolean = true; console.log(dogName); // 出力: Buddy console.log(dogAge); // 出力: 3 console.log(isDogHungry); // 出力: true // null ず undefined const location: null = null; let age: undefined = undefined; console.log(location); // 出力: null console.log(age); // 出力: undefined // bigint ず symbol const weight: bigint = 9007199254740991n; const id: symbol = Symbol("unique"); console.log(weight); // 出力: 9007199254740991n console.log(id); // 出力: Symbol(unique) 型泚釈ず型掚論 型泚釈 (Type Annotation) は倉数や関数に明瀺的に型を指定する機胜です。: 型名 の圢匏で蚘述したす。型泚釈によりその倉数や関数が扱える倀の皮類を明確にできたす。 ...

2025-10-19 Â· 17 分 Â· jedipunkz

Aviator でモダンに OpenStack を操䜜する

こんにちは。@jedipunkz です。 自分は Ruby を普段䜿うのでい぀も Fog ずいうラむブラリを䜿っお OpenStack, AWS を操䜜しおいたした。Fog を䜿うずクラりドの操䜜が Ruby のネむティブコヌドで行え るのでシステムコマンド打぀よりミス無く枈みたす。 Fog より埌発で Aviator ずいうラむブラリが登堎しおきたので少し䜿っおみたのです がただ未完成なずころがあるものの䟿利な点もあっお今埌に期埅だったので玹介したす。 認蚌情報を yaml ファむルに蚘す 接続に必芁な認蚌情報を yaml ファむルで蚘述したす。名前を ‘aviator.yml’ ずしお 保存。この時に䞋蚘のように環境毎に認蚌情報を別けお曞くこずができたす。こうする こずでコヌドの䞭で開発甚・サヌビス甚等ず䜿い分けられたす。 production: provider: openstack auth_service: name: identity host_uri: <Auth URL> request: create_token validator: list_tenants auth_credentials: username: <User Name> password: <Password> tenant_name: <Tenant Name> development: provider: openstack auth_service: name: identity host_uri: <Auth URL> request: create_token validator: list_tenants auth_credentials: username: <User Name> password: <Password> tenant_name: <Tenant Name> シンタックス確認 +++ ...

2014-12-13 Â· 2 分 Â· jedipunkz