#はじめに
iPad
でプログラミングを楽しみたいなぁとおもって買ったのですが、swift PlayGround
で遊んで終わりだったので実際使いたいのでやってみました。
###使った環境
-
Swift PlayGround
Swift 5.1
###やったこと
前回記事ではC#
でhttp通信を行いました。
最終目標はiPhone
かiPad
でm5stack
にアクセスできるようにしたいので、はじめにiPad
単体でのhttp通信を勉強します。
#Swift playgrounds
で試してみる
以下の記事のプログラムをそのまま実行してみたら出来たので、それを一つ一つ砕いて納得していきます。
[Swift 3.0] Playground で URLSession を使う
こちらを参考にさせて勉強させていただきました。ありがとうございます。
こちらのプログラムをSwift playgrounds
のブランクプロジェクトでそのままコピペしたら動きましたのでこれを読み解いていきます。
プログラムでやってることは参考記事で書いているのでそちらをお読みください。
プログラムの中でよくわからなくて調べたことは以下です
- importしているlibrary
- 受け取っているデータ形式
-
in
や`do catchなどの処理について
##import
しているライブラリ
-
Foundation
- 公式ドキュメント調べたらなんでも入ってた福袋みたいなやつ。基本ライブラリと考えて良さそう?
- サンプルプログラムでは
URL
,URLSession
,JSONSerialization
が使われてる
-
PlaygroundSupport
- 公式ドキュメントはこちら。ヒントとかリアルタイムコンパイルとかコンパイルエラー表示などを行なっているライブラリだそうです。
- リアルタイムでコンパイルと実行を行う
Live view
というのがあるらしく、これを動かすと非同期に対応しない様です。なのでneedsIndefiniteExecution
のオプションを変更して非同期を可能にしている様です。
##JSON
データ受け取り
URLSession
でURL
にアクセスしている様です。プログラムの動きからの予想ですが、URLSession
はデフォルトでGET
メソッドを送る様子です。他はおそらく何も送ってないと思います。
その後のコードでJSONSerialization
を使った関数を呼び出しているので受けとっているのはJSON
のデータな様子です。
JSONSerialization
のオプションallowFragments
でArray
とDictionary
は禁止にしている様子ですが、このオプションは必須なのでしょうか?
###ところでJSON
とはなんだ?
JSONの紹介
こちらに紹介されていました。
##Swift
で使っている構文
-
in
- Swift さくっと確認したい基礎文法 [クロージャ(closure)]こちらの記事に詳しく説明をありました。
- クロージャにする様です。クロージャってデリゲートのことかとおもったらデリゲートは別にある様です。
- 【swift】イラストで分かる!具体的なClosureの使い方。こちらにクロージャのイメージがイラストで載っていました。また、同じ記事でデリゲートの説明もあってイメージは掴みやす買ったです。絵が可愛いのは大事
-
if let
-
Swiftのif let って、つまり、何?こちらの記事が分かりやすかったです。
- サンプルプログラムでは、
JSON
データかどうかの判別に使っています。
- サンプルプログラムでは、
-
Swiftのif let って、つまり、何?こちらの記事が分かりやすかったです。
-
do (try) catch
- Swift 4.0 エラー処理入門こちらの記事に詳しく説明がありました。
-
JSONSerialization
からの返り値を確認するのに使っています
#まとめ
プログラムを読むだけで以下の事柄を調べることになりました。
-
Foundation
ライブラリ -
PlaygroundSupport
ライブラリ -
JSON
データ -
in
,if let
,do (try) catch
,クロージャ、デリゲート
http通信を勉強するだけの予定でしたが、現在使われている技術とSwift
で扱える構文、ライブラリを調べることでどうやって動いているかのイメージだけは掴めた気はします。
最後に、URLSession
のデフォルトの設定値が見当たらなかくてわからなかったです・・・
#感想
今回参考にしたプログラムですが、本元の記事だとサクッと作っている感じです。
実際こういうのをサクッと作れちゃう人たちは本当にすごいです。
いずれサクッと作れるようになりたいですが、何年かかるでしょうねぇ。とりあえず続けて行きたいです。