3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Swiftのhttp通信を勉強する

Posted at

#はじめに
iPadでプログラミングを楽しみたいなぁとおもって買ったのですが、swift PlayGroundで遊んで終わりだったので実際使いたいのでやってみました。

###使った環境

  • Swift PlayGround
    • Swift 5.1

###やったこと
前回記事ではC#でhttp通信を行いました。
最終目標はiPhoneiPadm5stackにアクセスできるようにしたいので、はじめにiPad単体でのhttp通信を勉強します。

#Swift playgroundsで試してみる
以下の記事のプログラムをそのまま実行してみたら出来たので、それを一つ一つ砕いて納得していきます。

[Swift 3.0] Playground で URLSession を使う
こちらを参考にさせて勉強させていただきました。ありがとうございます。

こちらのプログラムをSwift playgroundsのブランクプロジェクトでそのままコピペしたら動きましたのでこれを読み解いていきます。

プログラムでやってることは参考記事で書いているのでそちらをお読みください。
プログラムの中でよくわからなくて調べたことは以下です

  • importしているlibrary
  • 受け取っているデータ形式
  • inや`do catchなどの処理について

##importしているライブラリ

  • Foundation
  • PlaygroundSupport
    • 公式ドキュメントはこちら。ヒントとかリアルタイムコンパイルとかコンパイルエラー表示などを行なっているライブラリだそうです。
    • リアルタイムでコンパイルと実行を行うLive viewというのがあるらしく、これを動かすと非同期に対応しない様です。なのでneedsIndefiniteExecutionのオプションを変更して非同期を可能にしている様です。

##JSONデータ受け取り
URLSessionURLにアクセスしている様です。プログラムの動きからの予想ですが、URLSessionはデフォルトでGETメソッドを送る様子です。他はおそらく何も送ってないと思います。
その後のコードでJSONSerializationを使った関数を呼び出しているので受けとっているのはJSONのデータな様子です。
JSONSerializationのオプションallowFragmentsArrayDictionaryは禁止にしている様子ですが、このオプションは必須なのでしょうか?

###ところでJSONとはなんだ?

JSONの紹介
こちらに紹介されていました。

##Swiftで使っている構文

#まとめ
プログラムを読むだけで以下の事柄を調べることになりました。

  • Foundationライブラリ
  • PlaygroundSupportライブラリ
  • JSONデータ
  • in,if let,do (try) catch,クロージャ、デリゲート

http通信を勉強するだけの予定でしたが、現在使われている技術とSwiftで扱える構文、ライブラリを調べることでどうやって動いているかのイメージだけは掴めた気はします。
最後に、URLSessionのデフォルトの設定値が見当たらなかくてわからなかったです・・・

#感想
今回参考にしたプログラムですが、本元の記事だとサクッと作っている感じです。
実際こういうのをサクッと作れちゃう人たちは本当にすごいです。
いずれサクッと作れるようになりたいですが、何年かかるでしょうねぇ。とりあえず続けて行きたいです。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?