【Choregraphe】『型:ダイナミック』で辞書型オブジェクトが使えない!?


『お前の「だべ」は「だべ」じゃねえ!』

こんにちは。fujiです。ご無沙汰しておりました。

まだ会津若松にいたころ、バイト先の飲み会で冒頭の言葉を地元民に言われ、そこから正しい「だべ」の使い方レッスンが始まったことをふと思い出しました。
ちなみにですが、いわゆる関東圏:横浜方面の「だべ」と、東北地方の「だべ」は全くの別物です。めっちゃ力説されましたよ。


さて、本題に入ります。
Choregrapheのボックスには、「入力」、「出力」があり、そのそれぞれに「型」と「性質」を持たせることができます。

type

で、「型」には、

  • ダイナミック(何でもアリ?オブジェクト型?)
  • バン(何も持たない)
  • 数(多分float型)
  • 文字列

の4種類があり、それぞれ指定した型で別のボックスに情報を受け渡すことができます。

type2

さて、今回の記事はこの中にある「ダイナミック」についてです。

Pythonには・・・というか、まぁだいたいどんな言語でも「辞書」とか、「ハッシュ」とか、「連想配列」という型形式があると思います。いわゆる、「key: value」で構成されたデータ形式のことです。「カロリー」、「時差」アプリも、Microsoft AzureのDocumentDBからそういう形式でデータを持ってきて処理を行っています。

で、「カロリー」、「時差」アプリを開発してる時に気づいたのですが、Choregrapheのボックスにある「ダイナミック」は、実はこの辞書型の受け渡しをしようとすると、不思議な動作をします。

ちょっと試してみましょう。

code

「code1」ボックスで適当な辞書型データを持つ配列を作ります。
今回は、会津弁変換データとして作ってみました。
で、標準語が入力されたら、それに該当するデータを取り出してcode2に渡してあげるという作りです。
「code1」、「code2」のそれぞれで該当するデータのログを出力するようにしています。

boxes

こんな感じの作りにして、いざ再生!

<結果>

log

配列型で受け渡しが行われてる・・・?
なんか、「{}」が「[]」に変換されて受け渡されています。
もしかしてChoregrapheの「ダイナミック」では、いわゆる「参照型」のオブジェクトについては、文字列以外だったら全部配列として扱うようにしてるのかな・・・?と感じたfujiでした。

 

最後に、何でこれに気づいたかというと、「カロリー」、「時差」を開発してる時、最初はこんな感じで「DocumentDBボックスはデータの取得だけをして、次のボックスで取得したデータの仕分けをしよう。その方がなんかカッコよさげ!」と目論んでいたんですが

plan

いざやってみるとなぜかエラー連発。
原因を探ると今回の記事の内容が原因だったため、やむなく

result

こんな感じの処理に変更しました。
あれ?ボックスの見た目だとこっちの方がスッキリ!?

なんか、今更ですが当初の目論見通りに事が進まなくて良かったなぁなんて思っているfujiでした。
この記事が皆様の開発の参考になれば幸いです。それではまた!!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です