5
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?

FileMakerAdvent Calendar 2023

Day 17

英語版の「幸せなら手を叩こう」でスクリプトを組んでみた

Last updated at Posted at 2023-12-17

はじめに

前置き

対象読者

FileMaker とは?

モダンで幅広い業務に対応できる拡張性の高いカスタム App を作成

することが可能なもの、とのことです。
ただ、本記事ではまったく「幅広い業務に対応」する気はありません。

FileMaker 動作環境

  • FileMaker Pro 20.3.x
    • 19 以前でも動作するはずです

自己紹介

  • 株式会社きみよりで代表をしています 野口啓之 / Hiroyuki Noguchi / Hi-Noguchi です
    • IT を中心とした DX コンサル/顧問などやっております
    • FileMaker については、内製化支援・トレーニングや 1on1 でのペアプロなど対応しています

「幸せなら手をたたこう」とは

日本語版

みんな大好き Wikipedia によると、

日本では1964年に坂本九が歌ってヒットした。童謡としても親しまれている。

作詞は早稲田大学人間科学部名誉教授の木村利人。元々は木村が学生時代フィリピンでボランティア活動をしていた際に原曲を耳にし、木村が帰国の途に着いた際に、旧約聖書の詩篇47篇を参考にして詞をつけたものが元になっている。

とのことです。
作詞をされた木村さんはまだご存命のようで、詞の著作権も存続されていますね。

英語版

では英語版を見てみるとどうでしょう。

Like many children's songs, there are many versions of the lyrics. A popular version goes as follows:

として、

If you're happy and you know it, clap your hands!
If you're happy and you know it, clap your hands!
If you're happy and you know it, and you really want to show it;
If you're happy and you know it, clap your hands!

一般的な歌詞が公開されていました。
はい、これを使えば著作権問題は回避されるはず!
引用元は Wikipedia です(むかしむかしはこんなこと言うと怒られる時代があったものです)

で? 結局なに?

If 文ですよね、これ。この詞。

なので(?) FileMaker で If 文の実装をおこなって、再現してみましょう!
という、深夜のおかしなテンションで書かれる記事です。

データベースの準備

テーブルに is_happy フィールドを作る。

image.png

レコードの準備

is_happy フィールドが 1 のものとそうでないものを用意する。

image.png

スクリプト作成

最初の確認

それでは、歌詞に従ってスクリプトを作っていくわけですが……
よく歌詞を見てみてください。

If you're happy and you know it, clap your hands!

条件文です。
If you're happy だけではないのですよね。
かつ you know it なのですよね。
この二つの条件が満たされなければ、手を叩いてはいけません!

英語のニュアンスや語用ではないのです、ここは厳密に書かれている通りに解釈するのです!

従って is_happy の値が確認できるようにしなくてはなりません。
また、値が確認できないにもかかわらず手を叩いたら、違反ということでスクリプトを終了させるべきだと思いました、はい。

第 1, 2 フレーズ

ということで、以下のように作ります! まず最初の二つのフレーズです。

If you're happy and you know it, clap your hands!
If you're happy and you know it, clap your hands!

一つ目の判定は以下のようにしています。

image.png

二つ目の判定は以下のように。

image.png

この二つのフレーズは単純な繰り返しになるので、一つ目のカスタムダイアログでは is_happy の値をダイアログ内に表示しますが、二回目では表示させないようにしてみました。
これにより、ダイアログで手を叩いてよいかどうかの判定が変わります。

そして、手を叩くべきでないのに叩いたら、アウトォーッ! というスクリプトを実行させます。

image.png

第 3 フレーズ

さて、三フレーズ目はどう解釈して実装しましょうか。

If you're happy and you know it, and you really want to show it;
If you're happy and you know it, clap your hands!

本当に示したいなら、という条件であり、ここに命令文はないのですね。
つまり、最終的な命令文は四フレーズ目の最後に来るので、手を叩かせる前に最終確認をおこなうようにすればよいと解釈できます。
ということで、以下のようにしました。

image.png

本当に幸せであることを示したいかどうか尋ねているのに、手を叩いたらアウトです。
また、幸せでないのに、頷いてはいけません。
そして、幸せであることを示さないという意思を選んだ場合には is_silent 変数に 1 を入れます。

image.png

第 4 フレーズ

最後の第四フレーズです。

image.png

幸せなのに手を叩かないのはいけませんし、幸せでないのに手を叩いてもいけません。
また、先ほど幸せであることを示さなかったのに手を叩くのもアウトです!

ということで、スクリプトは完成しました!

動作確認

幸せである場合

第 1 フレーズ

image.png

手を叩くと進む。
手を叩かないと終了。
image.png

第 2 フレーズ

image.png

手を叩くと終了。
image.png

手を叩かないと進む。

第 3 フレーズ

image.png

手を叩くと終了。
image.png

はい で進む。
黙ってると is_silent 状態になる。

第 4 フレーズ

image.png

is_silent 状態でなく、手を叩くと完了!

手を叩かないと終了。
または is_silent 状態なのに手を叩くと終了。
image.png

幸せでない場合

ちゃんと動きまして、上記の逆になります!

後書き

雑感

  • 別の記事を書く予定だったのですが、時間がなくて代替で変な記事を書きました。
  • ……で、手抜き記事にしようと思ったのに、どうして一時間かけてるんだろう🤔
  • 書いた後でちょっと検索してみたら、何と似たようなことを考えていた人が過去にもいらっしゃいました。人類ー!

紹介

※2023/12/20 追記

元後輩 @hosaka_ が 20 日目の記事として別のものを叩いていました。
OpenAI API を叩く方がだいぶ実用的ですね。

OpenAI APIをFileMakerから叩いて遊ぶ(JSONモード/Vision API(画像認識)/DALL-Eの画像生成)

APIを「叩く」という表現、ちょっと暴力的ですね。本記事では肩をトントンとするように、APIは優しく叩くことを心がけています。

確かに、叩いたり蹴ったり kill したり色々と物騒ですよね IT 界隈。

不思議の国のSE用語

私は最近しばしば「食べさせる」を使っています。
例文としては、

ChatGPT の GPTs にナレッジを登録する

ちゃっぴーに食べさせる

こんな感じです。「チャッピー、エサ」(某南国少年風に)

5
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
5
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?