スタッフブログ Staff Blog

私のiOSアプリ開発学習法

新規プロジェクトの遂行にあたり、iOSアプリ開発について学習することになりました。全く未知の分野で最初はかなり戸惑いもありましたが、2ヶ月経った今は戸惑いもなくなり、インターネット上の豊富な情報に助けられながらも思ったアプリを作る事ができるようになってきました。(ポケモンGoのようなゲームアプリは無理ですが...)

そこで、今日は私のiOSアプリ学習法についてご紹介したいと思います。

書籍を読む

知識ゼロからAppleのサイトを見て...、というのはさすがにハードルが高すぎます。iOSアプリに詳しい方に2冊の本をご紹介頂いたのですが、その内の「本気ではじめるiPhoneアプリ作り 黒帯エンジニアがしっかり教える基本テクニック ヤフー黒帯シリーズ」をじっくりと読みました。

この書籍はSwiftの文法から始まり、電卓アプリを通じて画面の作成と画面間の値の受け渡し方法、永続的なデータの扱い方、通信を伴うMaster-Detail構成のアプリ作成と、アプリに必要な事項を体系的に学ぶことができました。紙面も見やすく、iOSアプリ開発で最初に読む本としては私の中で最もおすすめの一冊です。

オリジナルのアプリを作ってみる

書籍を読みつつサンプルとして紹介されていた電卓アプリにメモリ機能を付けるなどのカスタマイズをしていましたが、ある程度読んだところでオリジナルのアプリを作ってみることにしました。何かいい題材がないかと思案したのですが、「東京メトロオープンデータ」を利用して時刻表アプリを作りました。UITableViewで路線と行先を選ぶと時刻表が一覧表示されるというものです。

時刻表アプリの作成ではYamlデータをロードする必要が出たので、外部ライブラリ(最初はCarthage、現在はCocoaPodsを利用)の利用のしかたを覚えました。

また、Yamlを扱う際に始めは「DictionaryではなくYamlだ」という趣旨のエラーに頻繁に遭遇しました。どの言語を書く場合でも「型」について意識していたものの、Swiftではしばらく戸惑うことが多かったです。

書籍では扱われていなかった事柄に触れることができ、勉強には良い題材を選んだなと感じました。

オプショナル型はひとまず!で逃げた

Swiftを書いていて最初にハマるのがオプショナル型ではないかと思います。自分でコードを書いているとよく分からず、ひとまず!で逃げていました。(ここで躓いたままだと学習がまったく面白くないので...。)ただその場合も「本当に!ばかり書いていて良いのだろうか?」という意識は持ち続けるようにしました。

現在では!は必要最小限になり、nilが入ってアプリが落ちる、ということもなくなってきました。

Master-Detail型のアプリをじっくり作り込む

次に、普段Movable Typeを利用していることから、MTのData APIを利用してMaster-Detail型(+モーダル表示のオプション画面)のアプリを作り始めました。

この題材ではHTTPリクエストを出してデータを受信したらUITableViewに表示する、画面を引き下げると記事一覧の内容をリフレッシュする、WKWebViewで記事ページを表示する、など多彩な要素が現れました。画面も本格的なアプリのようになってきます。

このタイミングでDeveloper Programにも加入し、Push通知の送受信もトライしてみました。ここまで来ると制作の難易度は日々高くなりますが、アプリ制作の楽しさも日々感じるようになってきました。

まとめ

  • 最初は書籍を見ながらゆっくりとコードを写して動かしてみる
  • 書籍のコードをオリジナルのアイデアで少し改造してみる(本に書いてある内容で実現できるぐらいのもの)
  • Master-Detail型(+モーダル表示のオプション画面)をじっくり作り込んでみる

最初は壁が高く感じるかもしれませんが、頑張って最初の山を越えてみましょう。少し視界が開けた気分になると良いですね。また「iOSが好き」というのも大きな原動力になるでしょう。

セミナー登壇のお知らせ

このiOS向けネイティブアプリ制作がきっかけで、「アクセシビリティやるぞ!夏祭り2 ~俺たちにテストさせろスペシャル~ 」のセッション2「俺たちにテストさせろ!スマホアプリのユーザーテスト生実況!」に登壇させて頂くことになりました。

ネイティブアプリのアクセシビリティに関するセミナー、また実際に障害当事者の方がアプリを利用している様子を見ることができるセミナーは珍しいと思います。ネイティブアプリのアクセシビリティ向上に少しでも貢献できたら、と考えながら準備を進めているところです。

お問い合わせ Contact

制作のご依頼、ご相談などは下記のフォームからご連絡ください。