<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Swift on hdknr blog</title><link>https://hdknr.github.io/blogs/tags/swift/</link><description>Recent content in Swift on hdknr blog</description><generator>Hugo -- 0.157.0</generator><language>ja</language><lastBuildDate>Sun, 22 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://hdknr.github.io/blogs/tags/swift/index.xml" rel="self" type="application/rss+xml"/><item><title>iOS開発が完全自動化される時代が来た：オープンソースmacOSアプリ「Blitz」とは</title><link>https://hdknr.github.io/blogs/posts/2026/03/ios%E9%96%8B%E7%99%BA%E3%81%8C%E5%AE%8C%E5%85%A8%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%95%E3%82%8C%E3%82%8B%E6%99%82%E4%BB%A3%E3%81%8C%E6%9D%A5%E3%81%9F%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9macos%E3%82%A2%E3%83%97%E3%83%AAblitz%E3%81%A8%E3%81%AF/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/03/ios%E9%96%8B%E7%99%BA%E3%81%8C%E5%AE%8C%E5%85%A8%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%95%E3%82%8C%E3%82%8B%E6%99%82%E4%BB%A3%E3%81%8C%E6%9D%A5%E3%81%9F%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9macos%E3%82%A2%E3%83%97%E3%83%AAblitz%E3%81%A8%E3%81%AF/</guid><description>&lt;p&gt;AI エージェントが iOS アプリ開発を丸ごと自動化するオープンソースツール「Blitz」が公開された。ビルドからテスト、App Store 提出まで、これまで手作業だった工程を AI に任せられる時代が到来しつつある。&lt;/p&gt;
&lt;h2 id="blitz-とは"&gt;Blitz とは&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://blitz.dev/"&gt;Blitz&lt;/a&gt; は、AI エージェントに iOS 開発ライフサイクルの完全な制御を与えるネイティブ macOS アプリケーション。シミュレーター/iPhone の管理、データベース設定、App Store Connect への提出まで、開発に必要な一連の操作を AI エージェントが実行できる。&lt;/p&gt;
&lt;p&gt;GitHub リポジトリ: &lt;a href="https://github.com/blitzdotdev/blitz-mac"&gt;blitzdotdev/blitz-mac&lt;/a&gt;（Apache-2.0 ライセンス）&lt;/p&gt;
&lt;h2 id="主な特徴"&gt;主な特徴&lt;/h2&gt;
&lt;h3 id="mcp-サーバーによる-ai-連携"&gt;MCP サーバーによる AI 連携&lt;/h3&gt;
&lt;p&gt;Blitz には MCP（Model Context Protocol）サーバーが組み込まれており、Claude Code をはじめとする MCP クライアントからアプリのビルド、テスト、App Store への提出が可能になる。&lt;/p&gt;
&lt;h3 id="自動化される範囲"&gt;自動化される範囲&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;コード署名とビルド&lt;/strong&gt;: Xcode プロジェクトのビルドを AI が実行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;テスト実行&lt;/strong&gt;: シミュレーターや実機でのテストを自動化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Store メタデータ&lt;/strong&gt;: アプリの説明やスクリーンショットの管理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Store 提出&lt;/strong&gt;: App Store Connect API を通じた申請処理&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="iphone-mcp"&gt;iPhone MCP&lt;/h3&gt;
&lt;p&gt;関連プロジェクトとして &lt;a href="https://github.com/blitzdotdev/iPhone-mcp"&gt;iPhone-mcp&lt;/a&gt; も公開されている。AI が実際の iPhone を操作してアプリをテストし、バグを発見できる仕組みだ。&lt;/p&gt;
&lt;h2 id="セキュリティとプライバシー"&gt;セキュリティとプライバシー&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;MCP サーバーは &lt;code&gt;127.0.0.1&lt;/code&gt; にのみバインドされ、外部ネットワークには公開されない&lt;/li&gt;
&lt;li&gt;連絡先、写真、位置情報などの個人データにはアクセスしない&lt;/li&gt;
&lt;li&gt;画面キャプチャは iOS シミュレーターウィンドウに限定&lt;/li&gt;
&lt;li&gt;ネットワーク通信は Apple の App Store Connect API と GitHub のリリース API（更新チェック用）のみ&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="技術スタック"&gt;技術スタック&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SwiftUI で構築されたシングルターゲットアプリ&lt;/li&gt;
&lt;li&gt;Swift Package Manager によるビルド&lt;/li&gt;
&lt;li&gt;CLAUDE.md ファイルによるアーキテクチャドキュメントが整備されている&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ios-開発の未来"&gt;iOS 開発の未来&lt;/h2&gt;
&lt;p&gt;従来の iOS 開発では、Xcode での手動操作が多くの時間を占めていた。Blitz のようなツールが成熟すれば、開発者はアプリのロジックや UX 設計に集中し、ビルド・テスト・提出といった反復的な作業は AI に委ねるワークフローが一般的になるかもしれない。&lt;/p&gt;</description></item><item><title>Swift for Android vs Kotlin Multiplatform — マルチプラットフォーム時代の「Xbox vs PlayStation」</title><link>https://hdknr.github.io/blogs/posts/2026/03/swift-for-android-vs-kotlin-multiplatform-%E3%83%9E%E3%83%AB%E3%83%81%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E6%99%82%E4%BB%A3%E3%81%AExbox-vs-playstation/</link><pubDate>Thu, 05 Mar 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/03/swift-for-android-vs-kotlin-multiplatform-%E3%83%9E%E3%83%AB%E3%83%81%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E6%99%82%E4%BB%A3%E3%81%AExbox-vs-playstation/</guid><description>&lt;h1 id="swift-for-android-vs-kotlin-multiplatform--マルチプラットフォーム時代のxbox-vs-playstation"&gt;Swift for Android vs Kotlin Multiplatform — マルチプラットフォーム時代の「Xbox vs PlayStation」&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/swift-for-android-vs-kotlin-multiplatform-18e94063d524"&gt;Level Up Coding の記事&lt;/a&gt;（Jacob Bartlett 氏）が注目を集めています。同じローラーコースターアプリを Swift for Android と Kotlin Multiplatform（KMP）の両方で構築し、開発体験を徹底比較した実践レポートです。&lt;/p&gt;
&lt;p&gt;著者はこの 2 つの技術を「Xbox vs PlayStation」に例えています。どちらも「ビジネスロジックを共有し、UI はネイティブで書く」という同じアーキテクチャ思想を持ちながら、アプローチが正反対です。iOS 開発者が Android に進出するか、Android 開発者が iOS に進出するか — その出発点の違いが設計全体に反映されています。&lt;/p&gt;
&lt;h2 id="2-つのアプローチ--同じ目的逆の方向"&gt;2 つのアプローチ — 同じ目的、逆の方向&lt;/h2&gt;
&lt;p&gt;両技術の根本的な違いは「どちらのプラットフォームを起点にするか」です。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Swift for Android:
iOS (SwiftUI) ← Swift コア → Android (Jetpack Compose)
&amp;#34;iOS ファーストの開発者が Android に展開&amp;#34;
Kotlin Multiplatform:
Android (Jetpack Compose) ← Kotlin コア → iOS (SwiftUI)
&amp;#34;Android ファーストの開発者が iOS に展開&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;項目&lt;/th&gt;
&lt;th&gt;Swift for Android&lt;/th&gt;
&lt;th&gt;Kotlin Multiplatform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;共有言語&lt;/td&gt;
&lt;td&gt;Swift&lt;/td&gt;
&lt;td&gt;Kotlin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;コンパイル方式&lt;/td&gt;
&lt;td&gt;Swift → ネイティブ .so（JNI 経由）&lt;/td&gt;
&lt;td&gt;Kotlin → ネイティブバイナリ（Obj-C ヘッダ生成）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Android 側 UI&lt;/td&gt;
&lt;td&gt;Jetpack Compose&lt;/td&gt;
&lt;td&gt;Jetpack Compose&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iOS 側 UI&lt;/td&gt;
&lt;td&gt;SwiftUI&lt;/td&gt;
&lt;td&gt;SwiftUI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;境界技術&lt;/td&gt;
&lt;td&gt;JNI + swift-java 自動バインディング&lt;/td&gt;
&lt;td&gt;Kotlin/Native + Obj-C 互換&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;開発開始年&lt;/td&gt;
&lt;td&gt;2025 年（プレビュー）&lt;/td&gt;
&lt;td&gt;2017 年&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="swift-for-android-の仕組み--swift-java-と-jni"&gt;Swift for Android の仕組み — swift-java と JNI&lt;/h2&gt;
&lt;p&gt;Swift for Android は 2025 年 10 月に公式プレビューとしてリリースされました。Swift Android Workgroup が Swift.org の公式ワークグループとして設立され、Android を Swift の正式サポートプラットフォームにする取り組みが進行中です。&lt;/p&gt;</description></item><item><title>cmux — AIコーディングエージェント時代のターミナル紹介</title><link>https://hdknr.github.io/blogs/posts/2026/02/cmux-ai%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E6%99%82%E4%BB%A3%E3%81%AE%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E7%B4%B9%E4%BB%8B/</link><pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/02/cmux-ai%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E6%99%82%E4%BB%A3%E3%81%AE%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E7%B4%B9%E4%BB%8B/</guid><description>&lt;h1 id="cmux--aiコーディングエージェント時代のターミナル"&gt;cmux — AIコーディングエージェント時代のターミナル&lt;/h1&gt;
&lt;h2 id="cmux-とは"&gt;cmux とは？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;cmux&lt;/strong&gt; は、AIコーディングエージェントとの並行作業に最適化された &lt;strong&gt;macOS ネイティブのターミナルアプリ&lt;/strong&gt; です。&lt;a href="https://ghostty.org/"&gt;Ghostty&lt;/a&gt; の描画エンジン (libghostty) をベースに、Swift + AppKit でゼロから構築されています。&lt;/p&gt;
&lt;p&gt;Electron ではなくネイティブ実装なので、起動は高速、メモリ消費も少なく、GPU アクセラレーションによる滑らかな描画が特徴です。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;The terminal built for AI coding agents&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;公式サイト: &lt;a href="https://cmux.dev"&gt;https://cmux.dev&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/manaflow-ai/cmux"&gt;https://github.com/manaflow-ai/cmux&lt;/a&gt; (AGPL-3.0)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="なぜ-cmux-が必要なのか"&gt;なぜ cmux が必要なのか？&lt;/h2&gt;
&lt;p&gt;Claude Code、Codex、Gemini CLI、Aider、Goose など、ターミナルベースの AI エージェントを日常的に使う開発者が増えています。しかし従来のターミナルや tmux では、&lt;strong&gt;複数のエージェントセッションを並行管理&lt;/strong&gt;するのが大変でした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「どのタブでどのエージェントが動いてるか分からない」&lt;/li&gt;
&lt;li&gt;「エージェントが質問してるのに気づかなかった」&lt;/li&gt;
&lt;li&gt;「開発サーバーの確認のためにブラウザとターミナルを行き来するのが面倒」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;cmux はこれらの課題を解決するために設計されています。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="主な機能"&gt;主な機能&lt;/h2&gt;
&lt;h3 id="1-縦タブバーティカルタブでワークスペースを一覧管理"&gt;1. 縦タブ（バーティカルタブ）でワークスペースを一覧管理&lt;/h3&gt;
&lt;p&gt;左サイドバーに縦並びのタブが表示され、各ワークスペースの状態が一目で分かります：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Git ブランチ名&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;リンク済み PR のステータスと番号&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作業ディレクトリ&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;リッスン中のポート番号&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最新の通知テキスト&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Firefox の縦タブに馴染みがある方なら、その便利さは想像がつくはず。タスクごとにワークスペースを作り、&lt;code&gt;Cmd+1〜8&lt;/code&gt; で瞬時に切り替えられます。&lt;/p&gt;
&lt;h3 id="2-通知リング--エージェントが注意を求めたら光る"&gt;2. 通知リング — エージェントが注意を求めたら光る&lt;/h3&gt;
&lt;p&gt;AIエージェントが応答を待っている時、ペインに &lt;strong&gt;青い通知リング&lt;/strong&gt; が表示されます。サイドバーのタブにも未読バッジが付くので、複数エージェントを走らせていても「見逃し」がありません。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Cmd+Shift+U&lt;/code&gt; で最新の未読通知にジャンプ&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Cmd+I&lt;/code&gt; で通知パネルを開いて一覧確認&lt;/li&gt;
&lt;li&gt;OSC 9/99/777 エスケープシーケンスを自動検知&lt;/li&gt;
&lt;li&gt;CLI からも送信可能: &lt;code&gt;cmux notify --title &amp;quot;完了&amp;quot; --body &amp;quot;ビルド成功&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-インアプリブラウザ--ターミナルの横にブラウザを並べる"&gt;3. インアプリブラウザ — ターミナルの横にブラウザを並べる&lt;/h3&gt;
&lt;p&gt;WebKit ベースのブラウザがアプリ内に統合されています。ターミナルペインの隣にブラウザを分割表示して、開発サーバーのプレビューや PR の確認がワンストップで完結します。&lt;/p&gt;</description></item><item><title>Swift Related</title><link>https://hdknr.github.io/blogs/posts/2015/07/swift-related/</link><pubDate>Sun, 05 Jul 2015 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2015/07/swift-related/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.evernote.com/l/AS7cnsYvrohMfKyBL9fLoH7je_DnLL6Ub4g"&gt;xcrun swift on command line generate &lt;unknown&gt;:0: error: could not load shared library&lt;/a&gt; (ライブラリのロード)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.evernote.com/shard/s302/sh/ba163bcb-73c2-4cec-91f8-c8e440bf3210/8df47227fec7d701a48cb3421f38879a"&gt;Regex in Swift&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://timekl.com/blog/2014/06/02/learning-swift-ordered-dictionaries/"&gt;Learning Swift: Ordered Dictionaries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lithium3141/SwiftDataStructures"&gt;lithium3141/SwiftDataStructures&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>