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

できる!技適特例申請!

ikkou HEAVEN chan / ikkou

2024年2月にUS限定でApple Vision Proが発売されました。
5月現在、このApple Vision Proはまだ日本で発売されていませんが、一定台数のApple Vision Proが国内に存在しています。
しかしこのApple Vision Pro、なにも知らずに国内で電源を入れると「電波法」に抵触します。

皆さん、ちゃんと「技適未取得機器を用いた実験等の特例制度」を申請していますか?
本記事では、電波法と技適とその特例制度について、その存在意義と申請までの手順を解説します!
同制度を利用することによって技適未取得のデバイスを気軽に、合法的に、利用できるようになります。

5
採択
パンフ記事(4ページ)

SwiftUIで実現する!VoiceOver対応の使いやすいアプリを作るためのアクセシビリティ対策

_matatabiz またたび

現代のアプリ開発において、アクセシビリティは欠かせない要素となっています。特に視覚障害者にとって、VoiceOver対応は非常に重要です。本記事では、SwiftUIを用いたVoiceOver対応のアプリ開発に焦点を当て、その具体的な手法を紹介します。

アクセシビリティラベルの設定
ボタンや画像などの要素には、意味のあるアクセシビリティラベルを追加します。これにより、VoiceOverが適切な情報を読み上げることができます。例えば、"再生"ボタンには"音楽を再生するボタン"というラベルを設定します。

要素の順序設定
画面上の要素が論理的な順序で読み上げられるように設定します。特にフォームや複数のボタンがある場合、ユーザーの操作がスムーズになります。例えば、入力フォームでは、名前、メールアドレス、送信ボタンの順に読み上げられるようにします。

アクセシビリティインスペクタを使用したテスト
アプリのVoiceOver対応を確認するために、アクセシビリティインスペクタを使用してテストを行います。これにより、VoiceOverが期待どおりに機能しているかどうかを確認できます。

以上の手法を組み合わせることで、視覚障害者を含む多くのユーザーにアクセス可能なアプリを提供し、ユーザー体験を向上させることができます。

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

マージされる Pull Request はこう書く

worlddowntown Keisuke Shoji

Pull Request (PR) が不毛なコメントばかりでなかなかマージされない。
PR を開いたものの、差分が大きすぎてそっと閉じた。
という経験が誰しもあると思います。

本記事では、作成した PR が素早くマージされるため、レビュアー/レビュイー双方の手間を削減するノウハウを共有します。
特別なツールを導入したり、ChatGPT に業務のセンシティブな情報を投げてしまう前にやれることがきっとあるはずです。

  • 目的
  • レビュイーがやるべきこと
  • レビュアーがやるべきこと
  • GitHub のおすすめ設定
  • GitHub Flavored Markdown
5
採択
パンフ記事(4ページ)

Swift Concurrencyと歩む、プライバシーの許可リクエスト共通化

Nao_RandD Nao-RandD / ナオランド

皆さん、*許可リクエストをしっかりハンドリングできてますか?👀

アプリ上で位置情報やATTなどのプライバシーデータを扱う場合、アクセスするために*許可リクエストを適切に行うことはアプリ開発者において重要な責務の一つです。
ただ、データを扱うフレームワークごとに許可リクエストのAPIは異なっており、後続処理の制御にコールバックが提供される場合もあれば、位置情報やBluetoothのようにDelegateパターンで提供される場合もあります。
そのため、複数のリクエストを同時に呼び出したり、”データをこのように使用します”という事前説明画面の後に呼び出すなど、前後処理に紐づけて柔軟に呼び出すケースでは複雑な実装となりがちです。

本記事では、以下の二つをコードを交えてハンズオン形式で紹介していきます。
・既存のコールバックやDelegateパターンの実装をSwift Concurrencyのasync/awaitで扱えるようにする
・異なるフレームワークの許可リクエストを共通のAPIから呼び出せるようにする

withCheckedContinuationでコールバックやDelegateを置き換えたり、Actorでデータ競合対策など、実際のコードを置き換えながら学んでいきましょう!

* 本記事では、プライバシーデータにアクセスするための処理を「許可リクエスト」と表現しています。

5
採択
パンフ記事(4ページ)

Adobe InDesign を使った技術書作成の基礎

AkkeyLab akkey

みなさん、技術書を書いたことはありますか?
紙の本として印刷する場合、様々な決まりに従ってレイアウトを施す必要があります。例えば、用紙サイズ・左綴じと右綴じ・余白・断ち切り・背幅・トンボ・ノンブルなどがあります。
これらの設定を手助けしてくれるツールは数多く存在しますが、本稿では Adobe InDesign を例に技術書作りのノウハウをご紹介します。

  • Adobe Creative Cloud の言語設定
  • 親ページの活用
  • 文字スタイルと段落スタイルの設定

特に、言語設定が原因で締め切りギリギリで再入稿することになった経験など、実体験を踏まえた注意点や便利な機能の活用法を紹介します。
パンフレットを読んで「私もパンフレット記事を書いてみたい!」と思った方はもちろん、他のツールを使って執筆を行っている方にとっても有益な情報となること間違いありません!

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

Apple Silicon のためのアセンブリ入門【続編】

AkkeyLab akkey

iOSDC Japan 2023 のパンフレット記事として掲載された「Apple Silicon のためのアセンブリ入門」の続編です。
前回はニーモニックと文字出力について解説しましたが、本稿では演算処理をアセンブリで記述する方法に焦点を当てます。

Intel CPU を搭載した Apple デバイスがストアから姿を消すなど、 Apple Silicon は大きく進化しました。
私たちがこの Apple Silicon と非常に近い距離で対話する手段、それがアセンブリです。
アセンブリは機械語に非常に近い低水準言語であり、特定の CPU アーキテクチャに依存して記述方法が異なります。これに対して、Swift などの高水準言語では記述方法がほとんど変わらないため、アセンブリの特性について疑問を抱く方もいるかもしれません。

本稿では、 Apple Silicon 上でアセンブリを用いて演算処理を行う方法を紹介します。最初は仕事に直接役立たないように思えるかもしれませんが、日常的に Swift で書いている演算処理がコンパイラによってどのように機械語に変換されているのかを理解する絶好の機会です。きっと Apple Silicon がさらに魅力的に感じられるでしょう!

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

SwiftLintのオレオレカスタムルール一覧

the_uhooi uhooi

「SwiftLint」という、Swift用の静的解析ツールがあります。
SwiftLintには標準で多数のルールが用意されていますが、正規表現を使って自分でカスタムルールを作ることもできます。

私は主に以下の観点でカスタムルールを作っています。

  • 書き方が複数ある処理を統一する(例: Date() より .now を好む)
  • 非推奨のAPIを置き換える(例: foregroundColor() より foregroundStyle() を使う)

本記事では私が実際に使っているカスタムルールを紹介します。
取り入れなくても読むだけで勉強になりますし、正規表現なのでそのまま一括で置換もできます。

ぜひこの機会に処理の統一化や非推奨APIの置き換えを図りましょう!

6
採択
パンフ記事(4ページ)

VSCodeで手軽にSwiftスクリプトを書こう

417_72ki 417.72KI

Swiftでもシェルスクリプトのようなことができるのは既に知られていることかと思います。
しかし、標準の開発環境であるXcodeではSwiftスクリプトのサポートがほとんどされておらず、標準APIのコード補完すらできないのが現状です。

一方で、VSCode (Visual Studio Code)にSwiftプラグインを導入することでコード補完はもちろん、変数の型の確認が容易になるなどの恩恵を受けられます。
更に、GitHub Copilotも標準サポートされているのである程度の単純作業であればすぐにスクリプト化することができます。

本記事では、VSCodeにSwiftプラグインを導入する手順を解説し、実際にzshで書いたスクリプトをSwiftで書き直した事例を紹介します。

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

@Environment(\.keyPath)実践入門

lovee 星野恵瑠

SwiftUIでは、@Stateや@Environment*などのプロパティラッパーを使って状態を管理します。@Stateは多くの開発者に親しまれていますが、@Environmentはその適切な使い方が十分に理解されていないことが多いです。本記事では、@Environmentの基本的な仕組みから高度な応用方法までを詳しく解説します。

本記事では以下の内容をカバーします:

  1. @Environmentとは何か、特に@StateやSingletonとの違い
  2. @Environmentの基本的な使い方
  3. @Environmentを利用した高度な状態管理テクニック
  4. @Environmentの実際のプロジェクトでの応用事例
  5. @Environmentを効果的に活用するためのベストプラクティス

本記事を通じて、@Environmentの基礎から応用までを学び、SwiftUIアプリの開発において効果的な状態管理手法を習得できます。初心者から中級者まで幅広い層に役立つ内容を提供します。

*: 本記事では@Environment(.keyPath)のみを取り扱います。@Environment(ObjectType.self)は敢えて取り上げません。

13
採択
パンフ記事(4ページ)

Bonjourとネットワーク通信を通して学ぶNetwork Framework実践ガイド

yutailang0119 Yutaro Muta

Network Frameworkは、WWDC18で発表されたデータ送受信のためのネットワーク接続用フレームワークです。このフレームワークを使用することで、TLS、TCP、UDPなどのプロトコルに直接アクセスが可能です。また、URLSessionの内部でも使用されており、多くのアプリケーションを支えています。
Bonjour (ボンジュール) は、Appleが開発したゼロ・コンフィギュレーション技術で、IPアドレスやホスト名を入力せずに接続する方法を提供します。例えば、AirPrintのプリンター自動検出やHomeKitへの接続に使用されます。

本稿では、Network Frameworkを活用し、NWBrowserでのネットワークサービスの検出と、NWListenerおよびNWConnectionを用いた通信について解説します。

  • Network Frameworkの概観
  • Bonjourを用いたネットワーク上のサービスの検出: NWBrowser
  • Network FrameworkでのUDP送受信: NWListener、NWConnection
  • Swift Concurrencyと組み合わせたモダンなアプローチ
9
採択
パンフ記事(4ページ)

Swift PlaygroundsではじめてのiOSアプリ開発~お絵描き練習ゲーム作成~

wiroha wiroha

Swift Playgroundsは、iPadで動作する開発環境です。MacやXcodeを使わずにiPadで開発できるため、iOSエンジニア以外の人でも手軽にiOS開発に挑戦できます。この記事では、DevRelである私が初めてのiOSアプリとしてごくシンプルなお絵描き練習ゲームを開発したプロセスを紹介します。
開発するアプリは、絵の定番の基礎練習である「正確な円を描くこと」を目指すゲームです。

概要

  • 背景
  • Swift Playgroundsとは
  • アプリの仕様
  • 完成したアプリ
  • ソースコード
  • iPadで効率的に開発するコツ
    • キーボード・縦置きスタンドの用意
  • 良かったところ
    • ゲームで学べる
    • 操作が直感的
    • そのまま実機で動く
  • 難しかったところ
    • バージョン管理しづらい
    • 情報を見つけにくい
    • アプリの特性上デバッグしづらい
  • Xcodeでの開発との違い
  • まとめ
    • 学習アプリとして優秀
    • Xcodeと使い分けたい

この記事により、人事や広報など非エンジニアのiOSDC参加者がアプリ開発に挑戦する助けになれば良いなと思います。またSwift Playgroundsを使ったことがないiOSエンジニアの方にも新たな発見と学びとなることを期待しています。

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

Swiftらしい関数名の命名のコツ

__ryomm Ryomm

Swiftの関数名の命名についてお悩みの方はいませんか!?
命名を適切に行うことで、コードの可読性やメンテナンス性を大きく向上させることができます。

Swiftの命名規則に関して参考になるものとして、Swift API Design GuidelinesというドキュメントがAppleから提供されています。
このドキュメントを読むと、Swiftの関数名の命名においては、関数を使用するときの「明瞭さ」そして「自然な文章としての読みやすさ」の2つが重視されていることがわかります。
明瞭で自然な命名をしようと思っても、英語が達者でもない場合、難しいと感じることが多いです。
私自身命名が正しいかどうか思い悩む日々を過ごす中、前置詞を効果的に使うことで明瞭かつ自然な命名ができることに気づきました!
例えば setY(_ x:) という関数があったとき、XとYがどのように関係しているのかわかりますか?このように、関係性が不明瞭なときに
前置詞が役立ちます。

本稿では、Swift API Design Guidelinesをもとに関数名の付け方の基本を説明した上で、英文法から考えるSwiftらしい関数名の命名について紹介します。

  • Swift API Design Guidelines で言及されている命名規則
  • 英文法から考える関数名
  • 引数ラベルに使えそうな前置詞早見表
3
採択
パンフ記事(4ページ)

UIKitを利用した複雑な表現をSwiftUIで再現する際の考え方と事例紹介

fumiyasac 酒井文也

スワイプ等をはじめとする指の動きに合わせた変化量や画面要素内のスクロール処理を連動する様な、機能性と触り心地に加えささやかな遊び心も兼ね備えたUI実装に関しては、UIKitがメインであった当時から、様々な創意工夫の余地があり使いやすく利用できるOSSも沢山生まれてきた経緯があったかと思います。

SwiftUIでのUI実装が徐々に普及し、SwiftUIに備わった機能やできる事も徐々に増えていった現在では、これまではUIKitを活用する事で実現していた様な複雑な実装であっても、徐々に実現可能になりつつあるので、今後は複雑なUI実装にも積極的に活用できる可能性を感じています。

本稿では、SwiftUIを活用した実装方針の中で、

  • ScrollViewの変化量を利用した複雑な表現事例
  • DragGesture時に取得できる変化量と連動した動きを応用した表現事例
  • GeometryReaderから取得できる値を有効活用して実現するUI実装事例
  • ScrollViewReaderで提供されている機能を利用したUI実装事例

の様なトピックにフォーカスをして、実現にあたり押さえておきたいポイントを解説します。

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

InputMethodKitとTCAを使ったmacOS上で動作するIMEの開発

Tatsumi0000

macOS上で動作するIMEを開発するために、Appleが公式で提供するInputMethodKitを利用して開発しました。

InputMethodKitでは主に、IMKInputController、IMKCandidates、IMKServerの3つのクラスを使って開発します。実際に開発をする中で、特にロジックが集中するIMKInputControllerのコードが肥大化し、コードの見通しが悪くなるという問題に直面しました。他にもIME開発特有のデバッグの煩わしさもありました。

そこでコードの見通しの悪さに対してはThe Composable Architecture(TCA)を導入し、IMEのデバッグの煩わしさに対しては、fastlaneを使った自動化や、Repository層とUseCase層を採用したマルチモジュール構成でデバッグ専用のアプリを開発し煩わしさを軽減しました。

本稿では開発を通して得た知見について、実際のコードと一緒にInputMethodKitとTCAを組み合わせた開発手法と、fastlaneを使った効率的なデバッグ方法について解説します。

1