何もやる気がなくのらりくらりと生きてきた人間
1社目(iOSエンジニア)を辞めて2年間ニートした
プライベートで技術を調べることがない(猛省)
操作感とかUI系はちょっと関心がある(勉強はしてない。感性。)
そろそろ本当に年齢やキャリアを考慮してプランを立てなくちゃいけないので、必要なことをちゃんと考えてみる。
・技術面(swift問わず)
・組織での立ち回り
-- 以下すごく大事 --
・足は引っ張りたくない
・仕事してる感は欲しい
・評価もされたい、お金欲しい
・頼られたい、かっこつけたい
アニメーションはアプリケーションのユーザー体験を向上させる重要な要素です。
iOS 17のSwiftUIでサポートされたKeyframe Animationを活用することで、高度で魅力的なアニメーションを効率的に実装できるようになりました。
本トークでは、以下の内容について説明します。
魅力的でインタラクティブなアニメーションを実現するための参考になれば幸いです。
皆さん、iPhoneのSpotlight機能をご存知ですか?
MacのSpotlight機能は多くの方が利用していますが、iPhoneにもSpotlight機能が存在します。
Spotlightを活用することでユーザーにとってアプリを見つけやすくすることができます。
そしてアプリの検索性を高めるために重要なのがCoreSpotlightとINAlternativeAppNameです。
例えば、レシピアプリを開発している場合、ユーザーが「美味しい料理」と検索することで、あなたのアプリがSpotlight上でヒットするように設定できます。
このトークでは以下の内容をカバーします:
このセッションを通じて、CoreSpotlightとINAlternativeAppNameを駆使し、皆さんのアプリをより多くのユーザーに届けましょう!
SwiftUIが発表されてから早5年が経ちました。皆さんのプロダクトにもSwiftUIが採用されているのではないでしょうか。
我々は2年前から、SwiftUIを用いて図形描画や画面に直接触れて文字を書くといった機能を実装してきました。
これらの機能は、ユーザーインターフェースの向上や特定のアプリケーションでの必須機能として求められているからです。
本LTでは、SwiftUIを使った図形や文字の描画を実装する際の勘所をメインにお話しします。特に、以下のトピックに焦点を当てます。
・図形描画の際に直面した技術的な工夫
・画面に直接文字を書く際の工夫
これらのトピックを通じて、皆さんがSwiftUIでお絵描きするのって簡単なんだと感じてもらえれば、嬉しい限りです。
SwiftUIが登場して早くも5年が経ち、今や多くのプロジェクトでSwiftUIの導入が進められています。
しかし同時に多くの開発者がSwiftUIの限界を目の当たりにし、「このViewを簡潔にSwiftUIで作るのは難しい…」、「UIKitを使わないと作れない…」と嘆いてきました。
本セッションでは5年の月日を経て進化したSwiftUIの機能を紹介します。
そして、以前はUIKitの力を頼りつつ苦労していたが現在では新機能を使って楽に実装できるようになったViewの作成事例を紹介していきます。
皆様のプロジェクトのViewの見直しやリファクタリングに役立てば幸いです。
アプリ内でDrag & Dropは活用していますか?
Drag & Dropとは、コンテンツをある場所から別の場所にドラッグして移動したり複製したりする手段です。アプリ内である部分から別の部分へ、またはアプリから別のアプリへ転送することが可能です。
SwiftUI登場時点でDrag & Dropの実装はできましたが、カスタムタイプのコンテンツだと転送処理が複雑になるという課題がありました。しかし、iOS16から導入されたTransferableプロトコルを用いると簡単に実装できるようになります。
本トークでは以下の内容を解説します。
参加者の皆様が、Drag & Dropのプラクティスや実装の理解の手助けになることを目指します!
SPIDERPLUSは、外部機器で検査結果を計測する機能があります。
外部機器との接続にはBluetoothを利用しており、ハマりポイントなどを紹介します。
ある日、「UIは同じで、APIの向き先・アプリ内で使用するリソース・アプリの名前・BundleID等だけを変えたアプリをいくつか作りたい」といった要望が社内で上がりました。
同じようなUIなのに別々にアプリを作り、それを一つずつ運用していくのって面倒ですよね。
Targetで分けるにしても、xcodeprojファイルをレビューする必要が出てきて同じく面倒ですよね。
そんな課題をXcodeGenを用いて解決した(swiftファイルは共通で、makeコマンドで各アプリごとのプロジェクトファイルを作成し、必要な値を全て切り替わるように対応した)内容になります。
また、アプリ完成後の運用方法についても触れようと思います。
トークの構成としては、以下を想定しております。
みなさんは、業務の効率化のためにちょっとしたツールを探していたのに、時間だけが過ぎてしまったという経験はありませんか?
また、やっと見つけても会社のMacに入れるには手続きが必要で、簡単には入れられなかったというような経験はありませんか?
そんな時は思い切って、自分でツールを作ってみてはいかがでしょうか!
普段iOSアプリを開発している方であれば、SwiftUIを使って簡単にmacOSアプリを開発することができます。
このトークでは、私が実際に業務改善のために開発したmacOSアプリを例に、開発の手順やiOSとの違いを詳しく紹介します。
業務改善ツールを開発しながら、macOSアプリについて知識を深めていきましょう!
トークの構成として以下を考えております。
自己紹介
業務未経験からiOSエンジニアになるために取り組んだこと
iOSエンジニアとして業務で取り組んだこと、業務外で取り組んだこと
リードエンジニアにアサインされた現在から振り返って
画面を作る上での典型的なシナリオとして、ネットワークからデータを読み込み、それを表示するというものがあります。このシナリオでは、データの読み込み中、エラー処理、正常系など、多くのパターンを網羅する必要があり、しっかり作り込むのは意外と難しいものです。
皆さんも、ひとまず正常系だけを作って、他の部分は後回しにしようと考えたことがあるでしょう。しかし、その結果、後からエラー処理などを追加するのを忘れてしまったり、大変な思いをした経験はありませんか?
本セッションでは、正常系に注力するために、非同期に取得する値を扱う型とそれを表示するViewを整理しました。具体的には、非同期に取得する値を扱う画面の状態を整理し、そのための値型と、それをSwiftUIでどのように扱うかを紹介します。
みなさん麻雀は好きですか?僕は今めちゃくちゃに麻雀にハマっています!
麻雀は配られた手札の入れ替えを繰り返すことで役を作り点数を競うゲームです。
その腕を磨く手段として、手札の組み合わせ(牌姿)からどれを入れ替えるかを検討する「何切る問題」というものがあります。
「何切る問題」をこなすことで日々麻雀プレイヤーは雀力の向上を図っており、僕もその中の一人です。
そんな趣味が高じて牌姿の入力をサポートするアプリを作るようになりました。
今回のトークではその開発で得た知見と麻雀というゲームの素晴らしさをみなさんに共有します。
話す内容:
これらの内容から麻雀にまつわる開発の知見、ひいては趣味から始めるアプリ開発の面白さを伝えます。
現在弊社で進めているSwift 6の対応において、Strict Concurrency Checking(厳密な並行性チェック)についてお話します。特に、弊社がCompleteモードでこの機能に対応している過程で直面した課題とその解決策に焦点を当てます。
まず、Completeモードを有効にしたことでアプリにどのような影響があったのかを詳しく説明します。そして、今後どのように対応を進めていくかについても触れます。
具体的な内容としては、以下のポイントについて詳細に解説します:
・ 非同期処理で利用しているCombineフレームワークのSendable対応
・ Singletonで利用しているクラスのActor化
・ モデル層でDevice情報を取得するために使用しているUIDeviceなどの取得方法の設計見直し
これらの具体例を通じて、Completeモードへのアプローチ方法やその効果、課題について共有します。これにより、他の開発者の皆様がSwift 6への移行をスムーズに進めるための参考になれば幸いです。
このLTでは、最低サポートOSをiOS15からiOS16に上げることで、アプリ開発にどれぐらいのインパクトがあるのかを説明します。
目次:
このトークがiOS15のサポートを切るか悩んでいる開発者の判断材料として役立つことができれば幸いです。
昨年11月、OpenAIはGPTsを発表しました。この機能により、ユーザーは特定のタスクを実行するためのカスタムGPTを作成できるようになりました。
例えば、Appleの公式ドキュメント2万ページを基に、SwiftUIに関する質問に回答するGPTsが作成されています。
さらに、OpenAIはGPTsの開発者に収益を分配するプログラムを開始予定であるとアナウンスしています。
これにより、さらに多くの開発者がGPTsの開発に取り組むようになるでしょう。
著者は、個人でGPTsを開発し、GPTストアで公開した経験があります。本トークでは、この経験を基に、GPTsの開発方法を前提知識なしに解説します。
具体的には、APIリクエストをおこなうアクションを登録し、GPTsを外部サービスと連携させる方法を述べます。
さらに、GPTストアに公開する際の注意点(実名を公開しない方法やJailbreakingへの対策など)についてもフォローします。
本トークを聞くことで、自分のアイデアをGPTsとして形にする方法を学ぶことができます。
あなたがオリジナルのGPTsを開発し、世界へと公開するきっかけになれば幸いです。
Swift Playgroundsは、iPadで動作する開発環境です。MacやXcodeを使わずにiPadで開発できるため、iOSエンジニア以外の人でも手軽にiOS開発に挑戦できます。このトークでは、DevRelである私が初めてのiOSアプリとしてごくシンプルなお絵描き練習ゲームを開発した学びを紹介します!
開発したアプリは、絵の定番の基礎練習である「正確な円を描くこと」をスコア化するゲームです。
このLTにより、人事や広報など非エンジニアのiOSDC参加者がアプリ開発に挑戦する助けになれば良いなと思います。またSwift Playgroundsを使ったことがないiOSエンジニアの方にも新たな発見と気付きになることを期待しています!
WWDCはいつから始まったか知っていますか?
2010年…?2000年…?いえ、実はWWDCの始まりは1990年代まで遡ります。もっと言えばその前身となるイベントは更に昔から開催されています。
WWDCの公式サイトはその年のものに更新されていくため、10年前や20年前の情報はもちろん、30年前の1990年代の情報なんてそう簡単に得られるものではありません。
今回私は可能な限り、創設当時のWWDCや、その前身となるイベントについて調べてみました。
私たちはその年のWWDCの情報を追いかけることが多いですが、一度昔のWWDCを覗いてみませんか?
このトークは以下について話します。
WWDCは毎年最新の情報を得る機会となるため、今や私たちのプロダクトを成長させるためには必要不可欠なイベントとなりました。このトークを通じてその歴史を探る旅へ出ませんか?
USキーボードを使っていると左右の⌘キーを使って英数入力とかな入力を切り替えたくなることが多いと思います。この機能を実現するためのアプリは既に存在しますが、このLTでは、私が行った再発明を通じて学んだ、iOS開発においてあまり触れる機会のないSwiftUIやAppKitの機能、そして開発中に直面した課題について紹介します。
発表に含まれる内容:
RealityKitはiOSやvisionOS向けのARアプリケーションを開発するための強力なフレームワークです。
これを用いることで、任意のオブジェクトを現実世界に呼び出すことが簡単に実現可能です。
では移動や回転(Transform)はどうでしょうか?
並行移動や単純な回転をさせることは簡単です。しかし、少し複雑な挙動をさせようとすると途端に難しくなります。
私の場合、「オブジェクトの向きをカメラに追従させる」機能を実装する際に沼にハマり、これを解決するためにオイラー角や行列を使った計算が必要でした。
このようにRealityKitを扱う際にはオイラー角や行列、ワールド座標にローカル座標など、普段の開発ではあまり見慣れない概念を適切に扱う必要がありますが、これらの概念を理解し、コツを知ることで、実は簡単に扱えるようになります。
本LTでは、この「オブジェクトの向きをカメラに追従させる」という具体的なユースケースを例に、一見難しく見えるオイラー角や行列を使ったオブジェクトのTransformを、簡単に考え・実装する方法を5分間でお伝えします!
皆さんはプログラミングやiOSアプリ開発をどのように習得しましたか?
私は、頼れる人が周りにいない状況で、独学でプログラミングとiOSアプリ開発を学んできました。
このセッションでは、iOSアプリ開発を始めた理由から、当時のメモやソースコード、開発したアプリを紹介しながら、技術習得のための取り組みや歩み等をお話しします。また、独学での学習を続けるためのメンタル管理の方法等についても共有します。
具体的なトピックは以下の通りです。