Xcodeのlinkingはstaticとdynamic二種類あり、ターゲットのテンプレートもそれぞれ、Static LibraryとDynamic Frameworkとして用意されています。
Dynamic linkingを使用することで、ビルド時間の改善、バイナリサイズの削減ができます。
Dynamic linkingをデフォルト採用する上で、知っておきたい以下の項目について解説します。
想定する対象者
SwiftにおけるString Interpolation(文字列補間)の魅力について、典型的な使用方法から始め、SwiftUI.Textを例に他Frameworkとの組み合わせを解説します。
このトークでは、String Interpolationの基本から応用までを網羅することで、魅力を理解した上で、他Frameworkと組み合わせた文字列操作の応用を目指します。
みなさんはXcode 13で革命が起きたのをご存知ですか?
そう、Vimのキーバインドを使えるVimモードが追加されたのです。
Editor > Vim Mode を押下するだけでVimモードに切り替わります。
私はXcodeにVimモードが追加されてからずっと使い続けており、iOSアプリ開発の効率化に繋がっていると実感しています。
本トークでは、XcodeのVimモードを通して、Vimのキーバインドを実演付きで解説します。
【ターゲット】
・XcodeのVimモードを使ったことがない
・普段Vimを使っていない
【話すこと】
・Vimのキーバインドの特徴
・Xcodeで使えるキーバインドの紹介
ぜひみなさんもVim ModeをONにして、実際に操作しながら本トークを聞いてください。
本トークが終わっても、全員がVim ModeをONにしたままになっているはずです。
ほとんどのプログラミング言語は関数の引数定義に、引数名だけしか存在しません。そしてその関数を呼び出す時、引数名抜きで値だけ入れるか、一部の言語では引数名も一緒に書けます。
ところがSwiftの場合、「引数ラベル」という独特な仕様があります。この仕様により、関数を呼び出す時、引数の値の前にそのラベルを書く必要があります。
一見とても面倒な仕様ですが、これのおかげでコードリーディングが非常に楽になることが多く、筆者がとても好きな仕様です。
このセッションでは、以下のような内容をカバーします:
そしてこのセッションは、Swift初心者の他に、最近他言語からSwiftに転向した方や、単純にもっと引数ラベルを活用したい方におすすめしたいです。
みなさんはショートカットアプリを活用していますか?
私は日々のルーティーン用のショートカットをよく利用しています。
ショートカットアプリにあなたのアプリを連携させるためには、App Intentsを利用する必要があります。
App Intentsによって、ショートカットアプリだけでなく、SpotlightやSiriからの提案などの場所にも、あなたのアプリが表示されるようになり、アプリ起動導線を増やせます。
また、iOS 17のInteractive WidgetsにもApp Intentsが必要です。
このトークでは、あなたのアプリの活躍の場を増やすために必要なApp Intentsの活用テクニックや、このような機能に対応しやすくするために普段の開発から意識すべきことなどをお話します。
RESTと同様にGraphQLでもエラーは扱います。
それでは、そのエラーをどのように定義し、ハンドリングするのが良いのでしょうか。
GraphQLではerrorsキーにエラーの詳細を載せることもできます。
しかしながら、この方法ではGraphQLで活用できる型情報が失われてしまいます。
他に方法はないのでしょうか。
本トークではGraphQLでのエラー定義の方法とその活用方法を探っていきます。
以下の内容を予定しています。
みなさんは森の中で大きな変質者に追われたらどうしますか?
私はSwift Package Manager(以降,SPM)を回直します(??)
SPMはAppleが提供するOSSであり,SPMを利用することにより依存の管理を簡単に行うことができます.
XcodeがSPMをサポートした事によって,私達iOSエンジニアからもよく利用されるようになりました.
しかし,普段よく利用するからこそイマイチな点も見つかるかもしれません.
そんな時はコントリビュートのチャンスです.
このセッションでは,駆け出しエンジニアがビビりながらSPMにPRを送った経験を基に,コントリビュートにどのようなプロセスが必要だったのかを説明します.
例えばissueの見つけ方,デバッグ方法,PRの出し方,ユニットテスト等です.
最終的に,この発表を聞くとコントリビュートに対する心理的ハードルを下げることができます.
WWDC23で発表された、SwiftUIに対するMetal Shaderの適用法に焦点を当てます。
本トークではまず、シェーダーを作成するための基礎知識として三角関数の役割を解説します。
その上で、これらの要素をSwiftUIと結び付け、リッチなビジュアルエフェクトを効率よく実現する方法を具体的に解説します。
Metal ShaderをSwiftUIと組み合わせることで、高度な視覚効果を手軽に実現できますが、応用させるには三角関数を理解する必要があります。
このトークを通じて、Metal Shaderの基本的な使用法と、それを活用したSwiftUIのビジュアル表現の豊かさの理解を深めることができます。
このトークは、SwiftUIにおいて更に視覚的な表現を豊かにする方法を探している方を対象としています。
皆さんのアプリのユーザ体験がより向上する手助けとなれば幸いです!
WWDC21で発表されたScreen Time APIの解放は、多くのデベロッパーが期待したのでは無いでしょうか。しかし、利用にFamily Controlsの承認が必要で子供のアプリ使用を親が管理するためのものでした。時間管理したいデベロッパーは残念に思ったでしょう。実は1年後のWWDC22からFamily Controlsを通した承認に「自分自身」が承認できるようになり、「親」のような他者からの承認を必要とせずにScreen Time APIを利用することができ、これで大人でも時間管理ができるようになりました✌️
このトークではScreen Time APIを利用したアプリの開発からリリースまで通じて遭遇した出来事についてお話しします。具体的にはアプリの申請時から注意すべきこと、新しいAPIに対するレビュアーの反応、さらに具体的なコードを用いてどのように動くかを紹介していきます。
アプリのUIがちょっと物足りない...そんな時、Metal Shaderはあなたのアプリの表現力を広げるための一つの選択肢になります。
シェーダーと聞くと難しい印象があるかもしれませんが、
基本を押さえれば、再生中のオーディオデータの可視化やコンテンツに没入感を与える演出などを表現できるようになります。
このトークではMetal Shaderの理解に必要な知識を共有しつつ、具体的な用例や実装を紹介します。また、コードのメンテナンス性やパフォーマンス面についても注意点をお話します。
見ているだけで楽しい、そんなUIをMetal Shaderで作ってみましょう。
WeatherKitを使用することで、開発者は簡単に最新の天気データを取得し活用することができます!
天気アプリにはもちろんのこと、それ以外カテゴリのアプリでも天候情報は有効活用することができます。
実際にどのようにWeatherKitを使いアプリに組み込んでいくのか実際のデモを交えて説明します。
参加者がWeatherKitを活用して魅力的で実用的なアプリを開発するための知識とアイデアを提供します!
ぜひご参加いただき、ユーザーにとって役立つアプリを作り上げましょう!
トーク内容
こちらのトークではXcodeのLLDBデバッガーの便利な使い方を紹介します。
LLDBとは、Xcodeに標準搭載されているデバッガーです。
LLDBを使いこなすことによって、デバックを効率よく行うことができ、開発スピードの向上が見込めます。
p, po, vコマンドなどの基本的なコマンドの解説のほか、再ビルドせずに変数をLLDBで書き換える方法などを紹介します。
こちらのトークが皆様のLLDBデバッガーについての理解の助けになれば幸いです。
SwiftUIは宣言的にUIを組むことができるフレームワークです。その柔軟な設計思想によって、一つのレイアウトを取ってみても実装方法は数パターン存在します。
例えば、Viewにおける余白の表現においては、VStack/HStackのspacingを用いる方法や、paddingのModifierを用いる方法などが存在します。
しかし、一見期待するレイアウトになっていても、変更に弱いレイアウトとなってしまったり、パフォーマンス上問題となる場合などがあります。そのため、状況に応じて適切な実装パターンを見極める必要があります。
そこで本トークでは、さまざまなレイアウトにおいてSwiftUIによるベストなUIの組み方について体系的にお話しします。本トークを通して、聴講者の皆さまがSwiftUIでViewを実装する際に迷いなく適切な実装方法を選択できるようになることを目指します。
こちらのトークでは簡単な例を使い、低水準言語であるアセンブリ、アセンブラに入門してみます。
ソフトウェアエンジニアとして働いていると、アセンブラを学習する機会はほとんどないかもしれません。
しかし、アセンブラを学習することにより、CPUの機能やOSの役割が手を動かしながら理解できます。
Swiftで簡単なプログラムを記述し、Xcodeでアセンブリを表示させ、それを読めるようになるために、基礎的な箇所を解説します。
こちらのトークが皆様のアセンブラについての理解の助けになれば幸いです。
アセンブリ...言語の名称。
アセンブラ...アセンブリ言語で書かれたソースを機械語に変換するためのソフトウェア。
この発表では、Single Page Application (SPA) において Google Analytics 4 (GA4) を効果的に活用するための基礎知識から、実際の問題解決策までを解説します。
Webアプリを運用している方や、アプリエンジニアで新たにWebアプリの計測を行いたい方の参考になると幸いです。
GA4について
SPAにGA4を導入する方法
拡張イベント計測機能について
イベント計測の実用例
アプリ開発において、ユーザーの認証機能は重要です。セキュリティ上の脅威に対して、堅牢かつ安全に認証基盤を構築することが求められます。
Google CloudのIdentityPlatformは、幅広いセキュリティ機能を持った認証機能を提供するサービスです。多要素認証やOAuth、OpenIDConnectなどの認証プロトコルをサポートしておりiOSアプリのよりセキュアな認証機能の開発に活用することができます。
本トークでは、実際のiOSアプリ開発プロジェクトで、IdentityPlatformを活用したユーザー認証機能の開発を行い、そこで得られた知見や実践的なノウハウを共有いたします。
また悪意のあるユーザーからの攻撃に対してどのようなセキュリティ対策を取ることができるかを具体的にご紹介します。
Rettyアプリではアプリの開発体験・生産性向上に向けてGraphQLの導入を進めています。
私たちが抱えていた技術負債やGraphQL導入に至るまでの経緯や導入に関わる実装についてご紹介します。
Rettyのシステムについて
Rettyの全体的なシステム構成や、アプリとBFFに関する技術的負債など
REST APIの辛さとGraphQLの導入について
GraphQLの導入
apollo-iosによるアプリケーション実装・モジュール設計・XcodeCoudでのCIの実装について
これからのGraphQLを導入した今後の展望
GraphQLの導入とともに、SPMによるマルチモジュール化なども同時に進めています。
現在はGraphQLを段階的に導入している段階ですが、今後のアーキテクチャの変化など、チームで議論している展望についてお話しします。
SwiftUIのListはUITableViewで実装していたUIをより直感的に書き直すことが可能で、SwiftUI導入の効果が最も感じられるコンポーネントの一つです。
しかし、我々が真に実現したいUIはチュートリアルのようなシンプルな構造のものばかりではなく、公式で用意されているものでは実装が難しい場合があるでしょう。
SwiftUIでもアコーディオンUIを実現するためにDisclosureGroupが用意されていますが、アコーディオンを開閉するためのボタンの位置や表示をカスタマイズできないなど、なかなかかゆいところに手が届かない場合があります。そんな場合でもListの基本機能とSwiftUIのアニメーションを用いて独自のアコーディオンUIを構築することができました。
本トークでは実プロダクトへの導入事例に沿って、その実装を解説します。一見困難なUI構築の際のヒントとなれば幸いです。
弊チームの開発するアプリでは、Flutter Add-to-app を2020年に導入し、ネイティブの実装と Flutter での実装を共用して開発・運用を行っていました。
しかし、メンバーの入れ替わりや、Flutter 起因の不具合などの理由から、Add-to-app をやめ、iOS ネイティブで再実装するに至りました。
本トークでは、Add-to-app の導入時、運用時の良かった点や良くなった点を振り返ります。
そして、ネイティブで再実装する際に Flutter から Swift への書き換えや安全に移行するために行ったことをお話します。
本トークを通じて、Add-to-app が適するタイミングや規模感、メリット・デメリットを実感してもらい、皆さんの技術選定の手助けになる情報を提供します。
対象者: Flutter Add-to-app に興味がある方・チーム
こちらのトークでは簡単な例をもとにパイプライン演算子を自作します。
メソッドの結果を受け取り、その結果をメソッドの引数にわたし、さらにそのメソッドの結果を受け取って...
を繰り返すような処理を行いたいときに、ローカル変数が必要以上に増えてしまったり、入れ子が多くなり読みずらいなといった経験はありませんか?
このような問題をパイプライン演算子という演算子を用いれば、コードの読む順番を処理順にすることができ、可読性の向上が見込めます。
しかし、残念ながら、Swiftにパイプライン演算子は定義されていません。
定義されていないので、自作してみましょう!
さらに、オブジェクト指向プログラミングでよく用いられるメソッドチェーンとも比較し、それぞれのメリットとデメリットを紹介します。
こちらのトークが皆様の演算子の理解のきっかけになれば幸いです。