0
0

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 1 year has passed since last update.

今更ながらWhileについて考えてみよう

Posted at

今更ながらWhileを久しぶりに触りました。
なんかヘルプをみててもパッとしないんですよね。
なので、備忘録として書いておきます。

今回は、APIのZipcloudを使って、郵便番号から住所を取得する想定をしてやっていきまーす。

Whileの説明。(T_Tわかんねー...)
嚙み砕いていうと計算式のLOOP処理ですね。

そもそもZipcloudについて

(例)郵便番号「7830060」で検索する場合
https://zipcloud.ibsnet.co.jp/api/search?zipcode=7830060

このようにハイフンなしで郵便番号を送るとJSON形式で回答がもらえます。
レスポンスサンプルには下記が書いてあります。

{
	"message": null,
	"results": [
		{
			"address1": "北海道",
			"address2": "美唄市",
			"address3": "上美唄町協和",
			"kana1": "ホッカイドウ",
			"kana2": "ビバイシ",
			"kana3": "カミビバイチョウキョウワ",
			"prefcode": "1",
			"zipcode": "0790177"
		},
		{
			"address1": "北海道",
			"address2": "美唄市",
			"address3": "上美唄町南",
			"kana1": "ホッカイドウ",
			"kana2": "ビバイシ",
			"kana3": "カミビバイチョウミナミ",
			"prefcode": "1",
			"zipcode": "0790177"
		}
	],
	"status": 200
}

とりあえずFileMakerからAPIをたたいてみます。

変数を設定[$URL;
値:"https://zipcloud.ibsnet.co.jp/api/search?zipcode=7830060"

URLから挿入[選択;ダイアログあり:オフ;ターゲット:$Result;URL]

変数を設定[$Result;
JSONFormatElements ( JSONGetElement ( $Result ; "results[0]" ) )]

ここまで回すと

{
	"address1" : "高知県",
	"address2" : "南国市",
	"address3" : "蛍が丘",
	"kana1" : "コウチケン",
	"kana2" : "ナンコクシ",
	"kana3" : "ホタルガオカ",
	"prefcode" : "39",
	"zipcode" : "7830060"
}

こんな感じになっているはず。

これをJSONGetで一個ずつ取り出してもいいわけです。
けどスマートなのでしょうか...
なので私は無意味にWhileを使うわけです。
address1address2address3と規則が決まっているので、
123の順番で取れたらいいわけで。

先ほどの
Whileの説明。

構文
While ([初期変数] ; 条件 ; [ロジック] ; 結果)

初期変数 - 以降の引数に使用できる変数の定義
条件 - 各ループの繰り返しの前に評価される論理式。真の間はループが繰り返されます。偽になるとループは停止します。
ロジック - ループが繰り返されるごとに評価される変数の定義
結果 - ループが停止したときに返される式

ほおほおほお?

While ( 
[ 
  lst = $Result ; //JSONの中身
  tar = "address" ; //ターゲットの名称
  i   = 1 ; //繰り返ししたいi
  add = ""  //格納されるやつ
] ;
  i < 4 ;
[
  add = add & JSONGetElement ( lst ; tar & i ) ;
  i   = i + 1 
 ] ;
  add
 )

こんな感じかな?

見事に"高知県南国市蛍が丘"が取れました。
ありがとうWhile!!

高知県南国市蛍が丘てどこ???

Whileって便利だけど人選びそう。
もう少しヘルプも見やすくなったらいいのに。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?