福野泰介の一日一創 - create every day

5分でできるオリジナル鯖江PM2.5濃度表示iPhoneアプリ / Swift2入門

2015/11/17
#KidsIT #opendata #swift 

福大のキャリア教育の講義で紹介したステキな格言「犬も歩けば棒に当たる
何かおもしろいものを創ったら、もしくは、何か行き詰まったら、知らない世界へでかけてみましょう。
犬さえ当たる棒、人ならもっとすごいものに当たるはず!


学生からの質問、スマホアプリの上達のコツ、回答はただ一つ「たくさんつくること」

オープンデータに関心持ってくれてうれしかったので、鯖江市PM2.5濃度の勝手オープンデータを使ったアプリのつくり方を紹介します。 Macさえあれば、Xcodeのインストールを除けば、つくる作業は5分もかかりません。


1. Xcode, File, New, Project
2. iOS, Applictaion, Single View Application
3. Project Name "SabaePM25"
4. Main.storyboard, 右下の部品いろいろから Label を設置

左上の再生ボタンを押すと実行され、ラベル付きのシミュレーター上でアプリが動きます。


5. 右上アシスタントエディターに切り替え
6. Labelを右クリック、New Referecing Outlet の右側をViewController.swift内へドラグアンドドロップし、pm25と名付ける
7. viewDidLoad() 内、super.viewDidLoad() 後に pm25.text = "-umg/m3" と追加

ラベルをプログラムで書き換えられるようになりました。

8. 更に下記を続ける

if let url = NSURL(string: "http://sabae.club/pm25/1/fukui/sabae.txt") { let session = NSURLSession.sharedSession() let task = session.dataTaskWithURL(url, completionHandler: { (data, response, error) in if let ns = NSString(data: data!, encoding: NSUTF8StringEncoding) { var s = String(ns) s = s.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) // trim dispatch_async(dispatch_get_main_queue()) { self.pm25.text = s + "μg/m3"; } } }) task.resume() }

警告機用につくった簡易WebAPIで鯖江のPM2.5の値を取得して、ラベルpm25に設定しています。

9. HTTP通信できるように設定する
iOS9よりHTTPSではない通信は遮断されてしまいます。回避するために下記のように設定します。
左のプロジェクト、Supporting Files > info.plist
App Transport Security Settings (Dictionary) を追加、
その子要素に、Exception Domains (Dictionary) を追加、
さらにその子要素に、ドメイン名 sabae.club (Dictionary) を追加、
ドメインの子要素として、NSExceptionAllowsInsecureHTTPLoads (Boolean) を追加し、YES に設定

10. できあがり!後は好きな様に飾り付けましょう!

今回参考にしたのは、PCN大阪のメンバー森巧尚さんによるSwift本です。
Amazon.co.jp: Swiftではじめる iPhoneアプリ開発の教科書 【Swift 2&Xcode 7対応】【特典PDF付き】 (教科書シリーズ): 森 巧尚: 本

今回のポイントは、completionHandlerが通信が終了しだい実行されることと、dispatch_asyncを使って通信スレッドからラベルを操作できるメインスレッドに処理を渡しているところです。 きちんと理解するには、コンピューターのハードウェアやOSなどがどう作られているかの知識が必要です。

ひとまずありのままに受け入れ、推測でどんどん進めるか、シンプルな環境IchigoJamで基礎からやるか、どちらが良いかは本人次第、一概にどれが良いとは言えません。 大事なのは、続けられること。宝くじの当選確率は、買う枚数と比例します。

楽しく続けられるコトがあれば、チャンスをつかむ確率は大幅にアップします。
プログラミングは、パソコンさえあれば無限にトライできる最高の環境、活用しましょう!

Swift2入門
- 5分でできるオリジナル鯖江PM2.5濃度表示iPhoneアプリ
- 5分でできるオリジナル鯖江論手川排水機場水位表示iPhoneアプリ

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image