iOSアプリ開発体験記(5) - 私のコーディング・ルーティン
本格的にSwiftUIのコーディングを始めていきます。
まずは最初の目標として、前回記事「iOSアプリ開発の心得(4) - コーディングは怖くない」で想定した画面の実装を目指します。
ちなみに「コーディング・ルーティン」という言葉は、コーディングを進める工程というか手順を指すもので、正式な専門用語ではなく便宜上私が命名しました(^^)
その手法は以下の通りです。
(1)取りかかる画面を決める
ユーザーの立場にたって、どのような順序で画面を表示するか考えます。
設計段階の「ikitell Alarm」では、表示頻度も考慮して下記の通りの優先度とします。
- アラーム設定画面
- アラーム停止画面
- アプリ設定画面
- 見守り管理画面
この画面選定はコーディング前にすべての優先度を決めるものではなく、次に取りかかる画面を都度決める方がおすすめです。
というのも、コーディング中にも仕様が変わることがあり、その結果優先度も入れ替わる可能性が高いからです。
まずは一つの画面を完成させて(というか、シュミレーターで確認できる程度に形を整えて)、最新の状態を元に次の画面を決めたほうが効率的でした。
例えば、コーディング前は使用頻度を考えて「アプリ設定画面」よりも「見守り管理画面」を優先しようと思いましたが、コーディングが進むにつれて仕様頻度より実装スピードを優先した方が効率的だと考えるようになり、「アラーム停止画面」が終わった段階で、アプリ設定画面の方を先に終わらせようと思った次第です。
(2)サンプルソースを探す
私はコーディングしながら勉強するスタンスですので、最初はどうやってコードを書けばよいのかすらわかりません(^^;)
そこで、最初はネット上にあるサンプルソースを探してみて、それを動かすことから始めます。
SwiftUIもPHPやJavaScriptと同じで英語ベースなので、ある程度読むことができます。他言語との違いは関数や文法なので、それをサンプルソースで勉強する感じです。
「あ、IF文はこうやって書くのか」とか、
「こういう宣言をしないといけないのか」とか、
色々と合点がいくようになります。
その上で、初見の関数や文法は、改めて検索します。
そうやって、SwiftUIに関する知識を貯めていくわけです。
そんなわけですので、最初のコーディングはかなり難航します。
一歩ずつ調べながらコードを書いていくので、なかなか進みませんが、それを乗り越えて最初の画面が完成すると、モチベーションが一気に上がります。
そして、コーディングのスピードも徐々に早くなっていきます。
(3)困った時のChatGPT
以前はAIなどなかったので、地道にネット検索をしていました。1ヶ月で2000サイトを巡って情報を集めたりしたものですが、今回iOSアプリに手を出した際は、chatGPTというツールのおかげでずいぶん助かりました。
chatGPTに「こういうことがしたい」と入力すると、サンプルソースも含めた回答をしてくれます。
もちろんすべてそのまま使えるということありませんが、最初の取っかかりにはなります。
一番の利点は、SwiftUIの関数を提示してくれることです。
PHPの関数なら、「こういう処理の時はこの関数を使う」とわかりますが、SwiftUIではどんな関数があるのかすらわからないので、関数を提示してくれるのはとてもありがたいです。
そこで、まずはchatGPTが提示したソースをシュミレーターでテストして、その上で自分が思い描く形にカスタマイズする手法も有益です。
(4)動作テスト
上記の段取りで1部品ずつコツコツと作っていき、1部品を完成させてはシュミレーターでテストします。けして1画面完成するまでテストを先延ばしにしてはいけません。
それがたとえ1行の文字列だとしても、コーディングした後はシュミレーターで動作テストすることをお勧めします。
というのも、無意識に作業をしているとテストのタイミングを間違えてしまい、予想以上に前へ戻ってコーディングし直すことになってしまいます。
私の経験では、自作のTimePickerに専念するあまり、他の部品との整合性を考えずに作業を進めてしまい、自分の思い通りのものができたと思ってテストしてみると、実装したTimePickerでは必要な値が返ってこないなどの不具合が起き、結局TimePickerの仕様を変更しないといけないことになりました。
ところが、ただの仕様変更ならそれほど難しくないのですが、表示の仕方まで変わってしまうので、画面全体のデザインを考え直さなければならなくなりました。
以上に掲げた(1)から(4)を一つのルーティンとして、地道にコーディングを進めていくと、すべての画面が完成した頃には、SwiftUIに対する自信が少しは芽生えると思います。
おまけ(私が頼りにしたサイト)
私がアプリ開発中にお世話になったサイトです。
サイト名 | 解説 |
---|---|
Apple公式のSwiftUIドキュメント | 基本中の基本。英語ページですが、chromeのページ翻訳機能で容易に日本語化できます。 |
stackoverflow | Yahoo知恵袋みたいに、質問と回答が投稿されているフォーラムです。グーグル検索で関数名を検索したり、ちょっとした英文(例えば「◯◯◯ not working」のように検索すると、大抵ヒットします。注意点はなるべく最新の質問や回答を参考にしてください。古いと現行のXcodeやSwiftでは動かないので。 |
Swiftの日付関連についてまとめてみる | 大抵のアプリでは避けて通れない日付関連処理の際に大活躍しました。サンプル豊富 |
【Swift】Dateの王道 【日付】 | こちらも日付関連ですが、主に仕様や取り扱い方法に関する情報を記載しています。 |
Discussion