5.1さらうどん

@giginetの技術ブログ。ゲーム開発、iOS開発、その他いろいろ

AI Agentからxcodeprojを操作するxcodeproj-mcp-serverを作った - SwiftSDKでのMCPサーバー開発入門

最近AIの話ばかりだけど・・・・・・。 5月末ぐらいから、Claude Codeを使ったiOSアプリ開発を試してる。Claude Maxも加入し、あまりの完成度の高さに日々めっちゃ驚いている。 ほとんどのユースケースはClaude CodeをXcodeBuildMCPに接続することで問題なく開発で…

swift-play-experimentalで遊ぼう

swift-play-experimental 数日前にAppleからswift-play-experimentalというパッケージが公開された。 これは、ライブラリ内の実装を簡易的に実行するための#Playgroundマクロを提供するパッケージのようだ。 func fibonacci(_ n: Int) -> Int { if n <= 1 { …

Swift TestingのTest Scoping Traitsで前後処理を実装する

Test Scoping Traits Swift 6.1 (Xcode 16.3)からTest Scoping Traitsという機能が追加された。使うときに参考にできる資料がまだ少なかったので書き留めておく。 従来のSwift Testingの利用におけるペインポイントとして、XCTestでは記述しやすかった前後処…

はてなブログのエントリをCursorで執筆する

はてなブログをAI補完で書きたい! ここ1〜2年、ブログ執筆の気概が出てきている。ちゃんとブログを書くために、はてなブログのProプランにも契約したし、ある程度継続できている。 とはいえ、はてなブログも老舗になってきており、Webエディタを使い続ける…

分離式キーボードをErgodox EZからDygma Raise 2に乗り換えた

Ergodox EZ Ergodox EZというキーボードを7年ぐらい使っている。自宅用と職場用で2台所持しており、長年使っていたのでもはや分離式キーボードしかまともに使えない体になっていた。 歴戦を経て年季が入っている Ergodox EZは概ね最高なのだが、以下のポイン…

Swift Evolutionについて質問応答するModel Context Protocolサーバーを立てた

最近、Model Context Protocol(MCP)驚き屋が世を騒がせている。興味のある技術なので、実際に何かサーバーを立ててみることにした。 いつも技術検証をする際のネタに最適なのが、Swift Evolutionを使うこと。ある程度正規化された自然言語の技術文書が大量に…

AIコーディングツールのClineでGitHub Actionを書かせてみた

前回の記事 GitHub ActionをAIに書かせる 前回紹介したgithub-action-artifactbundleだが、コードのほとんどをClineを用いてAIに書かせている。この記事ではその過程について紹介したい。Actionの詳細については前回の記事をどうぞ。ちなみにこの記事は人間…

Swift PackageのArtifact Bundleを簡単に生成するGitHub ActionをAIで作った

github-action-artifactbundle というGitHub Actionを作った。これでAppleの規定するバイナリ配布形式、Artifact Bundleに添ったアーカイブを簡単に作成できる。 Artifact Bundleは、本来、Package Pluginなどの仕組みでのexecutableの配布を想定したフォー…

macOSのβアップデートに失敗して吹き飛んだ話

まとめ メインマシンをmacOS 15.3 Betaに軽い気持ちで上げたら文鎮化 データは全て吹き飛んだが、Time Machineがあって事なきを得た。マジでバックアップとろう Apple Careも入ろう macOSのβアップデートに失敗して吹き飛んだ話 メインマシンにmacOSのβ版を…

iOSでLlama.cppを使ったローカルLLMアプリの構築2024

時代はローカルLLMということで、ちょっと興味があったので、iOS/iPadOS上でローカルLLMを動かしてみた。 MiniAIChat 習作として、ローカルLLMを使った質問応答型のmacOSアプリを作った。ネイティブで書かれており、Apple Platformなら大体動く(Mac/iPhone/i…

実録・モバイルアプリ領域の技術顧問は何をやっているか

これまで僕は何社かのiOS領域での技術顧問を引き受けてきた。技術顧問というと、Xで怪しいアカウントが「50社歴任!週末副業で楽に稼げる!」などと喧伝していることがあったり、いかがわしいイメージを持たれている方もいるかもしれない。 過去4年以上に渡…

『エンジニアチームの生産性の高め方』という書籍で開発者生産性について執筆しました

この度、『エンジニアチームの生産性の高め方』(技術評論社)という書籍の共著に携わり、無事に先日発売されました なんと、技術評論社の『エンジニアチームの生産性の高め方』という書籍を一部執筆しました!技術基盤チームのキャリアや、どうやって課題…

韓国のAppleカンファレンス、KWDC24でSwiftのCLIツール開発について話してきた

めっちゃ緊張した オーガナイザーの @unnnyong の紹介で韓国のAppleカンファレンス KWDC24にプロポーザルを出し、採択されたので参加してきた I talked about how to develop tools in Swift at #KWDC24 I was very nervous. #KWDC pic.twitter.com/lmWHR3w…

XCTestCaseをswift-testingに自動変換するswift-testing-revolutionaryを作った

swift-testing-revolutionary ほぼタイトル通りですが、先日XCTestで書かれたテストケースを、swift-testingのテストケースに自動変換する、swift-testing-revolutionaryというユーティリティを公開しました。Xだと流れてしまうため、せっかくなのでブログ記…

WWDC24に参加してきた

WWDC24に行った 今年は運良く当選したので、WWDC24に参加してきた。17, 19以来5年ぶり3回目の出場(23も会場には入れなかったが、現地にはいた) ✌️✌️ pic.twitter.com/JxDF3b0Jmp— giginet (@giginet) June 9, 2024 著者近影 23年は仕事で現地まで行ったが…

Swift MacroをSwift PackageなしでXcodeで扱う

Swift MacroってXcodeから使えないの? Swift 5.9からSwift Macroが実用段階になったが、WWDCの動画でも、公式ドキュメントでもSwift Packageから作成することが前提となっている。 targets: [ // Macro implementation that performs the source transforma…

ポケモンガチ対戦用パーティー管理アプリ『PokeBox』をリリースしました

まもなく『ポケットモンスター スカーレット・バイオレット』が発売しますが、先日、iPhone/iPad/Mac向けのポケモンパーティー構築管理アプリ、『PokeBox』をリリースしました。 ポケモンパーティー構築アプリの「PokeBox」をバージョン1.1にアップデートし…

クックパッド株式会社を退職して、LINE株式会社に入社しました

こんにちは、@giginetです。 先日、新卒以来7年3ヶ月勤続したクックパッド株式会社を退職しました。 本日、クックパッド株式会社の最終出社でした!新卒で入社してから7年3カ月お世話になりました。最高の職場だった! pic.twitter.com/VJLF3yh9UB— giginet…

try!Swift 2017でApple Watch上でファミコンエミュレータを動かす話をしました

try!Swift活動報告 try!Swiftお疲れ様でした。いろいろあったのでざっくり報告します。 トーク『&⌚️』 以前お伝えしたように『&⌚️』というタイトルでLTをしました。 内容は、watchOS上でファミコンエミュレータを動作させるという内容です。 & ⌚️ (LT) | tr…

try!Swift Tokyo 2017で『👾&⌚️』というトークをします

TOKYO - try! Swift 3/2, 3/3に行われるtry!Swiftカンファレンスで『&⌚️』(GAME AND WATCH)というタイトルでLTをさせていただきます!!! 3/3 18:00からの予定です。トリの1つ前です。 内容はApple Watch + SpriteKitについてです。 僕の仕事は愚か、おそら…

2016年にやったことを振り返ってみた

振り返る なんか流行ってるっぽいので今年の活動をまとめた 出したアプリ ふっかつのじゅもん(3月) 〜ふっかつのじゅもん〜gigi-net.netゲーム無料 今年のGGJ(48時間でゲームを作るイベント)で作ったアプリを手直ししてほぼそのまま出した。 プレイ時間は2…

あのゲームっぽく飯画像を撮るアプリ、『Camp Camera』をリリースしました

Camp Camera この度、あのゲームっぽくお飯の画像を撮るiOSアプリ『Camp Camera』を公開しました。 Camp Cameragigi-net.netFood & DrinkFree 思いついてシュッと1週間ぐらいで作った。 右下にウィンドウが付くほか、ゲーム画面っぽく見えるように良い感じに…

XcodeのPlaygroundを簡単に管理できるツール「Toybox」を作りました

Toybox このたび、Toyboxというコマンドラインユーティリティを作ったので紹介します。 github.com 普段、Swiftのコードを書いていて、 思いついた実装を試してみたい コードレビューで別の書き方を提案したときに、ちゃんと動くか動作確認したい バグっぽい…

バースデープレゼント2016

こんにちは、giginetです。 今年の誕生日はいろいろな方からいろいろいただいたのでお礼を兼ねてまとめます(到着順)。皆様ありがとうございました。 なお、プレゼントはいつでも大歓迎です しんでしまうとはなにごとだ 誕生日プレゼント第一弾が届いた。誠…

PyConJP 2016で『はじめて作るDjangoプラグイン』というトークをしました #pyconjp

こんにちは。@giginetです。 このたび、9/21, 9/22に開催されたPyCon JP 2016において、『はじめて作るDjangoプラグイン』という発表をさせていただきました。 詳細は以下。 giginet.hateblo.jp 内容としては、上記の記事で紹介しているようなプラグインの開…

PyCon 2016でPythonのライブラリ開発についてトークします

pycon.jp こんにちは、@giginetです。 9/21, 9/22に行われるPyCon 2016で『はじめて作るDjangoプラグイン』というタイトルでトークをすることになりました PyConには毎年参加していて、今年で4年目。 そろそろCFPでも出してみるか〜と思って、話せそうな内…

UITextFieldに簡単にカスタムキーボード貼るライブラリ作った+iOS UIライブラリのCI改善の話

最近、Swiftでライブラリを作るのが趣味なgiginetです。 最近は仕事でもSwiftを使う機会が多く、金曜の夜に仕事でアプリを作っていたら、突如良い感じの実装になってきたので、週末のやっていきでライブラリが誕生した。 github.com CustomKeyboardTextField…

XIBを読み込んで良い感じにViewを生成できるライブラリ作った

Macアプリを作ってて、XIBからNSViewを生成したいだけだったのになかなか面倒だったので簡単にできる奴を作った。 似たようなものはありそうなのに、探してみたら意外とちゃんと使える奴が少なかった。 github.com 自分で定義したCustomViewクラスとCustomVi…

SwiftでJSONのテストを良い感じにするJSONMatcher作った

この度、JSONMatcherというSwift向けのテストライブラリを開発しました。 github.com これは何? SwiftでJSONのオブジェクトや文字列を検査するマッチャーです。 JSONオブジェクトのテストがこんな感じで簡単に書けます。 import XCTest import Nimble impor…

pecoでrbenvとかpyenvを簡単に切り替える奴作った

peco-anyenv pyenvやrbenvのようないわゆるanyenv系のツールが大変便利で常用しているのですが、インタプリタの数が増えてくると切り替えるのが面倒になってくる。 $ rbenv global 2.3.0 rbenv: version `2.3.0' not installed このようにいちいちバージョン…