はじめに
iPadでプログラミングを楽しみたいなぁとおもって買ったのですが、swift PlayGroundで遊んで終わりだったので実際使いたいのでやってみました。
使った環境
-
Swift PlayGroundSwift 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のデフォルトの設定値が見当たらなかくてわからなかったです・・・
感想
今回参考にしたプログラムですが、本元の記事だとサクッと作っている感じです。
実際こういうのをサクッと作れちゃう人たちは本当にすごいです。
いずれサクッと作れるようになりたいですが、何年かかるでしょうねぇ。とりあえず続けて行きたいです。