パンフ記事(4ページ)

Package.swiftから始めるSwift 6対応

417_72ki 417.72KI

Swift 6がリリースされてからまもなく1年が経過しようとしていますが、数々のUpcoming Feature FlagsやStrict Concurrency Checkingによる影響度合いの大きさからSwift 6モードに完全移行が叶ったプロダクトはまだまだ多くないのではないでしょうか。
そしてそれはOSSとして公開されているライブラリも同様です。

一方、Upcoming Feature FlagsやStrict Concurrency Checkingは段階的に適用させることが可能です。
そしてそれらはPackage.swiftの差分として可視化できます。

本稿では、Swift Packageで公開しているライブラリをSwift 6に対応させるためにPackage.swiftを魔改造した過程を紹介します。

3
パンフ記事(4ページ)

実体験から学ぶ! iOSDC Japan パンフレット記事入稿のコツ

kotetu 栗山徹

iOSDC Japan 2020 よりパンフレット記事の公募が始まり、私は 2020 からこれまでほぼ毎年のようにプロポーザルを応募してきました。

過去、 1 度だけ同人誌を作った程度で印刷物の制作経験が少ない状態からのスタートでしたが、原稿制作ガイドに記載されている内容を理解した上で納得いくレイアウトへ落とし込めるようになるまでには様々な試行錯誤がありました。

また、社内メンバーと一緒に応募した際にはそれまで個人で利用していたツールとは別なツールに変更して入稿したこともありました。

本記事では、私のこれまでのパンレット記事に関する経験を元に、パンフレット原稿を入稿するまでの流れやパンフレット原稿執筆の魅力についてご紹介します。

想定読者:

  • パンフレット記事の執筆に興味があるが「入稿」と聞くと身構えて応募をためらってしまう方
  • Adobe InDesign (または Affinity Publisher) を使用して技術記事を書いてみたいとお考えの方
  • Re:VIEW を使って A4 サイズで同人誌を作ってみたいとお考えの方

目次:

  1. iOSDC Japan パンフレット原稿の特徴 (A4 サイズ、解像度など)
  2. Adobe InDesign (または Affinity Publisher) を利用した入稿データ作成
  3. Re:VIEW を利用した入稿データ作成
  4. パンフレット原稿を書いて良かったこと

少しでも多くの方がパンフレット原稿の執筆にチャレンジするきっかけとなれば幸いです。

パンフ記事(4ページ)

Error を NSError に変換する際の振る舞いと、その活用方法

アプリ開発において、エラー管理は重要な課題です。多くの場面で Error や NSError を利用した経験がある方も多いのではないでしょうか。

Error は Swift のエラーオブジェクトで、プロトコルとして定義されています。また NSError は Objective-C のエラーオブジェクトで、クラスとして定義されています。NSError を初期化する際には、domain、code、userInfo の 3 つを指定でき、エラーの種別を識別したり、エラーに関する付加情報を追加したりすることが可能です。Error を NSError にキャストしたい場合には、as NSError を用いることで、安全にキャストすることができます。それでは、キャストした際に、Error の情報が NSError の domain、code、userInfo にどのように引き継がれるのでしょうか。例えば、Error が Struct で実装されている場合、NSError に変換した際の code は 1 で固定されます。一方で、Enum で実装されている場合、変換した際の code は case の定義順や associated value の有無によって動的に変わります。

本記事では、Error を NSError に変換する際の振る舞いを LocalizedError や CustomNSError なども交えながら解説します。さらに、この知見を活かし、Firebase の Crashlytics に情報量豊かな非重大ログを送信する方法も紹介します。

1
パンフ記事(4ページ)

Universal Links の仕組みと実装方法

aym

ショッピングサイトの商品リンクをタップしたら、ブラウザではなく専用アプリがスッと開いて商品ページが表示された体験はありませんか?
この快適なユーザー体験は「Universal Links」という技術で実現されています。

ユーザーにとっては非常に便利な一方、開発ではWebサーバーに apple-app-site-association (AASA) という、アプリとサイトを紐付けるためのJSONファイルを設置する必要があるなど、導入には特有の知識が求められます。
この設定が正しくないと「リンクをタップしてもアプリが起動しない」という問題が発生します。特に、一度設定した後に「変更内容がなぜか反映されない」といったトラブルは、CDNのキャッシュが原因であることも多く、多くの開発者が頭を悩ませるポイントです。
この記事では、Universal Linksの仕組みといった基本から、AASAファイルの書き方、そして「落とし穴」であるCDNキャッシュについても詳しく解説します。

1
パンフ記事(4ページ)

coremltools を使ってオンデバイスで動くMLモデルを作る

ios_hamada だーはま

Pythonで学習したMLモデルをオンデバイスで動かすには、Core ML形式への変換が不可欠です。

Pythonライブラリ coremltools は、TensorFlowやPyTorchなどのフレームワークから.mlmodelや.mlpackageへの変換を Converter で行い、さらに量子化、パレット化、プルーニングなどの圧縮機能を備え、モデルサイズや推論速度を改善してくれます。

本記事では、coremltoolsを使ってオンデバイス用のMLモデルを作成&実行する過程を、以下の観点で実例を交えながらご紹介します。

  • coremltools を用いた変換
  • パレット化(LUT化)や量子化、プルーニングによるモデル圧縮手法とその効果
  • .mlmodel・.mlpackage の読み書き、柔軟な入力形態設定、Xcodeでの検証活用など開発効率を高めるユーティリティ紹介

これらを通じて以下の知見を皆さんへお届けします。

  • モデル圧縮によるファイルサイズの削減・推論高速化・電力効率の向上が即実感できる
  • Neural EngineやGPU活用のパフォーマンス利点を具体的に理解できる
パンフ記事(4ページ)

Apollo iOSを通じて学ぶGraphQL APIの基本とクライアント実装

yagijinjin yagijin

GraphQLは、API用のクエリ言語およびそのランタイムであり、単一のAPIエンドポイントに対してクライアントがデータ取得のためのクエリを準備することで、柔軟にデータを取得できます。Apollo iOSは、GraphQLクライアントの実装の一つであり、ApolloはKotlinやJavaScriptを含む多くのプラットフォームでも一般的に利用されています。本記事では、Apollo iOSを用いたクライアントの参考実装を通じて、GraphQL APIの基本概念を学べるようにします。

この記事では、以下のトピックをカバーします。

  • データ取得
    • スキーマとその構成要素
    • Queryとリクエスト数を減らす工夫
    • ページネーションを含んだQuery
  • その他
    • データ更新(Mutation)と独自のResult型
    • エラーハンドリング

各トピックについて具体的なコード例を交えながら、わかりやすく解説します。この記事を通じて、参加者がGraphQL APIとApollo iOSの基本的な使い方を理解し、実践に役立てることができるようになります。

1
パンフ記事(4ページ)

CocoaPods終活へ : iOSアプリ開発を拓き、Rubyエコシステムを変革したその軌跡

temoki Tomoki Kobayashi

iOSアプリ開発のデファクトスタンダードとなったライブラリ管理ツールCocoaPodsは、Swift Package Managerの成熟によりメンテナンスモードへと移行します。その主要リポジトリは2026年にはリードオンリー化が予定されており、事実上の開発終了フェーズに入ることになります。しかし、その影響と功績はAppleプラットフォームに限定されません。

本稿では、CocoaPodsがいかにiOS開発のライブラリ管理を簡素化したかを振り返ります。そして、CocoaPodsがなぜRubyで作られたのかについても掘り下げます。さらに、CocoaPodsのために開発された依存解決アルゴリズム「Molinillo」が、そのインスピレーション源であるRubyの主要パッケージマネージャーBundlerやRubyGemsに採用され、Rubyコミュニティを長年苦しめた依存関係地獄を大きく改善したという逆転現象に焦点を当てます。

CocoaPodsがSwift Package Managerへと主役の座を譲りつつある今、iOSアプリ開発を支え、Rubyエコシステム全体を変革したその物語を紐解き、パッケージ管理の重要性を再考する機会を提供します。

4
パンフ記事(4ページ)

個人開発で徳島大学生60%以上の心を掴んだアプリ、そして手放した話

akidon0000 akidon0000

徳島大学で学生の60%以上が使っているiOSアプリ「トクメモ+」。
本稿では、開発・運用・譲渡までの実践知を共有します。

大学生活の中で感じた「使いづらさ」を、誰も解決しないなら自分がやる。
そんな思いから始まったのが、学内システムを一元化するiOSアプリ「トクメモ+」の開発です。

「ログインのたびに毎回IDとパスワードを入力」「講義資料・履修情報・時間割がすべて別サイト」など、日々の小さな不便を一つずつ解消することで、口コミを通じてユーザーが増加。大学側のサポートもAPIもない中で、MAU 3500人に使われるアプリへと成長しました。

本稿では「どう作ったか」だけでなく、以下のような実装・運用・引き継ぎの工夫も紹介します:

  • WKWebViewを使った大学Webサイトへの自動ログインの仕組み
  • GAS・GitHubによるノーコスト運用と引き継ぎ戦略
  • DOS攻撃を防ぐための状態設計
  • 個人開発アプリとしてユーザーから信頼を得るためのUI/UX構成・計画
  • 大学側との交渉の顛末
  • アプリ譲渡時に発生するKeychainの技術的課題と解決方法

大学からサポートが無くても、お金がなくても、個人でも、価値あるプロダクトは作れる。
そんな実例として、学生開発や個人開発に関心のある方々にヒントを届けられたら嬉しいです。

8
パンフ記事(4ページ)

もうWebViewで悩まない!WebKit for SwiftUIで変わるアプリ開発

_matatabiz またたび

SwiftUIでのWebView実装に悩んだことはありませんか?

従来のWKWebView実装では、UIViewRepresentableでのラッピング、複雑なデリゲート処理、状態管理の同期問題など、多くの課題に直面した方も多いでしょう。

これらの問題を解決するために、WWDC 2025で発表された「WebKit for SwiftUI」をご紹介します。

WebKit for SwiftUIを使用することで、WebViewの実装が驚くほどシンプルになり、数行のコードで簡単にWebページを表示できます。
WebPageクラスを活用して状態を監視し、ページの読み込み状況やエラーを自動的にビューに反映させることができます。

また、Observable対応による自動状態管理、宣言的な設定、強力なJavaScript通信機能を備えており、「シンプルなURL読み込み」から「PDF生成・スクリーンショット・アーカイブ保存」まで、実務で必要な機能を簡潔に実現できます。

もはやWebView実装で悩む必要はありません。
新しいWebKit for SwiftUIを活用して、アプリ開発を次のレベルへと進化させましょう。

1
パンフ記事(4ページ)

その不具合、アプリ側かWebサイト側か? WKWebView連携の正しい読み解き方

Nao_RandD Nao-RandD / ナオランド

WKWebViewを介してWebサイトと連携するiOSアプリを開発する場面では、「アプリのWebViewだけうまく動かない」「表示が崩れる」といったトラブルに遭遇することが珍しくありません。そんなとき、多くのiOSエンジニアがまずWebサイト側に原因を求めがちですが、本当にそれは正しいアプローチでしょうか?

本記事では、iOSアプリのWKWebViewを利用した実装で何が行われているのかを段階的に確認することの重要性をお伝えします。たとえば、CSSの上書きをevaluateJavaScriptから行っていると、意図せずDOM構造を壊し、レイアウト崩れや表示フリーズの原因となる場合があります。また、特定のドメインのみUser-Agentを上書きしていたり、MessageHandler経由で何か処理をしている実装があると、同じWebサイトであっても挙動が変わってしまうことがあります。

こうした点をまずアプリ側で整理・把握したうえで、その後にWebサイト側で意図しない挙動になっていないかを切り分けていくアプローチを、簡単な具体例とともに紹介します。

  • アプリを再起動するとログイン状態が維持されない
  • evaluateJavaScriptでCSSを上書きし、DOM構造が壊れて表示が崩れる
  • User-Agentの上書きによってWebサイト側にアクセスを拒否される

「この不具合の原因はアプリ側?それともWebサイト側?」と迷ったとき、どこから調査を始めればよいかを、具体例を通じて掴んでいただければ幸いです。

3
パンフ記事(4ページ)

ユーザーフォント対応のためのカスタムフォントピッカー実装術

n_atmark atsuyan

iOS 13からUIFontPickerViewControllerが利用できるようになり、アプリ内でフォントピッカーを提供したい場合に簡単に実装を行うことができるようになりました。
またFonts capabilityによってカスタムのフォントも利用できるようになりました。

しかし、これらの仕組みは任意のフォントを自由にシステムにインストールできるというものではありません。
そのため、ユーザーが用意したフォントをアプリ内で利用できるようにするためには、アプリごとにフォントローダーやフォントピッカーを用意する必要があります。

この記事では以下のような内容を紹介します

  • iOSで利用可能なフォントの種類とその制限について
  • CoreTextのAPIとフォントローダーについて
  • CTTextから各種Attributeを取得する方法について
  • フォントピッカーとしてフォントの表示・選択を行えるようにする実装について
パンフ記事(4ページ)

Swiftで描くWebの未来

AkkeyLab akkey

iOSアプリのUI構築において、SwiftUIは宣言的な記法と豊富な拡張性により注目を集め、今や多くのプロダクトで採用されています。こうしたSwiftの思想は、今やWeb開発の領域にも波及しています。その一例が、Swift製の静的サイトジェネレータ「Ignite」です。

本稿では、Igniteが提供する3つの中核的なAPIグループ「InlineElement」「HTML」「Modifier」に注目し、どのようにしてSwiftらしいWebページ構築を実現しているかを解説します。

  • InlineElement はテキストや画像など、HTMLタグに相当する単一要素を抽象化したプロトコル
  • HTML は複数の要素を組み合わせた再利用可能なコンポーネントを表現するための仕組みであり、ユーザー定義コンポーネントの構築にも使われる
  • Modifier は色や文字サイズなどの装飾を宣言的に追加するためのAPI群で、SwiftUIと同様、要素に対してチェーン的に適用することが可能

これら3つの設計は、HTMLそのものをSwiftで模倣することが目的ではなく、「型安全なDSLとして、Webを構築する」という明確な思想に基づいています。慣れ親しんだSwiftの型と文法で「ウェブサイトを創る」という体験。SwiftならではのWeb開発のあり方を、Igniteを通して紐解いていきます。

1
パンフ記事(4ページ)

WWDC現地参加、最大化の鍵は「公式外」!? コミュニティイベント活用術

ikkou ikkou

WWDC25に現地参加してきました!
人生初のWWDC現地参加はとても刺激的でしたが、同時に「ただセッションを見に行くだけなら、現地に行く意味はあるのだろうか?」という疑問も抱きました。オンライン視聴が当たり前になった今、現地参加の価値とは何か?私なりに見つけた答えは、“現地ならではの人とのつながり”でした。

Appleの中の人と直接話せる1on1 LabやDeveloper Sessionの後の会話など、現地ならではの交流機会は貴重です。中でも特に印象的だったのが、「Meet the community」で紹介されているコミュニティ主催の非公式イベントたち。朝活形式の勉強会、開発者同士の雑談会、世界各国のiOSエンジニアとフラットに話せるパーティーなど、その場でしか得られない学びと出会いがありました。

本稿では、私がWWDC25期間中に参加したコミュニティイベントを紹介しつつ、イベントに参加することで得られた知見やつながり、そして次回以降にWWDC現地参加を目指す人に向けたアドバイスを共有します。「現地に行くなら、セッション以上の体験を!」そんな想いを込めた内容です。

1
パンフ記事(4ページ)

異業種からiOSエンジニアへ〜未経験から転職を実現するロードマップ〜

hinakkograshi ひなっこ

私は今年、銀行員からiOSエンジニアへとキャリアチェンジをしました。

最近、「どうやって学習を進めたのか?」「転職までに何をしたのか?」といった質問をいただくようになったため、異業種からiOSエンジニアを目指す方、これからキャリアを築こうとする学生の方、またそうした方をサポートする立場の方に向けて、私自身の経験をまとめて共有したいと思います。

この記事では、独学でどのようにスキルを身につけ、エンジニアコミュニティと出会い、学びを加速させていったのか、そして転職を実現できたかについて、実体験をもとにお話しします。

本記事で紹介する内容:

  • 独学でどのように学習したのか
  • ロールモデルの存在がキャリア形成に与えた影響
  • エンジニアコミュニティ・カンファレンスに参加して得られたもの
  • 学びをコミュニティに還元する意義と実践方法

この記事が、iOSエンジニアを目指す方にとっての道しるべとなり、また誰かにアドバイスをする際のヒントになれば幸いです。

12
パンフ記事(4ページ)

カスタム Lint ルールを利用した静的解析の強化

mitsuharu_e 江本光晴

iOS アプリの開発において、Xcode 標準の静的解析機能は便利です。しかしながら、開発チーム独自のルールやアクセス制限など細かな要件を十分にカバーすることは難しいです。

本記事では、SwiftLint のカスタムルールを活用して、静的解析を強化する方法を紹介します。非推奨メソッドの使用制限や、アクセス範囲を特定のファイルやディレクトリ内に絞り込むことなどを可能にし、コード品質と保守性の向上を図るための考え方と実践的な導入手法を解説します。

パンフ記事(4ページ)

高田馬場&西早稲田散策マップ 〜今までありがとう西早稲田!〜

s_shimotori_pub S_Shimotori

2017年以来お世話になった西早稲田。過去参加された方はこの地にいろんな思い出をお持ちでしょう。

あれ?私、駅と63号館との往復しかしてないや。高田馬場や西早稲田や大学のことを何も知らない。たくさんお店があるのに、母の生まれ育った地なのに、10年前に理工展の人と交流したことあるのに、この街のことを何も知らない…!

本記事では、高田馬場&西早稲田を何も知らないまま有明へ行く皆さんのために散策用のマップを提供します。
機会を見つけて散歩してみると面白いですよ!

【掲載内容】

★高田馬場&西早稲田エリアの散策マップ
学生街と住宅街がいい感じに隣り合った街並みを紹介します。
ときどき史跡があったり、少し東に行くとヤギさんがいたりします。

★高田馬場&西早稲田メシの食レポ
個人的に気になったお店をいくつか紹介します。
高田馬場といえばラーメンですが、甘いものも要チェックです。それにカレーとラム。

★早稲田大学西早稲田キャンパスができるまでの歴史
山手線内にまとまった土地があったということは、つまりそういうことですね。

★理工展2024の参加レポ
去年参加された方は、iOSDC Japan 2024のフォトモザイクに「理工展にもきてね!!」と書き込まれていたことに気づいていましたか?私は行ってきましたよ!
学園祭はお子様連れの皆さんにおすすめのイベントです。
理工展の様子はもちろん、キャンパスツアーや学生チーム開発ノウハウ共有カンファレンスも紹介します。

【こんな人におすすめ】

  • 街歩きが好きな人
  • 食いしん坊な人
  • 63号館と居酒屋にしか目がいってなかった人
  • こっちのキャンパスにも大隈重信像があることに気づかなかった人
3
パンフ記事(4ページ)

前回までのiOSDC Japan

hironytic ひろん

iOSDC Japan 通算10回目の開催おめでとうございます!
10進数では桁が一つ上がるこの節目に、本編前のあらすじ紹介のように、これまでのiOSDC Japanを振り返りたいと思います。

第1回のiOSDC Japan 2016がCoconeriホールで開催されてからこれまで、iOSDC Japanは「iOSエンジニアのお祭り」というだけあって、トークセッションのみにとどまらず、様々な企画が開催されました。その中には時代に合わせて姿を消したものもあれば、改善を重ねながら今もなお続いているものもあります。例えば「夜のiOSDC」や「iOSDC茶会」、当初は競技のようだった「iOSDCチャレンジ」などなど。

本記事では、そんな前回までのiOSDC Japanを、第1回から欠かさず参加してきた筆者の思い出を交えながら振り返ります。古くから参加されていた人には懐かしい思い出を蘇らせ、新しく参加される人には過去の魅力的な出来事を知る機会を提供します。

パンフレットは開催前に参加者の手元に届くので、楽しそうな誌面にして、開催当日に向けてのみなさんの気持ちを盛り上げます!

9