mecobalamin’s diary

人間万事塞翁が馬

https://help.hatenablog.com/entry/developer-option

iOSのショートカットでJSONファイルを使う

iOSのショートカットアプリでJSONファイルを使えたのでメモ

目的はショートカットアプリで
ポケモンの攻撃と防御の相性を表示すること
相性の組み合わせをJSONファイルに記録した
どっかのサイトを見ながら入力したので
間違っているところもあるかも

ちなみに公式のポケモンオンラインストアで定価は6,578円 (税込)

ここから本題

jsonとは
JavaScript Object Notation - Wikipedia
JSONとは | オラクル | Oracle 日本

大きくやることは2つ

  1. JSONファイルの作成
  2. ショートカットアプリの編集

作成したJSONファイルはpokemon.jsonとして
iCloud以下の/Shortcuts/pokemon/に保存した
ファイルの内容はこの記事の最後に掲載した

ショートカットアプリでやることは

  1. JSONファイルの読み込み
  2. ファイルから辞書を読み込み
  3. 辞書から選択肢を作成
  4. 選択した項目の値を取得
  5. 値からテキストを作成して表示する

ポイントは変数をマジック変数で取得すること
他の言語の感覚だと変数を用意して
代入して使用するが
マジック変数を使うと変数を定義しなくても
任意の場所に任意の変数を読み込める

これは視覚的にプログラミングできて便利

マジック変数は赤丸で
囲んだボタンを使って取得する

実際の作業はここから
ショートカットアプリの編集
1. JSONファイルの読み込み

JSONファイルのパスを設定する
サービスをiCloud
ファイルパスを/Shortcuts/pokemon/
ファイル名をpokemon.json
とした

2. ファイルから辞書を読み込み

アクションの検索から
"入力から辞書を取得"を選択
入力が"辞書"以外なら消去して
マジック変数を選択、
1.で読み込んだファイルを指定する

3. 辞書から選択肢を作成
アクションの検索から
"リストから選択"を選ぶ
入力が"辞書"以外なら消去して
マジック変数を使って
2.で取得した辞書を指定する

4. 選択した項目の値を取得

アクションの検索から
"辞書の値を取得"を選ぶ
入力はマジック変数を使って
3.で"辞書の値"を選び
キーに"こうかばつぐん"を入力する
同様に"こうかいまひとつ"、
"こうかなし"を入力したアクションも作成する

5. 値からテキストを作成して表示する

出力するテキストも
マジック変数を使って
4.で取得した辞書の値を選択する

実行するとJSONをもとに作られた
選択が表示される

技のタイプを選ぶと
技の相性のリストが表示される



アクションは以下のように使った






使用したjsonファイルは以下の通り
pokemon.json

{
  "ノーマル": {
    "攻撃": {
      "こうかばつぐん":["なし"],
      "こうかいまひとつ":["いわ", "はがね"],
      "こうかなし":["ゴースト"]
    },
    "防御": {
      "こうかばつぐん":["かくとう"],
      "こうかいまひとつ":["なし"],
      "こうかなし":["ゴースト"]
    }
  },
  "ほのお": {
    "攻撃": {
      "こうかばつぐん":["くさ", "こおり", "むし", "はがね"],
      "こうかいまひとつ":["ほのお", "みず", "いわ", "ドラゴン"],
      "こうかなし":["なし"]
    },
    "防御": {
      "こうかばつぐん":["みず", "じめん", "いわ"],
      "こうかいまひとつ":["ほのお", "くさ", "こおり", "むし", "はがね", "フェアリー"],
      "こうかなし":["なし"]
    }
  },
  "みず": {
    "攻撃": {
      "こうかばつぐん":["ほのお", "じめん", "いわ"],
      "こうかいまひとつ":["みず", "くさ", "ドラゴン"],
      "こうかなし":["なし"]
    },
    "防御": {
      "こうかばつぐん":["でんき", "くさ"],
      "こうかいまひとつ":["ほのお", "みず", "こおり", "はがね"],
      "こうかなし":["なし"]
    }
  },
  "くさ": {
    "攻撃": {
      "こうかばつぐん":["みず", "じめん", "いわ"],
      "こうかいまひとつ":["ほのお", "くさ", "どく", "ひこう", "むし", "ドラゴン", "はがね"],
      "こうかなし":["なし"]
    },
    "防御": {
      "こうかばつぐん":["ほのお", "こおり", "どく", "ひこう", "むし"],
      "こうかいまひとつ":["みず", "でんき", "くさ", "じめん"],
      "こうかなし":["なし"]
    }
  },
  "でんき": {
    "攻撃": {
      "こうかばつぐん":["みず", "ひこう"],
      "こうかいまひとつ":["でんき", "くさ", "ドラゴン"],
      "こうかなし":["じめん"]
    },
    "防御": {
      "こうかばつぐん":["じめん"],
      "こうかいまひとつ":["でんき", "ひこう", "はがね"],
      "こうかなし":["なし"]
    }
  },
  "こおり": {
    "攻撃": {
      "こうかばつぐん":["くさ", "じめん", "ひこう", "ドラゴン"],
      "こうかいまひとつ":["ほのお", "みず", "こおり", "はがね"],
      "こうかなし":["なし"]
    },
    "防御": {
      "こうかばつぐん":["ほのお", "かくとう", "いわ", "はがね"],
      "こうかいまひとつ":["こおり"],
      "こうかなし":["なし"]
    }
  },
  "かくとう": {
    "攻撃": {
      "こうかばつぐん":["ノーマル", "こおり", "いわ", "あく", "はがね"],
      "こうかいまひとつ":["どく", "ひこう", "エスパー", "むし", "フェアリー"],
      "こうかなし":["ゴースト"]
    },
    "防御": {
      "こうかばつぐん":["ひこう", "エスパー", "フェアリー"],
      "こうかいまひとつ":["むし", "いわ", "あく"],
      "こうかなし":["ゴースト"]
    }
  },
  "どく": {
    "攻撃": {
      "こうかばつぐん":["くさ", "フェアリー"],
      "こうかいまひとつ":["どく", "じめん", "いわ", "ゴースト"],
      "こうかなし":["はがね"]
    },
    "防御": {
      "こうかばつぐん":["じめん", "エスパー"],
      "こうかいまひとつ":["くさ", "かくとう", "どく", "むし", "フェアリー"],
      "こうかなし":["なし"]
    }
  },
  "じめん": {
    "攻撃": {
      "こうかばつぐん":["ほのお", "でんき", "どく", "いわ", "はがね"],
      "こうかいまひとつ":["くさ", "むし"],
      "こうかなし":["ひこう"]
    },
    "防御": {
      "こうかばつぐん":["みず", "じめん", "こおり"],
      "こうかいまひとつ":["どく", "いわ"],
      "こうかなし":["でんき"]
    }
  },
  "ひこう": {
    "攻撃": {
      "こうかばつぐん":["Glound", "かくとう", "むし"],
      "こうかいまひとつ":["でんき", "いわ", "はがね"],
      "こうかなし":["なし"]
    },
    "防御": {
      "こうかばつぐん":["でんき", "こおり", "いわ"],
      "こうかいまひとつ":["くさ", "かくとう", "むし"],
      "こうかなし":["じめん"]
    }
  },
  "エスパー": {
    "攻撃": {
      "こうかばつぐん":["かくとう", "どく"],
      "こうかいまひとつ":["エスパー", "はがね"],
      "こうかなし":["ゴースト"]
    },
    "防御": {
      "こうかばつぐん":["むし", "ゴースト", "あく"],
      "こうかいまひとつ":["かくとう", "エスパー"],
      "こうかなし":["なし"]
    }
  },
  "むし": {
    "攻撃": {
      "こうかばつぐん":["くさ", "エスパー", "ゴースト"],
      "こうかいまひとつ":["ほのお", "かくとう", "どく", "ひこう", "ゴースト", "はがね", "フェアリー"],
      "こうかなし":["なし"]
    },
    "防御": {
      "こうかばつぐん":["ほのお", "ひこう", "いわ"],
      "こうかいまひとつ":["くさ", "かくとう", "じめん"],
      "こうかなし":["なし"]
    }
  },
  "いわ": {
    "攻撃": {
      "こうかばつぐん":["ほのお", "こおり", "ひこう", "むし"],
      "こうかいまひとつ":["かくとう", "じめん", "はがね"],
      "こうかなし":["なし"]
    },
    "防御": {
      "こうかばつぐん":["みず", "くさ", "かくとう", "じめん", "はがね"],
      "こうかいまひとつ":["ノーマル", "ほのお", "どく", "ひこう"],
      "こうかなし":["なし"]
    }
  },
  "ゴースト": {
    "攻撃": {
      "こうかばつぐん":["エスパー", "ゴースト"],
      "こうかいまひとつ":["あく"],
      "こうかなし":["ノーマル"]
    },
    "防御": {
      "こうかばつぐん":["ゴースト", "あく"],
      "こうかいまひとつ":["どく", "むし"],
      "こうかなし":["ノーマル", "かくとう"]
    }
  },
  "ドラゴン": {
    "攻撃": {
      "こうかばつぐん":["ドラゴン"],
      "こうかいまひとつ":["はがね"],
      "こうかなし":["フェアリー"]
    },
    "防御": {
      "こうかばつぐん":["こおり", "ドラゴン", "フェアリー"],
      "こうかいまひとつ":["ほのお", "みず", "でんき", "くさ"],
      "こうかなし":["なし"]
    }
  },
  "あく": {
    "攻撃": {
      "こうかばつぐん":["エスパー", "ゴースト"],
      "こうかいまひとつ":["かくとう", "あく", "フェアリー"],
      "こうかなし":["なし"]
    },
    "防御": {
      "こうかばつぐん":["かくとう", "むし", "フェアリー"],
      "こうかいまひとつ":["ゴースト", "あく"],
      "こうかなし":["エスパー"]
    }
  },
  "はがね": {
    "攻撃": {
      "こうかばつぐん":["こおり", "いわ", "フェアリー"],
      "こうかいまひとつ":["ほのお", "みず", "でんき", "はがね"],
      "こうかなし":["なし"]
    },
    "防御": {
      "こうかばつぐん":["ほのお", "かくとう", "じめん"],
      "こうかいまひとつ":["ノーマル", "くさ", "こおり", "ひこう", "エスパー", "むし", "いわ", "ドラゴン", "はがね", "フェアリー"],
      "こうかなし":["どく"]
    }
  },
  "フェアリー": {
    "攻撃": {
      "こうかばつぐん":["かくとう", "ドラゴン", "あく"],
      "こうかいまひとつ":["ほのお", "どく", "はがね"],
      "こうかなし":["なし"]
    },
    "防御": {
      "こうかばつぐん":["どく", "はがね"],
      "こうかいまひとつ":["かくとう", "むし", "あく"],
      "こうかなし":["ドラゴン"]
    }
  }
}