結論
私がSwift・iOSを選んだ理由は、通知やセンサーなど、デバイスとOSの機能を生かしてユーザーの行動を支援するプロダクトを開発したいからです。
エンジニアへの転職だけを目的とするのであれば、求人数や学習環境の多いWeb開発を選ぶ考え方もあります。私自身も過去にWeb開発を学び、その配布の容易さ、対応端末の広さ、更新の速さに魅力を感じています。
一方で、技術は作りたいものを実現するための手段です。就職しやすさだけを基準に分野を選ぶと、エンジニアになること自体が目的になりかねません。そこで、自分が長期的に取り組みたい課題と、必要な技術を整理した結果、iOSを専門領域として選びました。
Webではなくネイティブアプリを選んだ理由
私が作りたいのは、情報を表示するだけでなく、ユーザーの状況に応じて働きかけ、日常の行動を支援するプロダクトです。
ネイティブアプリでは、次のようなOS・デバイスの機能を利用できます。
- 通知による適切なタイミングでの情報提供
- センサーやヘルスケアデータを用いた状況の把握
- ウィジェットやApp Intentsによる操作負担の軽減
- Apple Watchなど、スマートフォン以外のデバイスとの連携
- OSに統合された一貫性のある操作体験
これらを組み合わせることで、ユーザーが毎回アプリを開いて判断・操作しなくても、必要な支援を提供できます。
ただし、ユーザーへ能動的に働きかけられることには責任も伴います。利用時間や再訪を増やすこと自体を目的にするのではなく、通知やデータをユーザー自身の目的達成に利用し、認知負荷や選択コストを減らす設計を重視したいと考えています。
iOSを選んだ理由
ネイティブアプリの中でiOSを選んだ理由は、Appleのプラットフォームへの長期的な関心と、その設計方針への共感です。
中学生の頃に自分のお年玉でiPod touchを購入し、MacBook Pro Retinaが登場した2012年頃からWWDCを継続して見てきました。また、Appleの製品だけでなく、スティーブ・ジョブズ、ティム・クック、ジョナサン・アイブなどに関する書籍を通じて、製品開発の考え方にも関心を持ってきました。
特に共感しているのは、次の点です。
- デバイス間・OS間で一貫した体験を提供すること
- ハードウェアとソフトウェアを統合して設計すること
- プライバシーとアクセシビリティを製品の要件として扱うこと
これは単にApple製品を利用してきたという理由だけではありません。自分自身が日常で感じた課題は、同じ状況にある他のユーザーにも共通する可能性があります。自分が利用者として理解しているプラットフォーム上で、その課題を検証し、解決策をプロダクトとして提供したいと考えています。
Swift・SwiftUIを選んだ理由
Swiftは、Appleプラットフォーム向けのアプリを開発する上で、各フレームワークとの親和性が高い標準的な選択肢です。
言語単体の優劣からSwiftを選んだわけではありません。RubyやJavaScriptに触れた経験もありますが、実現したいプロダクトをAppleのOS機能と密接に連携させるという目的から、Swiftを選ぶことが最も合理的だと判断しました。
UIフレームワークはSwiftUIを主軸にしています。理由は次のとおりです。
- UIと状態の関係をコードで表現できる
- ViewやModifierを再利用しやすい
- UIをGitで管理し、変更履歴を追跡できる
- iOS、iPadOS、macOS、watchOS、visionOSへの展開を考えやすい
- Dynamic Typeやダークモードなど、OSの機能へ対応しやすい
UIKitには、既存アプリの保守や高度なカスタマイズ、SwiftUIで不足する機能を補う役割があり、iOS開発に必要な技術だと認識しています。その上で、今後のAppleプラットフォームを横断した開発を見据え、まずはSwiftUIを軸に専門性を高めたいと考えています。
個人開発による検証
選択理由を考えるだけで終わらせず、Swift・SwiftUIを学び、iOSアプリ「Re:Mind ランダムリマインダー」をApp Storeで公開しました。
Re:Mindは、日常の忙しさの中で忘れがちな言葉や考えを、ランダムな通知によって思い出すためのアプリです。通知内容を毎回選ぶ必要をなくし、少ない操作で利用できるようにしています。
開発では、SwiftUIによるリスト・設定画面の構築、Dynamic Typeとダークモードへの対応、SwiftDataとCloudKitによる端末間同期、ローカル通知の予約処理などを実装しました。企画からApp Store公開まで経験したことで、OS機能と複数のAppleデバイスを連携させる開発が、自分の作りたいプロダクトと一致していることを確認できました。
制約を理解した上での選択
iOS開発には、未経験者向け求人の少なさ、App Storeの審査、Appleのプラットフォーム方針への依存、AndroidやWindowsへそのまま展開できないことなどの制約があります。
それでもiOSを選んだのは、長期的に学習と開発を続けるには、自分の価値観と作りたいプロダクトに合う分野を選ぶことが重要だと判断したためです。Appleプラットフォームへの関心は学生時代から継続しており、現在は個人開発とApp Store公開という行動にもつながっています。
今後もSwift・SwiftUIを軸としながら、プロダクトに必要であればWebやバックエンド、CI/CDなどの周辺技術も学びます。また、Apple Watch、macOS、visionOSなどへの展開にも関心があります。
Swift・iOSは、転職手段としてなんとなく選んだ領域ではありません。作りたいプロダクト、長期的な関心、技術上の特性、制約を比較した上で選択した専門領域です。