Androidはワンツーパンチ 三歩進んで二歩下がる

プログラミングやどうでもいい話

Appleの公式iOS Swiftチュートリアル「FoodTracker」をやってみた感想と勉強の動機

f:id:sakura_bird1:20171122230703p:plain:w200

なぜiOSの勉強をはじめたのか

ここ最近iOSのプログラミングの勉強をやっています。

元々Androidのアプリを開発してリリースしているアンドロイダーだったのですが
昨年からiPhone7をメインのスマフォにしてしまいました。

自分のアプリを使いたい時に、Android版しか存在しないため
サブ端末であるAndroid機をゴソゴソと取り出す日々に

この状況はおかしい

と苛立ちを感じました。

iPhone7は高かったし、まだまだ使うつもりなので状況を打破すべく
やっと重い腰を上げてiOSに取り組むことにしたのでした。

正直言いますと、Appleデベロッパー税が年間1万円以上かかったり
アプリ審査が厳しく、時にちゃんと審査してないんじゃねえか?疑惑の話を
耳に挟むことがありましたので、今まで腰が引けていました。

しかし、取り組むと決めたからにはアプリをリリース出来るよう頑張りたいです。

具体的にはWeb版→Android版とリリースしてきた
ポケット糖質量iOS版を作りたいです。

「ポケット糖質量」とは

糖質制限をしている方などを対象に、糖質量をリスト表示
検索出来るようにしたシンプルなアプリです。
データも手元で作成しており、Web検索するより効率よく糖質量を見ることが
出来るようになっています。

Web版「ポケット糖質量」Ruby on Railsで作りました。

www.pockettoushituryou.com


Android版「ポケット糖質量」Web版より使いやすいです(;^ω^)

play.google.com

Appleの公式iOSチュートリアル「FoodTracker」とは

Appleの公式iOSチュートリアル「FoodTracker」は↓ここ↓です。
developer.apple.com

Swift3(2017/11/22現在)を使って、
食品データ(食品名・画像・評価の★)をリスト表示、
詳細表示します。

データの追加・削除・更新も行います。

スマホアプリでは定番の処理なのですぐに役に立ちます。

f:id:sakura_bird1:20171122150551p:plain

学習者である私の現状

プログラミング経験

Android(Java)で開発経験ありですが、レベルは初中級ぐらいです。
英語は中学レベルの文章を読解出来るレベルです。
iOSは2年以上前に入門書をナナメ読みしたけど、全て忘れてしまったレベルです。

私の開発環境

Mac book pro Retina 15inch MID2015 メモリ16GB SSD512GB
Mac OS Sierra バージョン10.12.6

Xcode9.1
Swift3.2
Base SDK Latest(iOS 11.0)
iOS Deployment target iOS10.0

ソースコード

公式サイトには無いコードも入っています。
すぐ試せそうな処理を入れてみました。
アラートダイアログ、設定値などの永続化、画面の背景画像設定、スプラッシュ画面など
github.com

FoodTrackerで学んだこと

このチュートリアルで学んだことをざっと挙げますと以下のようになります。

Xcodeの使い方

プロジェクトの作り方
プロジェクト内の情報の見方
編集画面の切り替えや展開の仕方
ビルドや実行の仕方
ターゲットの端末でのプレビューの見方

storyboardを使ったUIの作り方

sceneに画面のパーツを配置する
inspectorで属性を指定する
Auto Layoutを使用しconstraintsでレイアウトに制約を指定する
StackViewで同じ方向にあるViewをグルーピングする
Navigation Barを使用する
Viewをソースコードに接続する
pushとmodalの画面の出し方の違いを理解する
セグエを使い画面遷移を行う

カスタムビューを作る

ソースコードから動的なViewを作る
storyboardにカスタムビューを表示する
InterfaceBuilderの機能を使用してアプリの実行をせずに表示確認する
asset catalogを利用してプロジェクトに画像を設置する

Controllerに処理を記述する

コントローラーのライフサイクルとコールバックを理解する
delegateメソッドの無いViewにTap Gesture Recognizerを利用する
Image Pickerを実装する
画面遷移した際にデータの変更が発生した時、遷移元の表示も変更する
データを永続化する

Accessibility

視覚障害などをサポートするアクセシビリティの情報の実装を行う

データモデルを実装する

データ構造を実装してデータの永続化や読み込みなどに使う

ユニットテストを実装する

XCTestフレームワークを利用する
データモデルのテストを実装

Swiftについて

Optional型の理解をする
guardを理解する

感想

簡潔でありながら大事な所は押さえてある良いチュートリアルだと思いました。

あくまでもアプリの作り方であって、Swift言語の説明はOptional型のところなど
を限定的に説明する程度でした。
言語仕様は別のところで覚えたほうがよいですね。

StoryBoardで画面を作っていく方法は独特で、チュートリアルでかなり
取り上げられていたのは良かったです。

たまに古いSwiftで書いてあるのか、コンパイルが通らない箇所がありました。
でもInterface Builderの接続が切れた?時の方がずっと訳わからなかったです。

英語は難しい表現は無いので、Google翻訳を併用すれば問題ないと思いました。
と、いいつつわからない箇所は日本語でググってQiitaとかを参考にしていました。
どんなに簡単なことでも、初学者にとっては情報を残していただけているという
ことはほんとに有難いことです。
情報を書いてくださってる方々、ありがとうございました!

今後ですが、

もうこういう公式チュートリアルって無いのでしょうかね(・・?
APIのリファレンス見ただけで実装出来る自信は無いんですが、
(実装出来たとしてもすごい時間かかりそう)
書籍を買った方がいいのかどうか、迷っています。

公式チュートリアルがSwift3なのにすでにSwift4が出てるんですが。。
書籍の陳腐化が激しいと聞いたことあるしどうしたものか。

とりあえず以下のことを知りたいと思っています。
しばらくはググってなんとかしてみようかな。
・複数の画面サイズに対応する良い方法
・CoreDataの使い方
・HTTP通信
・外部ライブラリの利用
・ローカルに保存したファイルの読み込み

以上です。





オンラインブートキャンプ 無料体験