Scaratch(翻訳プログラム)

Title-Transferプログラム

オリンピック・パラリンピックで海外からの選手たちの受け入れホストの自治体の住民として、またボランティア活動を通してなどにて活躍するべく数年前から外国語を勉強し始めていた人もいることでしょう。でも残念ながらコロナの影響で直接のコミュニケーションをとることは難しくなりました。とはいえ、いろんな国の人と心を通じ合わせることって夢だよね。

翻訳プログラム

でも、今では技術が進歩して個人でも簡単に翻訳機能を使うことができます。というわけで、今回はScratchを使って”しゃべる翻訳プログラム”を作ってみたいと思うよ。

英語をしゃべれなくても、翻訳プログラムを通したら、あら素敵、日常会話が成立するくらいの英語に翻訳してくれます。まさにドラえもんの”ほんやくコンニャク”。

Samples-Transfer001

今回はScratchでは最終的に6言語までの翻訳プログラムを制作するよ。

Samples-Transfer002

それから、翻訳プログラムがあるからって、英語を勉強しないというのはなしだよ。これは、他の教科にもいれることなんだけど、インターネットで調べればわかることをなんで覚える必要があるの?電卓をたたけば答えがでるのに、なんで鉛筆をつかって計算するの?って思うことはあると思う。

確かに、それはあっている。特にインターネットが発達した今は、暗記をするという部分の重要性は低くなっているかもしれない。でもね、勉強をするということは頭の体操なんだよ。頭って、なんとなく特別な存在に思えるけど、心臓や肺、筋肉と同じ体の一部。ジョギングをして心肺機能を鍛える、バーベルをもって筋肉を鍛えるといったのと同じように、頭も勉強して鍛えないと、もやしみたいに細い体ならぬ、もやしみたいな脳になっちゃうよ。勉強をすることで、脳を鍛える。十分な睡眠と栄養のある食事をとって、脳を成長させることが重要なんだ。

それと、これら勉強においては、単に覚えるよりも、なんでそういう考え方が生まれたか、そういう文法になっているのか?ということを理解してほしいんだ。英語ってプログラミングと同じ、ある一定の法則に基づいて、文字の並びに意味を持ったせるというものだよ。この法則を理解することが、英語を学ぶ上でも大切だよ。そうすることで、他の全く新しい未知のものが出てきたときに予想がついて応用が効くんだよ。インターネットにあるのは、基本的に過去の情報、これから出てくる未知のものに対応するために勉強で法則を学ぶ必要があるのだよ。

それから、これが一番英語を勉強する意味で大切だと思う。結局、人間って感情の生き物なんだ。機械がどんなに発達しても、機械がしゃべる言葉は冷たいと感じてしまうもの。たどたどしくても、相手の目をみながら、一生懸命話そうとする姿勢をみて、人は情報としてではなく、その人の気持ちとして話を聞いてくれると思うよ。

2.プラグイン

さて、プログラム本編とは関係のない話で時間をとってしまったので、元にもどすと。今回のプログラムではScratchのプラグインを使うよ。プラグインっていうのは何かというと関数のあつまり、拡張機能。(関数プラグインについてはこちらの記事も参照)

programing-kiso-12-01

Scratchにこのプラグインをガッチャンコするだけで一気に機能がUPするんだよ。

programing-kiso-12-03

というわけでScratchではこの部分をクリックして、プラグインの画面を開き、今回使うプラグインを選択するよ。

translation-software002

3.作ってみよう

では、早速つくってみよう。

翻訳プラグインを使って日本語から英語への翻訳プログラム

まずはシンプルに日本語から英語に翻訳するプログラムを作ろう。プラグインの追加の仕方はさっきみたよね。ここでは、翻訳プラグインの方だけを利用するよ。

中身をみたい場合はこちら

https://scratch.mit.edu/projects/559425473

このプログラムでは、翻訳したい言葉を入力すると日本語から英語に翻訳した結果をロボットが話してくれるよ。

さてプログラムの中身を説明するね。

スプライトの説明

ROBOT

今回、使うスプライトはロボットと背景。でも背景の方は単に言語の説明をしているだけなので、背景にはコードは1つも入れていないよ。もし背景をつかいたいならScratchのページからRemixなどするをして使いまわしてね。ロボットのコードはこちら

translation-software003

このコードでは入力した言葉を一度、翻訳したい言葉という名前をつけた変数に格納しているけど、これはなくても機能するんだ。でも、この後の改造プログラムのことを見据えてわかりやすくするためにあえて変数に一度入れているよ。

さて、このコードのポイントはなんといっても一番最後の行。この行がプラグインで拡張した部分のブロックとなるよ。入力した言葉を指定した言語で翻訳するという機能がたった1行のこのブロックだけで実現できるんだ。すごいよね。これがプラグインの威力だよ。

こうやってプログラムの世界では、自分で一から作らなくても誰かが作ったものを利用させてもらうということで、短時間でやりたいことを実現するためのポイントだよ。

 

音声合成プラグインも追加して6か国語の翻訳プログラム

さて、続いて6か国語への対応版をつくるよ。そして今回は音声合成プラグインも追加も追加して、翻訳した言葉をしゃべらせてみよう。

中身をみたい場合はこちら

https://scratch.mit.edu/projects/560502181

では、こちらのプログラムの中身の説明をするね

スプライトの説明

ROBOT

先ほどと同じく使うスプライトはロボットと背景。背景の方は6か国語に対応したことをしめす背景にかえているよ。こちらも背景にはコードは1つも入れていないんだよ。もし背景をつかいたいならScratchのページからRemixなどするをして使いまわしてね。ロボットのコードはこちら

translation-software004

さて、このコードについて説明すると、まず始めにどの国の言葉に翻訳するのをというのを番号で聞く処理をいれます。どの番号がどの国なのかは背景に画像として記載して示しているよ。ここでも、入力された国を表す番号を一度、「国の番号」という名前の変数にいれている。これは、同様にわざわざ変数をつくらなくてもコードは書けるのだけど、画面で自分はどの国をえらんだんだっけ?どんな言葉を入力したんだっけ?というのをわかりやすく表示させるために使っているよ。コードを書く上でもその方がわかりやすかったりするよね。

そして入力が終わった後は、一度、メッセージを飛ばすという処理で別処理(サブルーチン)にとばしているよ。これも処理をわかりやすくするためだよ。

さて、右側の処理。ここの最初の部分は、さっきの日本語→英語に翻訳するプログラムと同じだよ。その後に、入力された「国の番号」に一致したときの条件分岐処理に入るんだ。これが国が6個あるので、ほぼ同じ処理が6つ並ぶことになるよ。縦に長くなるので、説明画像では国1の英語と国2のフランス語しか表し切れないけど、この後、国3,国4,国5、国6の処理が同じように続くよ。詳しくはScaratchのプログラムの中身を見てみてね。

さて、国ごとの処理の中身だよ。最初に言語を処理したい国に指定するよ(国1だから、この場合は英語だね)。コードを書いている中でこの処理はいるの?って思うのだけど、このブロックがないとうまく合成音声がしゃべってくれないので、ここはちゃんとブロックを入れるようにしよう。その次が翻訳した言葉を表示する部分と翻訳した言葉を合成音声でしゃべらせる部分だよ。この処理がさっきも言ったように国の言葉ごとに、あと5回同じものをつくる形になるよ。

入力制御をつかって完成版の翻訳プログラム

さて、これで出来上がりとおもったら、ちゃんと「1」を入れているのに英語に翻訳してくれない。ロボットはだんまりを決め込んだまま。どこがおかしいの?

実はこれ半角・全角問題です。いれた1が全角のイチだったためにうまく動作しなかったんだ。半角・全角問題はこちらの記事を参照

Scratch(半角全角変換・入力値の指定)
Scratchでプログラムをつくっているとぶち当たる問題、それが半角・全角問題。こちらは半角の数字を入れてほしいのに、全角の数字を入力されるために正しく処理が行われないということが多々あります。ちゃんと理解している人ならいいけど、普通の人は...

 

ということで前回学んだ入力制御をいれて、翻訳プログラムを完成させよう。この完成版では、全角の1をいれられても半角の1をいれられても対応できるように、また国の番号にない1から6以外の値を入れられた時は、入力が間違っていると返すという処理(これを例外処理というよ)をいれるよ。

中身を見たい場合はこちら

https://scratch.mit.edu/projects/560500944

 

では、プログラムの中身で変更した箇所を中心に説明するね

スプライトの説明

ROBOT

変更したコードはこちらだよ。

translation-software005

ここでのポイントは入力制御のために最初に入力値がリストに含まれているかという条件分岐をいれたことと、全角でも半角でも反応できるようにリストと右側の処理の部分で全角の1・半角の1の両方を条件分岐の判定にいれたことだよ。ここの処理の詳細は、前回の記事半角全角問題と入力規制を見てね。

4.まとめ

さて、これで完璧なしゃべる翻訳プログラムができたね。結構、簡単。プラグインを使うと、僕たちでもすごいものが作れるよね。

なお、プラグインの記事でも話したのだけど、知っておいてもらいたいので同じ内容をここでも記載するよ。

今回使った翻訳用プラグインは、今回使った英語・フランス語・ドイツ語・中国語・韓国語・日本語以外に、タイ語やインドネシア語、ペルシャ語、ロシア語など様々な国の言葉に翻訳できる機能をもっているんだけど、全部の国の辞書が追加したプラグインに保存されているわけじゃないよ。もし保存されているとプラグインのサイズがとても大きくなってしまうよね。

実は、翻訳に使う辞書そのものはインターネットに接続された大きなコンピュータ(サーバというよ、このインターネットにあるサーバを最近ではクラウドサーバというよ)にあって、プラグインはクラウドサーバにききにくという機能だけが用意されているんだ。この時に使う通信ルールがAPIというもので、APIにのせて翻訳前の言葉をリクエストすると、指定した国の言葉に翻訳された結果がレスポンスとして返ってくるんだよ。

programing-kiso-12-04

今後、インターネット上にある様々なデータを使って、いけてるプログラムを作る際にはAPIはとても大事なキーワードだよ、この機会に覚えておいてね。

以上でScaratchでつくる翻訳用プログラムは終わりだよ。次回は何にしようかな~。

 

コメント

タイトルとURLをコピーしました