文字起こしツールまとめ 後編:文字起こしツールそれぞれの特徴と有効活用する方法
文字起こし実際のツールの効果的な使い方

=前編との共有事項=
今回は私自身が実際の講義や映像の文字起こしを行なっており、現在では多くの文字起こしに使えるツールが出ているので、人手による文字起こしとツールでの比較、そしてツール自体の比較を行いました。
それについてまとめていきたいと思います。
後編は実際のツールのそれぞれの効果的な使い方ということで、文字を打ったりが非常に楽になる、どんな人にも役に立つ内容であると思ってます。
その中でも特に学生のレポート作成や、会議の議事録、個人的に参加した講演会のまとめ、インタビューやブログ作成とかには効果抜群です。
==
前編では人手とツールに関して、主に音声認識に関わっている人、人工知能とかもそうですね。その辺りの人が見ると一つ参考になるのではと思いながら書きました。
そちらから見る方が理解は進みますので、時間のある方、興味のある方はぜひそちらもご覧ください。
それでは早速内容に入って行きたいと思います。
ツールの使い方に関しては、今回は「誰でも」「今からでも」「簡単に」できるものを!と思ったので、比較の際に用いたものはその条件を満たしていた以下の3個です。
のちに書くそれぞれのやり方を見ていただければその環境設定の簡単さがわかると思います(全て3工程以下でできることになってます!
・スマホのメモ(最近の大学生がインタビューの文字起こしをするのに「iPhone」と「iPad」の2台だけを使っている理由 - Togetter
・Google ドキュメント(https://azami-seisaku.com/works/20180109
・writer.app(【Windows/Mac対応】書き起こし用の音声再生アプリ「writer.app」を作りました - イソップブログ
*それぞれに関して参考にしたURLが後ろのURLです
それでは実際にやってみて思ったそれぞれの特徴、有効活用方法についてみていこうと思います。
◆スマホのメモ(今回はiphoneで
●やり方
・スマホのメモを起動
・キーボードの左下のマイクマークをタップ
これで完了です。
●特徴
・とにかく手軽でどこでもできる
これに関してはスマホの特徴そのままですが、文字起こしにおいてもこれが絶対で唯一の特徴であると思います。
もちろん可能であるだけで、人が多いところでは雑音という意味でも、一人でスマホに話しかけている人に見られるという意味でも問題はありますが。
後者に関しては通話してる風にすれば少しはマシかもしれません(実際にやって恥をかいたとしても責任は取りませんよ、笑
●効果的な使い方
出かけ先でちょっとしたメモに。
◆Googleドキュメント
●やり方
1、以下からGoogleドキュメントを開く
Google ドキュメント - オンラインでドキュメントを作成、編集できる無料サービス
2、ツール->音声入力(出来ない時はChromeで開き直してください

3、新しく出たマイクマークをクリック
これで完了です。
●特徴
・現在認識中の言葉が**みたいなマークで出るので、進行状況がわかりやすい。
これは、他のものではなかったため気になった部分ですね。実際あると音声を認識しているのかわかるので非常に便利です。
・機能や音声の対応言語が多い
機能はGoogleドキュメントそのまま(wordとかと同じ)なので、豊富なのは言わずもがなという感じですね。
対応言語は他のものと比べてということです。writer.appでは3言語だけなのに対して、こちらは100言語以上!(メモの方は詳しくわかりませんが、それでも同じぐらいあるのかな?
この辺りはさすがGoogle って感じですね。
・ドキュメントを共有できる。
こちらも普通にGoogleドキュメントとしての特徴であるわけですが、音声認識においてはこれが一番の特徴であると思います。
リアルタイムで他の人と共有できるので、お互いにPCさえあれば遠隔でも文字起こしできます。
もちろん工夫が必要そうですが、うまく使えば会議など同時に多数の人が入力する際においても有効活用できそうです。
●効果的な使い方
リアルタイムでの遠隔or同時文字起こし。遠隔の人とビデオ通話・音声通話をしているときに、ドキュメントを共有し用いることによって相手のセリフをリアルタイムで文字起こしできたりします。
◆writer.app
●やり方
1、以下からwriter.appを開く
2、マイクマークをクリック(これもChromeで。safariとかだと出来ないです

これで完了です。
●特徴
・録音をお好みに再生できる
ドキュメント機能は後付けで、元々はここが肝だったようなのでここが充実してます。具体的には音声の速度、音量、数秒戻るとかが出来ます。
・一定時間で自動で改行してくれる
これは後から見るときに非常に便利です。
実際音声認識をやったことのある人だとわかると思いますが、他のものだとずっと同じ行で文字が起こされるので、後からみた時に非常に見にくいし編集が面倒なんですね。
・マイクボタンを押さない限りずっと音声認識モードが続く
個人的にはここが文字起こしにおけるwriter.appの肝で、Googleドキュメントよりもいいところであると思います。
というのも音声認識を起動したままYoutubeをみていたら、Youtube内の音声を勝手に文字起こししていたということがありました(笑
これは形式がたまたまあっていたためと思われますが、この例のようなことになったのもずっと認識モードであったことのおかげと思ってます。
他のサイトを開いていても認識状態なので、他の作業をしながらでも出来ます。
●効果的な使い方
リアルタイムよりも録音の文字起こしに。音声認識を起動した状態で文字起こししたい音声を再生しておけば、あとは別の作業を行っていてもオッケー。
□最後に
ここまでいくつかの文字起こし用のツールを紹介しましたが、根本は同じでもそれぞれにちょっとした特徴があり、それによって活用しやすい事例が存在しました。
しかしこれは主に単体の使い方で、これらにPC内の音声を認識できるようにしたり( writer.appではYoutubeがたまたま出来ましたが笑)、ビデオ通話やそれの録画ソフトなど他のものと組み合わせることで、また文字起こし環境の構築などもっと実践的な工夫次第で、さらに便利で快適に利用することができると思います。
その辺りは色々と他の記事が出ているのでそれらを参考にしたり、また場合によって自分で工夫を考えてみてください。
音声認識関係者の方には人手による文字起こしに劣る点の改善、勝る点の向上、そしてさらなる使いやすいツールの開発の手がかりになっていたら幸いです。
今回は文字起こしについてまとめましたが、普段はゲーム作成等について実際のツールの使い方をわかりやすく説明しているのでよければそちらもみていただければと思います。
では今回はここまで、また別の記事でお会いしましょう。
文字起こしツールまとめ 前編:人と機械での文字起こしにおける差異

今回は文字起こしに関して現在の機械でできることと、誰でも使える具体的な文字起こしツールのそれぞれの特徴をまとめてみました。
これを行なった理由として、
・私自身が聴覚障害者のために実際の講義や映像の文字起こしを行なっていること
・現在では多くの文字起こしに使えるツールが出ていること
ということがありまして、実際の現場でそれらのツールは使っていけるのかということが気になったため、今あるそれらのツールを使いながら人手による文字起こしとツールでの比較を行ってみました。
そしてその中で、ツールにも色々あり、それぞれに特徴があることに途中で気が付いたため、ツール自体の比較も行いました。
それについてまとめていきたいと思います。
前編では先に述べた人手とツールに関して。主に音声認識に関わっている人、人工知能とかもそうですね。その辺りの人が見ると一つ参考になるのではと思いながら書きました。
後編は実際のツールのそれぞれの効果的な使い方ということで、文字を打ったりが非常に楽になる、どんな人にも役に立つ内容であると思ってます。
その中でも特に学生のレポート作成や、会議の議事録、個人的に参加した講演会のまとめ、インタビューやブログ作成とかには効果抜群です。
分量的に後者は別の記事にまとめたのでそちらに興味のある方は以下のリンクからそちらに飛べます。
では早速前者の人手とツールの比較に関してまとめていきたいと思います。
◆それぞれの概要
●人手による文字起こし
ここでは実際に私がしている方法を紹介します。
そのためにはその環境等も説明がいると思ったため、先に述べておきます。
まず、普段の文字起こしにおいては大学の90分授業を対象に行なっておりますので、よくある授業風景を想定していただければと思います。実際に支援対象者が横にいる状態で、先生の言った内容を文字に起こしていきます。
専用のソフトを使っており、それに関してはここでは紹介しません。
大まかな形式としては画面いっぱいに表示部と、その下の方に小さな編集部という二つです。

打った内容はまず画面下の編集部に表示され、それをENTERで上の表示部に投げるというものです。
上の表示部では文字が大きい状態で出てくるので隣にいる支援対象者もちゃんと見えるということです。
その他機能もいろいろありますが、ここではこれだけわかっていれば大丈夫です。
重要なのは、これを基本二人一組で行うということです。
つまり、リアルタイム文字起こしは一人の人間では内容の要約でもないとなかなかうまくいかないということです。
これは実際にタイピングや筆記と喋るのどっちが早いか考えていただければすぐわかると思います。もちろんプロの記者とかは自分なりの暗号で、、とかあるかと思いますが、ここではリアルタイムで見せる必要もあるので意味がないです。また、タイピングが速ければいいかというとそうでもなく、90分間集中し続けるという集中力の問題もあります。
具体的にはPCを二つ用意し同じ画面を開きます。そして、交互に文字に起こして表示部に内容を投げていくわけです。
もちろん表示部は共有されており、下の編集部もそれぞれの分ということで二つあり、それも共有されています。つまり相手の状況を把握できます。これで相手がどこまで打てるかを考えながらその続きを打ち始めるわけです。
これはどちらかがタイピングに未熟であっても出来るという方法のため二人同時に作業しています。なので、お互いが習熟している別のところでは時間制(45分ずつ)で交代したりするのかもしれません。
とりあえずはこの前提で比較していきます。
●ツールによる文字起こし
こちらは実際にやってみた方が色々とわかりやすいですが、簡単に現在のツールで出来ることをまとめていきます。
個人的には使ってみる当初はすでに結構なことができると思っていたのですが、思ったよりも課題が多かったためそのあたりが伝わるように書いていきます。
*ここでは、後編で紹介するスマホのメモ、Googleドキュメント、writer.appを基準に説明します。これらを選択した理由、それぞれについての説明は後編で書いてますので、ここでは省略します
まずここで文字起こしツールとしているものは、音声認識を備えた文章作成ツールです。
つまり、ほとんどはもともと文章をまとめるためのツールであり、それに入力を楽にするため、最近の技術の音声認識がついたという認識です。
これを、文章を作成しようとしている本人が喋るのでなく、他人が喋っている時に用いることで文字に起こしてしまおうということです。
ここまでで概要については説明が終わりましたが、すでに気になった人もいると思うので、少し続けます。
ここまでで大体の人は、「じゃあ、授業中にこれを起動すればもうそれでいいじゃん!」と思うでしょうが(最初私は思ってました笑)、実はそこまでの技術はまだ可能になっていないのです。
「それって文字認識の正確さでしょ?なら、修正作業だけ人間がすればいいじゃん!」と思ったあなたはある程度詳しい!
しかし、もちろん文字認識の正確さも問題ですが、そこは実は大した問題ではないのです。
ではどうして、ということがわかっているあなたは普通に専門の人ですね、あと少し茶番に付き合ってください(笑
ポイントは「文章を作成しようとしている本人が喋るのでなく、他人が喋っている時に用いることで文字に起こしてしまおう」という認識。
この少しの認識の差により問題が多く起こるのです。
これに関しては最初に述べた通り実際にやってみると一瞬でわかりますので、結果だけを教えます。
授業や講演会、はたまた会議でこれらを用いようとすると、先生や登壇者の声が全然反応しません。会議では自分の声だけが入ります。
これは文字を起こす本人が喋る、つまりPCに向き合っている人が喋ることを前提にしており、またノイズを入れないための工夫です。
もっと詳しく知りたい方は各自で調べてみてください。
◆人手と機械の比較
ここからは実際にそれぞれの特徴を比較をしていきます。すでにさっき説明したことに関しても含まれますが、書いていきたいと思います。
●人手による文字起こし
これの特徴は何と言っても人間の認知機能を使えるということです。
これは、
・人間の判断が働くため文字を起こすのに見やすく作れる
(改行のタイミングなど)
・要約ができる
(話者が何度も繰り返したりする時に有効。場合によっては、ざわざわとした周りの様子や音楽が流れている様子などその場の様子も伝えることもできる)
・条件変化に強い
(話者が突然変わった時にそれを伝えれたり、動画再生が入ったりという突然の変化)
・音声認知が人間によるため的確
(周りが少しうるさくても発言者の言葉のみを取れる。発音が汚い人でも正確に文字にできる)
と多くの利点があります。
また、人によっては多言語にも対応していることもそうでしょう。
●機械による文字起こし
これはここまで読んだなら大体わかると思いますが、
・体力や集中力、スキルなど人間の場合に存在する差が存在しない。
・関わる人が少なくて済む
(現在の技術でも場合によって人は修正作業に徹すればよくなり、組織としてはその分の費用を浮かせることができる
・他の技術と組み合わせることでさらに応用できる
(人間には直接できないこともできる?
ということが挙げられます。
◆まとめ
機械での文字起こしと比較してみると、我々が何気なくやっていることは、実はなかなか難しいことをやってのけているという事がわかりますね。
ここで挙げたツールは個人でも使えるもの、その中でも特に環境設定がほとんど必要なく誰でも今すぐにでも使えるというものに限定したため、もっと本格的なものになると性能はまた違うのかもしれません。
とりあえず現在一般的に使えるものだとこんな感じなんだという認識でいていただけると幸いです。
ここではこのぐらいにして、次の記事で実際のツールそれぞれの差をまとめていきたいと思います。↓
Java -> Python 初めからクラスの継承まで[プログラミング]

本記事ではプログラミングをやったことのある人が(特にJava)Pythonをやるために、Javaとの書き方の違いから、コマンド仕様の共通点・相違点をクラスの継承までまとめたものとなります。
個人的には簡単な関数を忘れたとき用です(笑
是非ご自身の勉強の参考にしていただければと思います。
(例として出す変数名等に特に意味はございません笑
===
まず第一にJavaではクラスを宣言したりという工程が必要になりますが、Pythonではいきなり書き始めることができます。
また改行に;を打ったりという事も不要です。
コメントアウトは先頭に「#」です。
それとは別に """で文字列を囲むことでもできます。こちらは複数行に渡っていても対応できます。
===
Pythonにおいて出力は
print()
数字はそのまま()の中に入れればいいです。
文字列の場合は""で囲むのもおなじみですね。
足し算は+引き算は-、掛け算*、割り算/
割ったあまりを出したいときは%。//で割った商。このあたりもだいたい同じですね。
ただ**で累乗ですね。
今までのことを簡単にまとめるとこう↓

これで実行すれば「hello world!」と「3」が出力されます。
===
変数に代入したいときは型の宣言等がいらなく、
変数名=数値
変数名="文字列"
で可能です。もちろんこれは浮動小数であってもです。
そして、もちろん変数同士の計算も可能です。
これに関しては、整数型と少数型が混ざっていても計算してくれます。
変数の出力は
print(変数名)
ここまでは↓

実行すると「2」「Python」「3.2」と出ます。
===
変数は一度入れたとしても新たに式を書けば上書きできます。

というプログラムなら出力されるのは「200」です。
===
Java同様、記号+は文字列も結合可能です。

なら出力は「アップル」。
===
先ほど型を宣言しなくていいといいましたが、Pythonが勝手にやってくれているという事で型という概念自体は存在します。
それは、数字ならIntやfloat、文字ならStr。
つまり、数字を先ほどのように文字列と一緒に出力したい場合は型を文字列型として出力する必要があります。

これならば「私は5歳です」となります。
ちなみに、formatメソッドにより、文字列中で{}で枠を作り、文字列の後にピリオドを打ってからformat()で変数を指定すると、枠内が指定した変数になるというものもあります。これは、複数あるときはformat内でカンマで区切れば大丈夫です。
これは、「:.3f」とすることで、小数点第3位まで表示のように小数点以下の表示方法に関して指定することもできます。(同様なことをprintでやるには:の代わりに%です。
===
入力はinput()。
デフォルトで文字列型として読み込まれるので、 数値とする場合は読み込んだ後に変換されます。
()の中文字列を入れると、それが表示されてからinputを受け付けます。

この場合は「cの値は?」と表示され、そこで10と入れた場合「20」と出力されます。
===
条件分岐はif文があります。
比較演算子は基本同じで、<,>,<=,>=、そして==で同じ、!=で異なり、条件式が複数の場合の「かつ」が「and」、「または」が「or」 。「not」で否定を。
elseやelse if も機能は同じ。ただelse ifはelifと書きます。

これなら「x,yは共に3以下である」と出力されますね。
この際ifに対してprintがインデントされていますが、pythonは改行等を簡略化している分インデントによって判断されることが多いので、インデントには注意する必要があります。
swichは存在しないです。同じような運用については色々あるので、各自調べて見てください。そもそもifでも表現しようと思えばできますからね。
===
Pythonでは配列に似たものとしてリストというものを用います。
リスト名=[要素1,要素2,要素3]
で作ることができます。
リストの特徴としては要素数が可変である事があげられますね。
リスト名.append("要素4")
で要素を追加できます。(消去はdel リスト名[番号]でインデックスを、remove(要素名)で要素を消去できます。
もちろん
リスト名[2] = 要素5
のように要素を変更する事もできます。
リストの長さはlen関数で確認できます。
リスト全体を出力するには
print(リスト名)
ここまでが↓

これは「ひらがなの一番目はあ」「['あ', 'い', 'う', 'え']」と出力されます。
また、inを用いることで、要素が含まれているかを調べられます。
数値型のみの場合はきちんと数値型として読み込まれます。
ちなみに、番号は0,1,2,,, と順になっていますが、-1,-2,-3,,,とすることで反対から順に読み込むこともできます。
複数同時に読み込むスラッシングというものがありますが、これは切り取りたい範囲をスラッシュを入れるように指定するもので、スラッシュは数字の前につきます。つまり、1~3をとりたいときは[1:4]です。
似たものとしてタプル型がありますが、リスト型がミュータブル(可変可能)に対して、これはイミュータブル(不可変)で、むやみに書き換えして欲しくないものに使います。これは[]の代わりに()で括ります。
===
リストはもう一つ特徴があり、それがfor文との接続性です。
for文の書き方として
for 変数名 in リスト名:
とすると、リストの要素を一つずつ変数名として指定したところに代入して実行してくれます。

これだと「ひらがな:あ」「ひらがな:い」「ひらがな:う」「ひらがな:え」と出力されます。
そして、見たように数字を用いたいときはrange関数を用いればできます。(後ろの()内の数字の数だけ数字が作成される。スラッシュは間に「,」をつければ良い。さらに次に数字を重ねると範囲内でその数おきに数字を選択できます。
zip関数を用いると複数のイテレータから同時に要素を取り出せます。
enumerate関数は数字を同時に読み込んでくれるため、rangeとzipを組み合わせる必要がなく、楽です。
===
リストに似たものとして辞書型というものもあります。
これはリストや配列がインデックス番号で要素を取り出すのに対し、特定の文字列などキーというものを決めて、それで呼び出すというものです。
辞書名 = {キー1:要素1,キー2:要素2}
で設定でき、使うときは先にもいった通り
辞書名[キー1]
で要素1が取り出せます。
要素の変更はリスト同様、要素の追加は
辞書名[キー3] = 要素3
で追加できます。
またfor文で用いることができるが、リストと違い変数に入るのはキーの方なのでそこは注意ですね。

これなら、「日本」「首都:東京」「首都:北京」「首都:ソウル」となります。
似たものとして、集合型というものがあります。これは同様にくくって要素を入れますが、キーとバリューいう風にすることはなく、要素の順番や重複を考えずに管理するものです。
===
繰り返し処理としてリストに関係のあるfor文を例に出してきましたが、Pythonにはwhile文も存在します。
書き方はif文と同じように
while 条件式:
でインデント内が実行範囲となります。
もちろん繰り返し処理においてbreak、continueは用いれます(for文でも
===
関数の設定は
def 関数名():
でインデント内が関数の定義になります。
()内に引数を設定できるのも変わらず。もちろん型の指定はいらないですね。
引数を複数入れる場合は「,」で区切ります。
以下のように関数の宣言時に引数の初期値を設定できます。
def 関数名(引数名 = "初期値"):

これは「ゲストさん、こんにちは。今日は12月25日です」となります。
戻り値の処理も
return 変数
で可能です。ただし、return以降は実行されないので注意が必要です。
ちなみにこれは位置引数で 、キーワード引数を設定することもできます。この場合引数のところに式を入れることで、デフォルトではその値を、式を引数として選択することでその値を使用することができます。
可変長引数(個数を指定しない位置引数。タプルに格納して受け取る)は最初に「*」をつけることで作れます。
===
コードが見辛づらくなることを解消するためにモジュールという概念があります。
これはメソッドなど一部のコードを他のファイルに移して、それを読み込んで使うというものです。
他のファイルに移したら、
import ファイル名
ファイル名.メソッド名()
でそのメソッドを用いれます。
クラスとの違いは継承ができない点です。つまり、インスタンス化が一度ならモジュールで十分ということですね。
===
Pythonにはjava同様、便利なモジュールを標準ライブラリとして搭載しています。
math(複雑な計算),random(ランダム値生成),datetime(日付や時間操作)等インポートすることで使えます。
これについても詳しいライブラリ、メソッドについては各自で調べていただけると、、、
===
クラスの設定は
class クラス名:
インデント内が処理になります。(クラス名ははじめ大文字
インスタンスの作成は
インスタンス名 = クラス名 ()
でできます。
インスタンス変数は
で作成可能です。
クラス内のメソッドは
def メソッド名(self)
で作れます。引数が必要な場合は、selfの後ろに「,引数」で出来ます。
def __init__(self):
で作成できます。
メソッドの使用は
インスタンス名.メソッド名(引数)
インスタンス変数をクラス内で作成するには
self.インスタンス変数名
に代入すれば可能です。
ここまでが↓

67でnamingクラスのインスタンスを作って、クラスのコンストラクタでnameインスタンス変数が作られます。
そして、68でfamilynameインスタンス変数を作って、69でfull_nameメソッドを使うことで、familynameやnameの繋がったfullname変数ができます。
そしてそれを出力すると「1番のフルネームはあいうえおか」と表示されます。
===
クラスを別ファイルにおき、そのクラスを用いてさらに具体的なサブクラスを作れます。
そのクラス継承のやり方はまず、下記のように別ファイルからクラスをインポートし、
from ファイル名 import メインクラス名(こうすることで、インスタンス作成時にファイル名を一々書く必要がなくなる
それから下記のように書きます。
class サブクラス名 (メインクラス名):
これで継承完了です。
継承したサブクラスでインスタンスを作ると、メインクラスのメソッドが
インタンス名.メソッド名
で用いれます。
サブクラス独自のメソッドの作り方はクラス作成でやった通り。
オーバーライド等も同様に起こるため、継承した子クラス内でメソッドやコンストラクタ__init__を上書きすることもできます。
ちなみに
super().メソッド名(引数)
で親クラスのメソッドを子クラスで用いることもできます。
===
とりあえずここまでで、他の言語をやったことのある人にはPythonのクラスの継承のところまでザッとわかる内容になったと思うので、この記事ではこの辺りまでとしたいと思います。
もちろんより詳しい部分に関しては別々に調べてみてください。
ではまた別の記事でお会いしましょう!
〜ゲームについて素人から知れる、作ろう〜 アイディア検討(ゲーム制作ツール「machination」:実践編最終回
「machination」終了条件、人工プレイヤーとRunパネル
前回までにグラフについてやりました。
今回は基本機能の最後、終了条件と人工プレイヤーについて、それからおまけとしてRunパネルについてやっていこうと思います。
それでは早速ですが、終了条件付けについて。
これは非常に簡単です。
右側のGraphから四角で、中に黒い四角が入っているものを選択して、poolの上においてみてください。

それから、poolとこの四角をstate(破線矢印)でつなぎます。

以上です!すごい簡単!!
ちなみにデフォルトでstateのlabelは「>0」となりました。
これを>50とかすることで、50より多くなったら終了という条件をつけることができます。
早速やってみると、、、

これはスクショだからresource(玉)が止まっているのではなく、本当に途中で止まってます。
このように条件を果たしたところで完全に止まるわけですね。
これで一応、始まってから終わるまでの一連の流れを作成することができるようになりました。
ではここからはそれをより実践的にしてくれる人工プレイヤーの機能をつけていきたいと思います。
これによって一気にそれらしくなるとともに、machinationの基本的な機能について網羅することになるのではないかと思います。
ではまず、Graphから左下のAPという四角を適当な場所に設置してください。

すると右下のエレメントパネル(ステータス)にScriptという枠があるのがわかると思います。
察しのいい方ならわかったと思いますが、この人工プレイヤーはプログラミングの要領で働かせるものになります。
ただし、プログラミングといっても実際の言語ができる必要はなく、machination専用のいくつかの形を覚えるだけでできます。
説明ではわからないと思うので、早速やって行きましょう。
Scriptの欄に「if( pool > 3 ) fire(converter)」と打ち込んで実行してみてください。
するとこのように、、、

poolに3個以上溜まった時にconverterが勝手に働いてくれます。
つまり、if( pool > 3 )で「もし"poolが3以上"なら」fire(converter)「"converter"を実行」というわけですね。
ifの中の条件を変えたり、fireの中身を変えたりで色々応用できます。
もちろんこの際手動でクリックしても動作します。
人工プレイヤーにより動作の自動化ができたわけですが、これを用いてさらに便利なことができます。
それが、runパネルのクイック実行と複数実行です。
右上のパネルをGraphから、runに切り替えてみてください。

上のような画面が出てきたと思います。
このQuick Runがクイック実行、Multiple Runsが複数実行です。
ではそれぞれクリックして実際の動作をみてみましょう。
まずはQuick Runによるクイック実行。

実行して驚いたと思います。
こちらなんと今まで、タラタラ待っていた動作を一気に終えることができます!!
しかも実行時間も表示してくれる!!!
これだけで素晴らしいですが、次のMultiple Runsが複数実行もやります。
実行した結果がこちら!

今度は100回連続でやってくれただけでなく、実行時間の平均もとってくれました!!!
グラフにはそれらすべての結果が書いてあり、おそらく平均だったものが濃く書かれています。
パネルの下の方のRunsで実行回数を決定でき、その下のVisible Runsはグラフ上に何個分表示するかを決めれます。
つまり、このRunパネルはグラフ機能や人工プレイヤー機能と組み合わせることで非常に高度なことができるようになるわけですね。
もちろん実行するたびに結果は少しずつ違います。これはランダムがきちんとランダムになっているおかげですね!
このRun機能、今まで出てきた機能がいい仕事をしてることがわかる非常にやっていて楽しいものだと思います!!
ここまできた人はmachinationの虜になったかな?
ここまでできるようになると、ある程度複雑なものが作れるようになると思うので、この最後には見やすくするGraphについて説明をして終わりたいと思います。
Graphの一番上の段、TextLとGroupEというものがありますね。
これらは以下のように、コメントアウトをつけたり、枠組みをつけたりすることができます。

今回の例ではそこまで必要がないですけど、以下のような複雑性のあるものだと、わかりやすいことが理解できると思います(?)
(そこまで見やすくない、、、コメントアウトとかレイアウトの才能ないかも、、、

ということで、ここまでmachinationというツールについてやってきましたが、最後の最後でかなり可能性が見えてきたと思います。
machinationに関しての記事はこれからも出していくかもしれませんが、おそらく補足的なものになるかと思いますので、これが一応一つの区切りということで、、、
ここまで読んでいただきありがとうございました!!!
他にも、今のところUnityに関してのものしかありませんが、ゲーム制作に関連する初心者向けの記事を書いているので、是非そちらも読んでみてください。
また、記事に関して質問や、感想、簡単なコメント等あると非常に励みとなりますので、そちらの方の是非とも気が向いたら書いていただけると喜びます。
ではまた別の記事で会いましょう!
またね!
***
この度インターン先を通しまして、BOOTHでこちらの記事をまとめたものを販売してみることになりました。
表紙をみればわかる通り少しアップグレードしたRPGのモデルと、最後にここでは扱っていないものも含めたコマンドのまとめをつけています。
是非ともご覧になってみてください(こちらの記事を消すことはありませんのでそこはご安心を
山紫水明∽時事無碍∽計算機自然 落合陽一個展に行ってみた話
[山紫水明∽時事無碍∽計算機自然] 最近よく聞くメディアアートとは、実際の作品とは
*ここで紹介するのはあくまで一意見です。また、あくまでメモ程度のもので本格的にまとめたものではないです。つまり単語の意味やコンテクストを正確に伝えきれるものとは思っていないです。あくまで自分で見る際の参考や、見た後の他の人はどう感じたかの把握、またこれから理解する際の参考程度に考えて読んでください。(写真、文章に問題のある場合も是非お教えください
普段はゲーム制作関連の記事を書いているブログですが、今回はふと書きたいと思ったことと、明日までということでこちらに書いてみました。
今後もこういうものをこのブログに書くか、別に作るかは考え中です。ではどうぞ。
非常に考えさせられ、有意義な時間だった、とは簡単に言えるが、実際のところどうだったのか伝わらないであろうので、実際にその時取ったメモに少しの補足をしつつ、ほぼ見たまま生の感想を書いていく。
正直前日に予定がなくなり、「そういえば明後日までらしいし、今話題の落合陽一さんの個展いってみっか」というその場の思いつきで行ったのであまり前情報や詳しい場所といったこともわからず行った。
まずは建物に入ってすぐに建物全体を貫くフロアの部分に虫のパネル。これはツイッター等で見かけていたので場所があっていることがわかった。これに関して具体的なことは後で。
[
その後1階にはなさそうであったので、エスカレーターで移動していると、ある階についた時に正面に変なスペースを見つけた。そこが個展の場所だった。


入り口は小さく低くなっており、屈まなければ入れない。その入り口の横には木といくつかの展示。これについてもとりあえずおいておく。
入り口を屈むとそこは薄暗い世界。これは出た後の考えだが、光を用いたものも多かったため、そのため必要以上に明るくならないように入り口を低くしていたと思われる。
入ってすぐの壁には個展自体の趣旨、落合氏のメディアアートに関して書いた文章。

ここでは気になってメモした部分だけ紹介。
落合陽一の考えるメディア芸術は幽玄。これはイメージが幽、物質が玄というもの。この物質がメディアである。メディアに関しては少し後に説明。
これを読んで思ったこととして、私の幽玄へのイメージは逆で、そこにないのに確かを感じる、幽霊みたいなもの。つまり、物質が幽で、イメージが玄。
この辺り考えはまだまだ途中。しっかり考え自分の中で咀嚼しなければ。
メディアというのはフレーム。物事を何かの基準、枠組み、縛りの中で見ることで、切り出された視点、意味、文脈を持つ。
フレームを設置することで、鑑賞可能になる。
今回の個展では目に見えないものをメディアを通して見えるようにするという趣旨がある。
ここで入り口にあった様々なものに対してようやく理解が及んだ。
吹き抜けのものは置いておいて、入口の蛙のものはおそらく、黒色の液体(何か忘れた)によって磁力というものを目に見える形にしている。

また、シャボン玉の膜によってチョウが見えるのも、光を膜に移すことで見える化している。

落合陽一がやっていることは、非言語感覚と呼ばれるもの(おそらく感覚それ自体のこと)を、日本的な古典コンテクストで見て、それを現代のメディアで表現しようとしている。ということらしい?。侘び寂び、明鏡止水とか日本古来の言葉が多く用いられているのはそれゆえ。
そして、最近存在しだしたメディアアーティストというのは、その名の通り、メディアを作る、物事を見るフレームを作る人ということ。
ここからは実際の作品について触れていく。基本的にはまず作品を見て考え、それから題名を見て考え、その後説明を見て考えるというスタンスでやってます。
・波の形、反射、海と空の点滴

***
まず始めに見た時は捉えどころがないと感じた。わけわかんない。
その後題を見て、全体的に広がる波模様。上から下へと広がる青のグラデーション。そして全体としての光の反射による不確実性。
そういったところに視点を移すことに成功した。
題名というメディアによって漠然とした作品を解釈するフレームを得た感じ。
そこからも具体的な解釈はできなかったので、説明を確認すると、鯖の模様から、空と海、境界という概念が抽出されていた。
光の反射ということで実際にライトで光が投射されていた。
最初に見た作品ということで全く解釈が進まなかったが、のちに期待という感じ。
・音の形、、(題名記録するの忘れてた、、すみません

音を視覚で知覚する。
まず何も見ずに解釈。
これは音という振動を見える化するため、水を用い、さらに見やすくするために光を用いている。
水面の波に上から光を投射することで下の紙に影として波を写しだしている。
下の紙に映し出すのに、高さを作って見やすくもしている。
ここで解説を見ると、ただの音でなくイルカの声だということがわかった。イルカは超音波で活動する生き物。つまり、イルカの見ている世界は波の世界。ただの音というだけでなく、イルカの世界観を表すものとしての音、振動、影。
そして、それは新たな世界の伝達系統の示唆であるかもしれない。機械群の生み出すものは直接人間の目で見えなく、わからない。
一つカメラ(ミラーレス)で撮影時に気づき。音の振動によって光に色がつく。周波数どうこうの原理(下の写真、影がピンク色に見える
これは意図していたのかどうかは本人のみぞ知る(?

・深淵の淵、内と外、人称の変換工程

メディアをメディアとして知覚する?
目の写真で、原理的には特にはないのでわからない。唯一の工夫点としては目の光の反射をその位置に穴を開けて実際の光を裏から投射していたこと。人間の目の場合は真ん中以外も白く塗って(穴を開けて?)いた。(下の写真真ん中の白いところはライトによる

解説によると、絵画に代表される二次元の作品は、網膜イメージを前提に考えられる。(網膜によって見えるものが網膜イメージ)
その網膜。つまりメディア自身を作品としたとのこと。
これについても、きちんと思考の上で述べる必要があるためこのぐらいで。
・計算機自然、生と死、動と静

動きで生を知覚する。
本物の自然と、本物のモルファチョウ。その横にあるのは機械によってできたモルファチョウ。


見た目ではもちろん本物が本物らしいが、機械の方には動きがある。おそらくその動きは計算され、本物の動きのように見える動き。
よく計算された自然は本物の自然と見分けがつかないということをツイッターで見かけるが、それを言っていた意味が少しわかった。
動きをつけるだけで、いっきに本物らしさがつくとともに、生きているという観点では、動きのある方がより自然らしい。
いくら本物でも動きがないという点で物であり、生き物として感じない。
・虫鈴、魚鈴

音によって虫を知覚する。
それをガラスの振動と電気の衝撃で表現。虫というものを感じるためのメディアとしての音声装置。
魚の方は聞けなかった、残念。
・Morpho Scenery

視覚の異常で物質性を知覚する。
これもよくわからない。望遠で、上下左右反転。そしてとにかく見てて疲れる。
ガラスかアクリルのパネルに波模様、方針円状の模様・凹凸を入れることで、風景が違ったものに見える。上下左右は逆だし、風景は綺麗に見えない。あと望遠に見える。
偶然かもしれないがエアコンの風によって揺れることで、風景に伸縮の動きがある。(吊るしているのは外の風景との対比でもあるが、動きを生むためのもので、その動きは予定調和のもの、意図されたものなのかもしれない。
風景を見た時ひとは物質性を忘れ、平面を感じる。特に遠景は。
それに物質性を思い出させる装置とのこと。
望遠であることは、遠景を近く見せることで、少しでも物質性を忘れる効果を弱めようとしているのかもしれない。
その後作品の下で機械音がするので見たところ、吊っている紐が張ったり、緩んだりする機構があった。また、紐の端の枠には紐よりもわざと大きな穴にしてあり、緩んだ際に揺れるようにしている。

動きは予定調和であるが、エアコンによってでなく、下の弛緩緊張装置によるところだろうと結論づけた。
確かによく考えると、エアコンの風にしては揺れが大きすぎるし、揺れの向きもおかしかった。
あえて(?)下の構造に隙間を持たせて見えるようにしているのが優しい。
・Levitrope

非人工的浮遊から身体性を知覚する。
浮遊と回転。この回転とは自転公転どちらも含む(どちらもしている。
浮いているので磁力は感じる。けど、磁力はもう別にあったし、それならわざわざこんなことをするまでもない。
これも本当にわからず解説。
重力というものからの解放から、身体性を感じると。これは人の介在しないことにより際立たせられる。手品でやると超能力と映るのの逆。
らしい。
・Silver Floats

今までの複合形。
一個前の浮遊による物質性の解放に(重力的な)、波と反射による物質性の解放(視覚的な)。また、形状による不形感もある。
これは写真を同じ角度で何枚かとってわかったことだが、見るたび、より詳しくは自転により角度が変わるたびにそのシルエットが変わる。回転速度はものによって異なる。


また、下が鏡になっている。これも不形を生み出すと考えられる。

そして背景の色の変化によってさらに変化する。一度として同じ場面に遭遇できないのではないかと思わせる形状、色の変化、それらのタイミング。これらはきちんと計算されなければ導かれない。この常がない感じは自然として映る。
ようやく最初のフロアのものもMorpho SceneryやSilver Floatsに関連するものと分かった。
反射の仕方がものによって異なり、また意図したのかわからないがパネル自体が回転する。また周りの風景の変化もある。


一部解釈の途中で止まっているものもあるが、そこはご自身で。
また、ここにあげた写真はあくまで切り取ったものであり、実際の動きの中でこそ感じること、わかることが多いと思うので、是非ご自身の目で確認してみてください。
明日までです。
〜ゲームについて素人から知れる、作ろう〜 ゲーム制作(Unityでツ●ツ●みたいなゲームを作ろう:その4
「Unity」物理エンジン追加+prefab作成
前回は画像の読み込みや、それを使った壁の作成をしました。
ということで早速ですが、次はゲームのキモとなる玉を配置していきます。

はい、何がとは言いませんがmachinationです。白い落書きの入った玉みたいになってます(今回って宣伝回なの?って感じですが、そんなことはないはず
この状態では玉が壁みたいに固定されている。ということで、玉を選択して、例のごとく右側をいじっていきます。
しかし、現在は配置であるtransformという枠と、Sprite rendererという画像を画像としていじるものしかなく、システム的な扱いを変更するものはない!!
ということで、俗に物理エンジンと呼ばれる、画面内で重力とか物理の法則が働くような設定をいじれるところを追加します。
追加は簡単!
右側の一番下にadd componentなんて露骨なものがあるので、それをクリック!

すると、下のような一覧が出てきます。
このphysics 2D を選択して、

その次に下のようにRigidbody 2Dを選択してください。

すると、、、

はい!新たな画面が追加されました!
これで物理エンジンが追加されたことになります。この物理エンジンを設定することで、重力が入るわけではなく、このウィンドウを追加した時点で、すでに基本的な重力が働くようになっています。
つまり、より詳細に設定をいじりたいときに、右側に追加された新たな数値をいじるわけですね。
その必要なまだないので、そのままの状態で上の再生ボタンを押してみると、

玉が下に落ちていくようになっています。
ただ、上の画面を見てわかるように、先ほど設定した壁をすり抜けて、画面の外に落ちていってしまいます。
そこで、次に壁には「Box Collider 2D」を追加して、さらに、球には「Circle Collider 2D」を追加します。
そして、同じように再生してみると、、、

はい!今度はしっかり壁のところで止まってくれました
これはそれぞれに箱型の物理的判定と、円形の物理的判定を導入したということになっています。 なので、「Box Collider 2D」と「Circle Collider 2D」は名目は違いますが、大元の物理的に当たりようにするということは同じです。その形がすでに決まっていて、別のものとして設定されているだけということです。
それでは次にこの玉を量産しましょう!、といってもさっきの作業を何度もするのは大変、、、
と言うことで、プレハブを作ります。
これは前回アセットをダウンロードした時に、色形などすでにできているものを画面に追加していましたが、それを自分で作って設定するということです。
プレハブ小屋は壁をコンクリートや鉄といった材料からその場で作るわけでなく、すでにできたものをその場で組み立てますよね。そのプレハブ小屋のような感じで、あとは組み立てるだけで作れる!という素材を設定できるわけです。
作り方は、上のメニューからAssets→Create→Prefab
またはAssetsウィンドウで右クリックからのCreate→Prefabでできます。

作成してみると、Assetsに追加されていることがわかります。
名前は後で適当につけておきます。

それに左上のhierarchyからmachi ballへドラッグ&ドロップ。

上のようにprefabが設定されました。
これで下のように複数個ドラッグ&ドロップで追加して、

再生により、

複数転がすということができるようになりました!!(パチパチ!
実際に動かした方ならわかるかと思いますが、玉と玉がぶつかってコロコロする様子がわかるかと思います。
まるで本物さながらの動き!!
先人たちの偉大さを噛みしめる今日この頃です。
ちなみに、プレハブの元となっている最初に作った玉はプレハブと関連付けされています。なので、元のもののステータスを更新して、その後InspectorのApplyを押すと、その設定をプレハブにも反映させることができます。

なので、下のように、元のやつのrigidbody 2DのSimulatedをオフにして、Applyすると、

最初のように落ちないようにできます。

ここまではオブジェクトに物理エンジンをつけるということで、やってきました。
新しい概念すぎて詳しくわからないことも多く、とりあえず使えるから使っておこうって感じでここまでお送りしました。
特に右側の詳細設定には多くのわからないことが潜んでいて、完璧主義な人とかには気持ちの悪いような感じであったかと思います。
自分自身もいつもは、わからない部分を一つ一つ実験してわかるようにしているのですが、今回は正直わからないことが多すぎて早急に諦めました。これ時間かかるわりに実際には何も進まないということで、結構モチベーションがゴリゴリ減るんですよね、、、(共感いただけた人には親近感を感じるかもしれない笑
実際右側の詳細設定は上級者向けのもので、初心者で使うことはなかなかないと思います。
なので、最初のステージに、終盤でようやく倒せるようになるモンスターがいて、序盤はスルーするのが定石なゲームのようなものと思って、意識から除いてあげて下さい。ネットでは序盤で倒すとか縛りプレイをする人もいて、それはそれで面白いですが、
ここは縛りプレイしても辛いだけ!モチベーションの意地の方が大切!!
ということで、今回はここまで、次回もゲーム作成を続けて行きます。
次回はスクリプトの導入とかいう、プログラミングっぽいことをするのかな?
もちろんプログラミングしたことのない人にもわかるものを書くよ!(ってか多分自分もわからない言語と思われ、、汗
話が長くなりました。
また次回に続く!
〜ゲームについて素人から知れる、作ろう〜 アイディア検討(ゲーム制作ツール「machination」:実践編その4
「machination」Activationとグラフ作成
前回までは主にmachinationの確率操作についてや、State connectionという他のものの値を動作中に変更するものについて触れました。
下図は前回までのところ。

今回は前回軽く触れたactivationについて触れて、その後はみなさんお待ちかね(?)のグラフについて触れていきたいかと思います。
ではまずはactivationについてから、、

前々回では星マーク、そして前回では二重丸のマークのものについて触れました。
これはそれぞれ”自動で作動”と、”クリックによって作動”というモードでした。
そして動かしていて既にわかっているでしょうが、一番左のただの丸はデフォルトの”何も働かない”というモード。
ということであとは右の「S」というものだけ!!結構気がついたら、わかっているものが増えてきているのではないでしょうか!!!(個人的にこういうの純粋に嬉しい
ということで「S」のやつですが、こちらは、、、、
『最初一回だけ作動』
はい、正直あまり使わなさそうなものですね(笑
おそらくシステム全体の起動用みたいな使い方になるのではないでしょうか。
ここまででActivationについてはマスターしたのではないでしょうか。
ということでグラフの作成について作業に戻っていきたいと思います。

はいactivationをちょっといじりました。
前回の途中の状態だと思います。
machinationではプールやレジスタ?(これはまだ触れていませんね)の状態を時間を追ってグラフに記録できるそうです。
一応グラフについては基本的にはどの要素での記録ができるようになっているそうですが、poolとレジスタがリソースや値を蓄積できるものということで、この二つしかほとんど使わない。
まあ説明はここまでで、実際にやってみましょう!
ということで、Graphの中のChartというものを選択してドローイングエリアに置いて見ましょう。

これを、置くと、、、

はい!いかにもグラフという枠が出てきてまいりました。
これだけでは何も表示されないので、poolからグラフに向けてStateを繋いでいきます。

これなんですが、選択を外すと、

このように特別な表示となります。選択時だけはいつも通りの点線矢印ですが、選択を外すとこの表示になるということで、見た目だけです(笑
乱雑でなく、結構見やすくなるかと思います。
ちなみにこの状態はStateのthicknessを0にするとグラフに繋がっていないものでもできます。しかしこれは非常にわかりにくくなってしまうので、本当に乱雑なのを解消したくて、ダイアグラムへの理解が十分なされている場合に限りという感じですね。
それではこの状態でrunして見ましょう!!
結果がこちら!!!

はい!!グラフを見ていただくとわかると思いますが、二回ほど大きく下がっているところがあるかと思います。こちら、賢明な方には既にわかっているかもしれませんが、converterを使ったところです。
converterを使うと一時的にpool内の数は減りますが、増加速度をあげることができ、将来的に数が大きくなります。
目先の利益だけを見て、先行投資をしないでいると、先行投資している人たちにどんどん追い越されていく、、、なんか人生みたいですね(意味深
話が大分逸れましたが、こんな感じでグラフを使っていきます。
実際にやっている人は気がついたと思いますが、このグラフはデフォルトだと、自動でX軸Y軸がリサイズしていきます。つまり、時間が経つとグラフがどんどんと伸びていくわけですが、それに合わせてグラフの縦横のメモリが大きくなっていき、グラフのサイズとしては常に一定で枠内に収まっている訳です
(下図参照、、、頑張って作ったものなので、矢印に影がかかっていることには触れないこと笑

ちなみに自動拡張の際は最大がそれぞれ横軸100s、縦軸5000のようです。
これを一定にしたい場合、また最大をより大きくしたい場合は、グラフのエレメントパネル(ステータス)でScaleXとScaleYを設定することで解決できます。
もちろんラベル(名前)と色も変更できます(下図はX,Yが小さすぎて、10s以上の部分が見えなくなっていますね笑

このグラフ機能ですが、右上のclearを押すと、データを消去できます。消去しないまま実行すると、前のものが薄い線で表されたままとなります。
また、右下のexportをクリックで外部にデータを保存できます。ファイル形式はCSVファイルですね。
ちなみにmachinationではずっと放置しておくと、、、

このように100%を超えてどんどんと増加していきますよね。
これを100%で止めたいときはmaxを100に設定するといいと前回紹介しました。
しかし、それ以外にもより直接的な方法があるので、そちらも紹介しておきたいと思います。
それがこちら、

stateをpool2からconverterに向かって繋いでいます。
これは<5ということで、pool2が5よりも小さいときに機能するようになっています。
つまり、5を超えた瞬間、、、、

はい、このようにクリックできなくなる、この部分が機能しなくなるようにできるのです。
これはもちろん問題もあって、poolに溜めておいて一気にconverterを連打したりすると、封鎖される前に送り込まれてしまい、100%を超えてしまったりするのですが、このような機能自体を使えなくするという手法はなかなか使えそうではないかと思います。
ということで、今回はここまでとしたいと思います。
次回は最後に必要である、終了条件付けや自動で働く人口プレイヤーについて触れていこうと思います。
ここまでできればとりあえずmachinationの基本的機能は網羅したと言えるかも(!?)
ということでまた次回お会いしましょう。
またね!