00:02
ソルラジ、ゲーム開発の挫折共有トーク。この番組は、素人ゲーム開発者たちが、プログラミングにおける挫折をズレズレなるままに共有していく番組です。
ゲーム開発に興味のある方や、開発者の方の参考になることを目指した番組です。
ということで、今回2回目ですね。はい、よろしくお願いします。
私、パギジョウと申します。ヤブです。ソーマです。よろしくお願いします。
第2回目のテーマ。これは、プログラミングについてというところを、全く知らない人でも分かるような紹介のお話というところができたらいいなと思っています。
プログラミングですか?
ソーマさんとかは、プログラミングは、今あんまり知らない?
いやもう全然、1回でもプログラミングスクール通いました。
通った?通ったのに?通ったのにね。
これはよくない。よくない。うぜえ。
これ。これってか、これってか、僕の実力見せたこと一回もないけれども。確かに確かに。
そうよ。いやでも、あの難しかった。いや難しかった。難しかったっていうか、なんかモチベーション続かなかった。
それあれだよ。プログラミング学習に挫折するのって、90%なんだけど、それの多分第2位とか第3位ぐらいがモチベーションが続かないってやつなんだよ。
1位は、エラーが解決できないってやつなんだよ。
2位とかは、そこに付随して聞ける人がいないとか、そういうのがあったりするんだけど、多分そういういろいろあってモチベーションが続かないっていうところが挫折する多分大きな理由だから、多分相馬さんね、普通よ。
普通?そう。私からトータル褒められてないな、なんか。全然悪くない。そうか。
プログラミングについて、プログラミング教室行って、プログラミングだけ学びに行くってなると多分続かない気がするんだよね。何か目的があってプログラミングだけ知りたいって言ってもね、なかなかどうしても俺は続かなかったっていうのは。
いや続かないね、それ確かに。
いろいろ工夫はあるんだと思うんだけど、例えばスクラッチとか、ちっちゃいミニロボットを動かそうとか、そういうところがあるけど、そもそもロボット別に動かしたいわけじゃないなとか、人によってはゲーム作りたいっていう人もいれば作りたいわけでもないしなって。
そう、なんか仕事になるかなみたいなとか。
そういうね、学習を手段にするために何か目的を用意はしようとするんだけどその目的が刺さる刺さらないとかもあって、またモチベが続く続かないとかもそういうのも多分あるのが今の現状じゃないかなと思ってる。
03:07
そうだよね。今回ね話したいのはプログラミングって言葉はもうめちゃくちゃ今は日常で聞くとは思うんだけど、よくあるプログラミング説明をダラダラと言ってよりは自分の思ってるプログラミングとかコンピューター科学とかそういったところの、結構主観が入るかもしれないんだけどそういう話がわかりやすい話できたらなと思ってます。
で、なんだろうね、プログラミングとかいろいろそういう話する前に、ぜひ知っておいて俺は良かったなと思ってる話がデジタル世界についてなんですよ。
デジタル世界?
そう。
デジタル世界。
デジタルって言ったりするけど、デジタルの世界、日常で生きてる世界ってアナログな世界じゃないですか。
だけどデジタルなものとかができたり、バーチャルリアリティとかバーチャルの世界とかはデジタルの世界って言ったりとか、そういう電子機器とかのイメージってデジタルって言葉、連想しますね。
しますね。デジタルってイメージね。
そう。
電子機器の中はね。
デジタルって何っていうのがどう?
デジタル?
デジタルって何?アナログとデジタルの違いとかって。
違い?曖昧さ?
わからん。
アナログの曖昧さみたいな。
アナログの曖昧さ?どうなんだ?
アナログとデジタル、いろいろあるよ。定義はもちろんあって、非連続的なのがデジタルで連続的なのがアナログって言ったりとか。
難しいことだ。非連続的なの。
そう。とかっていろいろあるんだけど、デジタルの世界は0と1っていうところをまずイメージとして持ってもらいたい。
はい。
0と1ないデジタルの世界はすべてそこから始まってる。
なんかそれはわかる。0か1かみたいな。
そう。何て言えばいいんだろうね。
ちょっと待って。
デジタルって言ってまずはわかりやすく伝えられるのが、まず0と1っていうのはオンとオフ。オフとオンかな。
0がオフで1がオンみたいなイメージ。そこからすべて始まってるんですよ。
ライトをつけるときはオンするじゃないですか。1。オフするときは0みたいなところ。
それがもともとあって、昔、歴史としてね。それをうまく複雑的に組み合わせることによって、0、1がどんどん大きくなっていって、
06:01
1、0、1、0、1、1、0、0みたいなそういうところを操作したりするようにできて、デジタルの世界っていうのが発展していくわけですよ。
その過程でトランジスタとか回路だったりとか、ICチップとか聞いたことないですか。
そういうのは全部そういったものをすごい器用に0と1をコントロールするものっていうようなイメージから入ったほうが取っ付きやすいかも。
その例としてはね、例えば白黒のゲームボーイの画像をちょっと想像してほしいんだけど、とかピクセルアートとか。
あれって0と1がたくさんできてるものなんですよ。
あそこの画面とかもすっごい近づいてみると一個一個分かれてる点滅みたいな。
画像というか写真とかもそうだけどね。
あれが1は黒、白は0みたいな。
ので、0、1、0、1みたいな感じを平面に並べると一つの白黒の画像ができますよねって。
それもデジタルでできてることなんですよ。
あとは、例えば人と連絡するときに2トン2トンみたいな。
モール信号。
モール信号。
あれも考え方としては0、1を送ってるんですよ。
1、0、0、1、1、1みたいな。
それを暗号にして言いたいこと。
その暗号を受け取ってそれをまた展開する。
逆変換してこういうこと言ってるんだみたいな。
あれも0と1でできてる。
考え方としてはデジタルなんですよ。
1と0を展開して作ってるものっていうものがまずデジタル世界の始まりっていうところから
プログラミングっていうのはそういった0と1でできたデジタルのコンピューターっていうものを使って
また器用に組み合わせていろんなことやっていけるものがプログラミングっていうところになってくるんですよ。
そういったものはコンピューター科学っていう学問のジャンルになっていくんですよ。
そういう学問があるんですね。
よくあるのがプログラミング学ぼうってなったときに急に言語から入るってまた違うと思う。
コンピューター科学から入るのとまた違って見えるというか。
それどっちがいいかっていうのもあるんだけど結構言語から入ってみました。
難しい。何に使えばわかんないとかそういう言語を学ぶ上でまた迷ったときの方法の一つとして
09:01
コンピューター科学っていうところから触ってみるっていうのは一ついい手段かもしれないと思うんですよね。
比較的最近話題になった本があって14歳から始めるプログラミングっていう本知ってます?
わかんないです。
海外って中学生とかからパイソンとか言語を触ったりしてるんですよ。
それを触る前にコンピューター科学っていうところから学んでいきましょうみたいな話が始まるんですよ。
コンピューター科学っていうのはデバイスだったりコンピューターとかそういう今言ったデジタルのもの考え方とかそういうのを使って
日常だけじゃなくて様々な課題を解決していきましょうっていう学問なんですよ。
それを使うだけが学問じゃないよっていうようなもので。
その解決をしようっていう学問の中でまた分類がいくつかあるんですよ。
データの分析っていう項目だったりアルゴリズムとかプログラミングっていう項目があったりネットワークっていう項目があったり
そういったものを学問として学んでそれを課題解決に役立てようっていうようなものなんですよ。
その本とかそういう説明では急にプログラミング言語を学びましょうではなくて
もともとコンピューターとはこういう歴史があってみたいなこういうもので作られて
そこからなんですね。
そういうような話がそんなにガッツリした内容じゃないんだけどそういうところから始まったりしてるんですよ。
そこはすごいかいつまむんだけど最初に話したかったのはそういう意味ではデジタル回路っていうところ
デジタル世界っていうところからそこをちょっとさらっとでも触れると今後プログラミングをしないにしろ
GPTとかあらゆる機器のものとかゲームのエラーとかそういうものが起きたときに
こういう感じなんかなって捉え方として1個違って見えるんじゃないのかなっていうところで結構おすすめです。
なんかその広く1回見てその中のものを理解していくっていう順番みたいなことですかね。
そうだね。
なるほど。
例えばさプログラミングって言ったときにさイフ文とかってわかります?条件文とか。
イフ文は聞いたことあります。
聞いたことあるでしょ。
A行ったらこっち行ってB行ったらこっち行ってみたいな分岐点を作っていくっていう。
そうそう条件分岐って言ってもしこれこれがこれならばこっちに行く。
そうでなかればBに行くみたいなAかBに行くみたいな。
英語のイフと一緒ですよね。
そうそう。
もし何ならばこっち。
そうそう。これは言語問わずプログラミングっていうところの考え方の大きな考えの一つなんだけど、あれも結局0と1なんですよ。
12:08
そうか。Aの方が0だって。
Yesが。
Bの方が1とか。
そうそう。Yesが1、Noが0みたいな。
じゃあ全部動き方は01をベースに動いてるんですね。
そうそう。
そうか。0の方か1の方か。だから二択とかそういうのが。
確かにドラクエの選択肢ははい、いいえっていうイメージが多分それもイフ分なんでしょうね。
そうそう。ちょっと話戻るけど、デジタルで画像の話したじゃないですか。
それで白黒って表したときは白は0で黒は1みたいなシンプルだけど、
じゃあカラーの写真とか画像はどういうデータになってんのって。
どうなってんだろう。
あれも一応カラーでも一個一個画素っていってピクセルっていったり、
粒々が並んでできてるじゃないですか。その一粒って白黒だったら0か1なんですよ。
だけどカラーはいろいろ表現方法あるけど0からFFFFっていう0から255とか数値が入ったりするイメージなんですよ。
1だったら0だったら白、1だったらちょっと灰色みたいな。
で300だったら赤色とかネットして。
01で使ってもうちょっと別の大きい集合体とか大きい数字を表して、それで判別して色を変えてると。
そう。で一個一個の画像は色を持ってる。だから01で白黒で表せられないから、
だから0から255を使ってそこに数値を一個一個入れてって色を表現しようっていう考え方。
そんなめんどくさいことやってんですね。
でその一つの画像が例えば30って入ってたときにその30っていう数字も実はそういう数字も0と1で表せるんですよ。
それが二進数っていう考え方なんですよ。
なんかやった2とか2の2乗とか2の3乗とかなんか教科書で見た気がするけど。
これは日常生活では十進数っていうものを使って数字は多分会話してると思うんですよね。
十進数っていうのは0から9を使って数字として。
それは10種類あるじゃないですか。それを使って数字を表していくこと。
だから0123456789って10個いったら次は1010ってなって111213みたいな。
でまた10種類いったら21みたいな。
だけど二進数っていうのは0と1だけを使って全ての数字を表すっていうような考えなんですよ。
じゃあ01っていうデジタル世界と全く一緒なんですね。
15:02
順番で言うと011011みたいな。
そういうどんどん桁が増えて0と1で表していくような感じなんですね。
一言で言うと数字は0と1で全て表すことができます。
なのでカラーも0と1で表すことができます。
なるほど。そうなんだ。
なので結局白黒の絵もカラーの絵も全部0と1で表現できるんですよ。
だからパソコンの中に入ってるものは01で表現できないものはないってことだよね。
そう。
ゲームもそうですし。
そう。全てそう。
全てそう。
そう。たぶんキーボードのボタンを押す。それも1。
クリックするのも01。
音楽を出すのも01。
そうそう。
映像を出すのも01。
その01がたくさん集まって。
すごい。これは01の集合体を見て僕らは認識してるんですね。
そう。それをデジタルの世界って言うんですよ。
で、アナログっていうのは何かっていうと、さっき言った色を表現するときに0から255って言ったじゃないですか。
それは逆に言えば255種類の色しか表現できないんですよ。
じゃあそれ以外の微妙なオレンジとかちょっと赤みのあるオレンジとかそういうグラデーション的なそういうものがアナログなんですよ。
それが連続的っていうのは白から黒に遷移するその間の灰色。
それが全部間があるっていうような考え方。
要は表現の仕方は無限大なんですよ。
はい。
アナログだと?
そう。アナログは。だからデジタルの世界っていうのはそういったところの情報をある程度抜粋して収めてったものなんですよ。
なるほど。色の遷移とかは映像で見てるときは実はあれはデジタルに変換されている映像の遷移だからアナログの時に見た光景とは全く別物っていう風に思わないといけないですね。
そう。自分の目で見てるものはアナログなものだから例えば風景を見たときに感じるものは何かしらの情報が落ちて写真になってるんですよ。
焼き付ける機械の制限とか制約とか映し出すパソコンの制限制約になった上で見てようやく認識してるから何かしらの01変換変換しまくった後のものが見えてるっていう感じなんですね。
じゃあめちゃくちゃ情報落ちてる感じあるんだけど全然そう見えない理由は今技術の発展なんですよね。
画素数がすっごい小さくなってもう全然わかんない。目で確認できないぐらい細かくなったりあとはその色の表現がさっき255って言ったんですけど今は多分6万とか7万とかで一つの色を表現したりする。
18:07
もできるんですよ。そういうふうにしてめちゃくちゃ細かくできるから今はすごい遜色ないような感じに見えるんですよ。
それっぽく見えるんですよね。
グラデーションもなるべく数を増やすことによってそれを表現したりとか。
そうそう。
すごい努力してるんですね。
そうだね。だから全てのデータは0と1でできてると思ってもらって。
じゃあその01をパソコンで表現するために組む指令みたいなのがプログラミングってことですか。
そうそう。
0101011000っていうのをあらかじめ入れてってるみたいな。
そうそう。それを本当に真面目に0101ってやってるとむちゃくちゃ大変なんですよ。
大変だよね。
むちゃくちゃ大変でしょ。だって写真で言うと1つの画像で色が6万通りとかあったとして。
いや無理です無理です。
やっとこれ100にしようこの人。
ってやったらもう今の写真っていくらぐらい?1000万画像とかも結構当たり前?
そうなんだ。
何百万画像とか。
何百万画像っていうのはもう当たり前。
当たり前じゃん。そうなってくると何百万画像って数百。
それこそパーポので作ってるときの文字の色変えるときも何万色の中からこれ01010000とか。
そういうことを手作業でやるのは現実的ではないし、そういうのが得意なの。
CPUとかパソコンとかそういうものが得意だからそれをうまく使っていこうねっていうのがコンピューター科学っていう考え方。
そういう01のものをうまく使って人間の役に立てていこうっていう学問。
そうです。
なるほど。じゃあ01やさんなんですね。
でも01って意識しなくても全然いい考え方としては全然通じるというか、そういうの意識しなくても学べるからもちろん。
全然使えるから。だからそういうのは知らなくてもいいんだけど、知っておいた方は結構コンピューターって魔法すぎ、魔法だなみたいな感覚をちょっと解消できたらいいなっていうのは思ったりしてるんですけど。
すべてが01の集合体っていうことですね。
それを見て僕らがアナログの意味付けをしてるっていうのはまた面白いですね。
そういうことね。
そういうことですよね。受け取るときは01受け取ってないですもんね。
そういうこと。
これは何が何ピクセルの何が見えているとかじゃなくて。
まさにそういうことだよね。
なんかすごい素敵な人が映ってるとか、ゲームで勝ったとかっていうふうに自分の中でストーリーとかアナログに変換して受け取ってるみたいな。
21:00
そう。
面白いですね人間って。
そうだね。そういう暗号化っていう、ちょっと言葉にすると難しいこと。
そうか。
符号化とか暗号化っていうんだけど、そういうことをやってるんだと思う。
めちゃくちゃわかりやすいモールス信号を使って芸術作ってるんですよ。
例えば日本語とか言葉で喋ってるのも結局そうだよね。
そうね。
ルールに基づいたそれを文字っていうのを使って伝えていきましょう。
そうですね。
読み解いていきましょうっていうことだから。
それが文字情報になってるのがプログラミングみたいな感じで、それを音声で読み上げたり、周りの音も含めて伝えるとちょっとアナログ地区になるみたいな。
そうそうそうそう。
違いもある感じはありますね。
そうだね。
だからプログラミング言語っていうのはパソコンと対話する言語だよっていう言い方もあったりしますね。
そっか。こんな風にやってみたいな。
そうそうそうそう。
SiriとかAlexaと変わんないってことですね。
そういうこと。だからAIを活用するっていうのも広い意味ではプログラミングかもしれないよね。
音楽を流すっていうプログラムを発動してっていうのを言葉で言ってるだけですね。
そうそうそうそう。
なるほど。
っていうような。
広いな。プログラミング広いな。
だから今回話したかったのはプログラミングっていうものがどう日常に溶け込んでいるというか役に立っているかとか、
ちょっと顕微鏡で見たときは実は01だよっていう、そういう話を結構していきたいな。
なるほど。プログラムとはコンピューターに指示を出す01であると。
そうそうそうそう。で、あらゆるデータは01でできている。
帰ってくるものももちろん01で流したから01は帰ってきてると。
そういうこと。音楽だって01だからね。
そうですよね。
01。このHz、どのHzがっていう数字だったりとか。
なるほどね。
結局あれも何かしらデータに落とし込んでて、それをその時その時で1,0にすることで音として出てくる。その和音とか。
で、それが音と音の間が、感覚が広いと音として洗いし、細かいと綺麗な音だしっていう。そんな感じなんだよね。
そんな感じが一つ。
プログラムっていうのはそれは一つなんですね。
そうそう。
デジタル世界に紐づいてるから最初この世界観の話をしてくれたんですよね。
その中で動くためには01が必ず必要だから01を使って何か指示出してるっていうのがプログラムっていう。
プログラミングっていうのは僕が開発してる中で思うのは01の集合体だなっていうのはすごくしっくりくる。
どの辺で感じてるんですか?
スイッチのオンオフみたいなのを組み合わせて何か機能を動かしてるっていうイメージですかね。
そうか。
例えばゲームで言うとキャラクターの状態とか、あれも01で表したりするんですよ。
24:06
例えば最初HP満タンで元気な状態、それを1。
で、HPが0になって倒れちゃったっていう状態が0みたいな。
それを1の状態だったら攻撃ができるしガードもできるしとかっていうんだけど0になったらゲームオーバーになるよみたいな。
なるほど。
そういう1と0っていう情報を使ってゲームが展開していく。
なるほど。今なんかゲームやってる中で思ったときにHPが20%以下の時はこれが発動するとかありますけど、あれも01の考えですよ。
結局そのイフの考え方でHPが20%以下の時にはそれが1になる。
だから発動条件とかも踏まえてそれが全部色濃く出るんですね。01で判断されて何か出力されるっていうのが基本なんですね。
そうです。
だからこの考え方は1つ、プログラミングやってる時にいいなっていうのは思いますね。知ってて。
なるほど。なんかそうですね、そこの前提知ってると知ってないとで、アナログに返してくれると思ってアナログで入れちゃって全然起動しないとかありそうですね。
そうかもしれないね。
その辺がまた上手いことをやってるのがチャットGPTとかだと思うんですけど、アナログで出してデジタルに答え出させるみたいな。
あの辺りもすごい01を逆に上手いこと使ってやってる感じがしますけど。
そうそうですね。
01を意識しなくてもいいようにね。
そうそう。なるべくそっちに行ってますよね。
それが本当はあるべきなんだよね。
そういう意味では01っていうものに一番近い言語っていうのが機械言語って言ったりするんですよね。
機械言語っていうのがあるんですか。
C言語とかPythonとかJavaScriptとか今よく聞くやつあるじゃないですか。
あれよりもっと古い言語があるんですよ。
それがプログラムするときに本当にオンとオフを変えてるような感覚。
最低限の知恵はあるんだけどね。
そういうのがあって。
あともう一個ポイントとしては、0と1っていうのができてるけど、それをちゃんと保存するっていうメモリ。
それもあって初めて成り立つことなんですよ。
スマホとかね。ちゃんと記憶してるでしょ。いろいろ。
01貯めてるんだね。
貯めてるの。ちゃんとデータを。
その貯める機能っていうのもコンピューター科学には必要不可欠。
それがデータっていう考え方。
データベースっていうのはその塊なんですね。
意外と当たり前に使ってるし、感覚的に思ってることはあるんですけど、構造は全く理解してないなっていう。
01の世界ってそういう概念するのないというか。
27:02
そういうのをブラックボックスって言ったりする。
日常用語でも使うのかな。ホワイトボックス、ブラックボックスって言って。
分からないものを分からないままとして閉じる。
ことをブラックボックス化って言ったりするんですよ。
デジタルの世界とかを01でできてるっていうのを知らなくてもパソコン使えるじゃないですか。
それはブラックボックス化されてるし。
でも知らなくても使えるようにしてる。
だからブラックボックスはブラックボックスのままでもいいかもしれないし、知っといたほうがいいかもしれないし。
そこはね、結構なんか議論で分かれるところだと思うよね。
分かれますよね。
分かれると思う。
極端な話したらプログラミング勉強せずにチャットGPTのアナログで伝えて帰ってくるとこだけでいいじゃん説みたいなのもなっちゃいますもんね。
人によっては。
そうだと思う。
分かんないもんね、いいのか悪いのか。
これもね、個人的に思うのはいい悪いとかじゃなくて何を目指したいかなんだよね。
それで結局、それで例えばチャットGPT作りたいんだったら、AIとか作りたいんだったらその元、作るための元の知識いるよねと。
まあそうっすよね。
ただゲームの単純な試作を作ってみたいんだでチャットGPTを使って作りたいものが作れるんだったらそれでいいよ。
そうね。不要不要じゃないとかじゃなくて自分がちゃんとやりたいことに対してどこまで必要かって自分で見定めて選んでいくっていうのがいいんじゃないみたいな。
その見定める知識ぐらいはあると便利かもしれない。
行きやすいと思うよ。
そこまで行くのも大変なんですよ。
そうだよね。
誰か教えてっていう。
そうだよね。だから今言ったような話、それもデジタル世界とか全然興味ない人は興味ないと思うんだけど、そういうような話をいろいろできたらね、し続けてったらなんかそういうのがだんだん見えてきたりするんじゃないかな。
するのかな。
分かんない。
分かんない。
します。
やってみよう、そういうの。
なんかスタップ細胞みたいに言ったけど。
あります。
あります。
それがプログラミングとプログラムの大体のあらましなんですね。
最初によく話。
なんかいろんな言語あるじゃないですか。
そもそも多分いくつか言ってると大変なんですけど、これをやるためにはこれとかってあるじゃないですか。
例えばAIだとPythonが多いとか、ブラウザーだとJavaScriptとか、ゲームだとC++とかそういうやつの聞いたことあるんですけど、この必要な言語とゲームに関する言語みたいなのって何がどうなってそうなってるのかってあるんですか。
そうだね。結構長くなるよ、それ。
長くなる。
そこって要は言語じゃないですか。プログラミング言語って言語なんで。
30:03
01の伝え方の違いってことだよね。
そうそうそうそう。伝え方の違いで、得意不得意とか言語の特徴ってやっぱあるんですよ。処理速度とか。
ポイントとしては実行したときに処理が早い遅いってあったりするんですよ、言語によって。
あとはプログラムを組むときの考え方みたいなのがそれぞれ概念とかそういうのが違うんですよね。
ちょっとそういう言い方するとちょっとむずく感じるかもしれないけど、まずはやりたいものとかそういったプログラム興味ある人はサイトにいくらでも載ってるんですよ。
これはこれが得意みたいな。JavaScriptはサイトとかそういうのが得意とか。そういうのは参考にして、あんまり疑問に思わなかったらそれはそれで進めてもらって。
だけど、すごい簡単にかいつまんで話すると、プログラミング言語で一番早い言語なんだと思います。
早い言語。
一番早い言語。
速度とか僕測ったこともないし、考えたこともないんですけど。
今日話した中で出てきましたよ。
ブラウザとかだからJavaScript?
はい。
スタブ細胞ですか?
あります。
じゃなくて機械言語じゃないですか?
正解です。
そもそも機械言語って何っていうとこからなんですけど。
機械言語そうだよね。機械言語って名前ついてないからちょっと気持ち悪い?
アセンブリ言語とか。
マジわかんない。何それ?
聞いたことないでしょ。
おいしそうだね。ちょっとアセンブリってなんかおいしいお茶みたいな感じ。
あの、センブル茶ですか?
まずそうそれは。
長いやつですよそれ。
あの、なんて言えばいいんだろうね。
今さ、コンピューターに指示する時とかそういった時、コンピューターに指示するっていうのもおかしいんだけど、
例えば電気をつけたい時に何するかって言ったらスイッチオンするじゃないですか。
はい、するするする。
単純に。
それって電気の話になってたり化学の話にもちょっとなったりするかもしれないけど、電気を通すことでオンするわけじゃないですか。
で、その次って機械言語って何?っていう話なんですけど、さっき言ったデジタルの01に本当に近い書き方をするんですよ。一言で言うと。
例えば日常会話日本語ってあるじゃないですか。日本語はプログラミング言語として見れば機械より結構遠いわけよ。
0101って喋んないですもんね。010101があです、0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
33:07
今で言った日本語みたいな、コンピューターにとって回りくどい言い方か直接的な言い方かとかで言語によって違うんですよ。
わかる。
で、回りくどい方が人は書きやすいんですよ。
はいはいはい。
極端な話。だから回りくどくても成り立つわけであって。
確かに。
要は、プログラマーが書きやすい、シンプルだなって思えば思うほどコンピューターが結構難しく感じる傾向にあるみたいなイメージ。
はいはい。
コンピューターに寄せた0101っていう書きづらいな、めんどくさいなってやつが一番コンピューターにとってはありがたい言語なんですよ。
なるほどね。
その0101をいっぱい入力するイメージなのが機械語なんですよ。
だけど一応命令はいくつかあったりするんですけど、だからコマンドも種類少ないんですよ、機械語は。
コマンド種類少ない代わりにめちゃくちゃ打たないから。
ああそういうことか。そういうことか。
一個一個指示を0101で書いていくって方向に寄せていくから、一個一個の指示の内容が増えちゃうって。
そうそうそうそう。なんだけど、例えばプログラミングをCPUが理解するために、一回そういうのがあるんで、
例えばC言語とかJavaScriptでプログラム書きましたって言ったら、一回それをCPUがわかる機械の言葉に直すっていう作業をするんですよ。
それをビルドとかコンパイルって言ったりする。
翻訳してるんですね。
翻訳をするんですよ。
言語っていうのは本当まさに普段話した日本語英語とかと一緒で、
そうそうそうそう。
一回Google翻訳かかませて伝えてるのか、いきなり英語でしゃべって伝えてるのかの違いとか全然早さが変わりますよね。
そうそうそうそう。翻訳時間がその処理速度の違いっていう。
そうなんだけど、翻訳は実はコンパイルっていうところで翻訳をするんだけど、
C言語とかちょっと古めのちょっと歴史ある言語系は一回コンパイルをしてから、
あとはその機械語に直ってるんで、その機械語を実行させ続ける感じ。
だけど結構最近の言語とかでよくあるのは、コンパイルし、翻訳しながら実行するみたいなのがあるから、
同時変更なの?
そうそうそうそう。だからそれだけで時間かかったりすることもあるんですよ。
同時通訳。
そんな感じ。そんな感じ。
忙しいよね。
それは実行の時間もかかっちゃうよねっていうような。
そういうのがあったりするので、機械語が早い理由っていうのは、そういう意味では翻訳が不要だからっていうことだし、
その読むときに直接的だから、読むのが早いんだよね。
そうだね、確かに。直接的にスイッチ自分から押してるのか、スイッチ押して誰かに頼んでその人が押してるのかみたいな。
そういうことそういうこと。
36:00
全然違うよね。
そうそうそうそう。だから言語の違いの処理とか実行速度が違うっていうのは今言ったようなイメージ。
なるほど。それぞれの言語の中での違いがあるんですね。それの噛ませ方とか伝え方とか、
その領域においてそれが同時通訳がいいのかとか、それとも一回溜めといて一気に流すのがいいのかとか。
で、いくとそれぞれによって全然違うものなんですね。
ゲーム開発でいくとCシャープとかその辺が今あるっていうのは、それはゲームに適してるってことですよね。
そうだね。すごい簡単にふわっと言うと、歴史的には最初、結構遠回りしちゃったんだけど、その一番早いっていう機械言語、そういうのができて、
要はCPUを作っていって、その機械言語っていうものからだんだんC言語っていう、機械言語よりは人が作りやすい、組みやすい言語になってきた。
で、さらにもっと組みやすいものが出てきたりするんですけど、そのC言語っていうのは一番得意なのはそのメモリっていうところをきちんと管理をするっていう特徴があるんですよ。
なるほど。ちょっと仕事できる人風だね。
いや、そうだね。そういうイメージあるね。逆に言えば、メモリをきちんと管理しないとダメだった時代なんですよ。
その時代との結構背景とかもそういうところも結構リンクしたりしてるんですよ。
そっか。昔はデータ容量いっぱい入れられないから、小さいやつでやらなきゃいけないとかあったね。
そう。ファミコンとかそういう時代とか特にね。
カセットゲームとかね。容量決まってるもんね。ネットと違って。
そう。簡単だし、メモリっていうのは増やせば増やすほどお金がかかる。
その部品もね。それなりにするんで。
今はね、そういう意味ではコストもだんだん下がってくるし、メモリの容量もどんどん大きくなってくるからあまり意識しなくていいんだけど、
当時機械とかそういう言語とかできた後っていうのは、C言語とかの時代はメモリっていうところがあまり多くないところを効率よく使おう。
最大限に使おうっていう考えでメモリ管理がきっちりしてるし、しやすいっていうのがC言語の特徴なんですよ。
なるほど。しようっていうよりかはしなきゃいけない時代だったっていうことね。
その時の時代のリソースっていうんですかね。資源の状態によって言語のあり方っていうのが変わってるんですね。
それでいくとさっきのウェブで使うやつの言語とかだと、そこら辺が無人像になってそう。管理とか適当みたいな。
もっとクラウドとかそういう時代になってきて、メモリっていうのは外部のデータ、インターネットを通して外部のメモリ使えるじゃんってなって、
もうリソースたくさんみたいな感じになってきて、そのメモリとかも気にする必要ないんですよ。
39:06
そうね。全部AWSで入ってるじゃんみたいな。Amazonのサーバーに入ってるやんみたいな。
そうそうそうそう。どんどんそういうのを使っていって、例えばゲームとかはCシャープとか、Javascriptとかそういうのはオブジェクト思考って聞いたことある。
オブジェクト思考。
そういうオブジェクト思考言語って言ったりするんだけど。
そういうのも言い方いろいろあるんだけど、ふわっとイメージとして思ってもらえば、以前のメモリカツカツ時代ではなくなってきたから、どんどん必要に応じてメモリをどんどん使っていこうぜみたいなこともできるわけよ。
それが例えばゲームで言うと、ゲームの中で銃を乱射するとか、そしたら弾がどんどん出てくるわけじゃないですか。
とかその中の物理演算とかどんどんするわけじゃないですか。それに応じてどんどんメモリを使って、その中で計算をしてやっていく。
それでもどんどん使いすぎるとどうなるかというと、処理がちょっとずつ重くなっていって、カクつくみたいなことがあるじゃん。
昔のプレステの初期語りのゲームとかだと、敵いっぱい出てきた時にスローになるみたいな。
三国無双とかさ、敵多いで必殺当たるときに逆にもう撃つしきれんくなって2人しか見えなくなったりとか。
携帯ゲームとかでもたまに重たいなみたいな。
そうそう。あそこら辺はメモリとの戦ってる時代の一つだよね。今でも全然戦ってるんだけど。
そういうのがあって、じゃあそういうところから特徴としては、CシャープとかそういうJavaScriptっていうところは比較的クラウドとかオブジェクト思考っていうところがあって、
ゲームとかそういったところでメモリをそこまで気にしなくても使えるような言語のイメージ。
なるほど。
ただC言語っていうのはそのメモリを管理をしっかりしないといけない。
じゃあC言語って今もあるの?使われてるの?っていうのもちょっと疑問になる。
時代が変わったら何か必要性も変わりそうな感じがすごいする。
実はめちゃくちゃ必要なんですよ。
めっちゃ必要なんですか?
めっちゃ必要なんですよ。何に必要かっていうと、
例えば冷蔵庫とか家電製品って今コンピューターって入ってるわけですよ。
当たり前の意味。
だけどその冷蔵庫って極端なし、ゲーミングができるほどいいスペックのCPUが入ってると、それだけで何十万も冷蔵庫の値段って上がるんですよ。
確かに。冷蔵庫にじゃあプレステ5ぐらいのやつを乗っけとって何か意味があるかって言ったら。
ないでしょ。
ないよね。
最低限のCPU乗せるでしょ。
恐ろしい画像処理をするわけじゃない。
そうそう。そんなことにコストかける必要なくて作る側。
じゃあめちゃくちゃ最低限なメモリとかCPU搭載してるんですよ。
そっか。そのほうがコスト下がるからね。
そう。
モロモロがメモリ下げて支持内容を少なくすれば。
そこでC言語。
なるほどね。じゃあ今日はちょっとお昼奮発してステーキ食べたから、夜はお茶漬けだっていうときのお茶漬けニーズがすごいあるわけね。
42:08
そうなのかもしれない。
そうそう。コストっていうところでいけば。
あと、コストが低くなるためだけじゃなくて、そういうのも性質としてあるから、そういうのを組み込み系って言うんですよ。
パソコンとかじゃなくて、家電製品に乗ってるものとか、デバイスに乗ってるCPUとかそういうイメージでいいんですけど。
そういう組み込み系っていうものは、結構小メモリの考え方があるんで、C言語とか理想は機械語とかが、
確かに確かに。
小スペースにもなるし、コストも下げられるし、処理速度も安定してるというのもあるし、
もう一個はね、飛行機とか車とかロボットとかそういうのも組み込み系になるんですよ。
なるほど。
それで、メモリとかを万が一でもメモリの処理オーバーとかしたったりして壊したりしたら人の命関わるじゃないですか。
いや、まずいですね。
まずいじゃないですか。そういうのはガチガチにメモリは管理しないとダメなんですよ。
ダメですね。それは確かに。
そういう安全設計という考え方もあるんですけど。
なるほど。
そういうところでは、C言語っていうのはメモリをきっちり管理するっていう意味ではめちゃくちゃ必要な言語なんですよ。
そこが制御できたほうが動きの管理もちゃんとしたそうですね。
そう。
間違いがあっちゃいけないところは逆にそれでやっといたほうが安全だなっていう考えもあるんですね。
そうそう。
やっぱ向き不向きなんですね。
そう。だから時代によって昔よりはC言語っていうのは昔は何でもC言語だったけどそういう必要はなくなってきたから減ってはあるけど確実な需要が今あるっていうのが現状。
そうか。なるほどね。
だからゲーム作りたいってよりはこういうものを作りたい、ロボット作りたいとかこういう電気製品とかそういうものを作りたいっていったときに意外と関わりがあるかもしれない言語がC言語です。
なるほど。
ジャバスクとかCシャープっていうのはもっとメモリー管理とかってよりはそのC言語とその考え方が結構大きく変わるんですよ。
その変わるのがC言語っていうのが手続き型言語っていったりするんですけど、
ジャバスクリプトとかそういったものはオブジェクト思考とかって言うんだけど、これ何って説明するのね結構時間かかるんだけど、
ザクッと言うとどんな感じですか。
ザクッと言うとそのものの捉え方、ものをオブジェクトって言い方するんだけど、それをちゃんと性質としてクラスとして定義してあげて、
45:04
ものを定義してあげるからものの複製とかそういうものがしやすいとか、ものの定義の幅を広げやすいっていうのがあって、
ゲームに出てくるものとかをそういうものが作りやすいって言えばいいのかな。
なるほど。
これねごめんね多分ね順番微妙かも。これを話しするためには何か一個プログラムの言語を何か一個さらっと知ってた方がいいかも。
比較しやすい。
そうそうそうそう。
そこから見た方がいい。
ごめんうまく説明できないわ。
とりあえず何かその2つ見方が言語であるっていうのはオブジェクトと思考と手続き型の2つがあるっていうところまでにしておきましょうか。
そうそうそう。今はもうオブジェクト思考がもう圧倒的多い。
ゲームはそのオブジェクト系ってことですね。
Pythonとか聞いたことないですか。
ありますよ。
あれもそうそうそうそう。Pythonとかそういうのも、またね関数型言語とかもいろいろあったりするんだけど、Pythonも結構最近のイメージあるじゃないですか。
あれ結構出てきたのって結構昔ではあれ確か1990年代前後とかじゃない。
結構昔からあるんですよ。
じゃあもう30年近くあるのかな。2、30年はあるってことですね。
そうそうそう。だけどここ最近またAIっていうところのプログラムが得意ってところで一気に来たね。
そうか。かみ合わせがやっぱ重要ってやっぱこう変わっていくんですね。
そういうこと。
なるほどね。
その時代背景にも大きく左右したりするものになってますね。
そうすると言語初心者とか学んでない人とかは何から学べばいいっていう話でいくと。
でもやっぱり言語の不得意不得意っていうよりかはそれが得意な先に何があるかっていうのを見て、
ゲーム作りたいんだったらCシャペットとかそっちのほうがいいのかなとはちょっと。
そうですね僕はそのほうがいいと思いますね。
で、そうだよね。
言語かな。
作りたいものがないけどまずはプログラミングっていうのを今後のために学びたいですっていう人がいたらね。
今は多分多いのはPythonとか。
多い多い多い。
多分JavaScriptとかじゃないかな。
なんかねそうだよね。
でもね一定数いるのがねC言語。
俺も結構そっち派なんだけど。
そっち派って何でC言語から出てくるんですかこれ。
C言語って例えばCシャープ学んでも多分半分ぐらいはもうねC言語ない。
C言語書いても全然通るしあらゆるものの基本みたいなイメージなんですよ。
なるほど。
すごいねちょっと抽象的な言い方するとC言語って例えばレゴでレゴのブロックをちゃんと積み上げて積み上げれば何でも作れますみたいなイメージなんですよ。
48:02
だけどそのなうい言語というかそれ以降のものはなんかそれをもうすでに組み上がってるものをうまく使いましょうっていうこともできたりするんですよ。
さっき言ったJavaScriptとかCシャープの特徴の一つがあれなんですよね。
あらゆる機能というかそういうものってクラウドから引っ張ってきて自分の中でそういう機能を追加することができるんですよ。
例えばなんですけどツイートするアプリを作りたいなみたいなことやったら何が必要かというと
Twitterの会社が出してるプログラミングとして使っていいですよっていうコードが公開されてたりするんですよ。
そういうのをAPIって言ったりするんですけどそういうのをインポートみたいなもらってきてそれを自分の中でプログラムで書いてツイートみたいな感じでやることでツイートするアプリを作ることができるんですよ。
あるよね。一つだけ文章書いたらFacebookにもInstagramにもTwitterにも全部載りますみたいな。
そうそうそう。そういうサイトとかもTwitterのAPI使ってたりとかそういうのがあったりするんですよ。
だけどC言語とかはネットにつないでいないみたいな前提があるからそういうのをインターネットからもらうみたいな仕組みはない。
なるほど。ほんとそこの中で完結するんですね。
そうそう。自分でツイートする関数も自分で作りなさいみたいな考え方と違う。
全部そこから。
そういうこと。
なるほどね。
でも作れるよっていうのがC言語みたいな。
1から全部作るって感じですね。スーパーで材料から買いに行くのか揚げ物先に買って食べるのかみたいな。
そうそうそう。
全然違いますね。
っていうのが、待ってごめん何の話してたっけ。
何から学べばいいのか。
やっぱり大元から学ぶっていう方法もあれば枝端から学ぶ方法もあるんだなっていうのはちょっと今聞いてて思いましたね。
本当は多分理想なのは枝端というか目的。これをしたいんだっていうのがあってそのために必要な言語を学ぶっていうのが多分一番いいんじゃないかな気持ちいいんじゃないかなって思うんだけど。
モチベーションだね。
そこはあるかなと思って大事というか。何から学べばいいかっていうのは。
ゲームが作りたいからこの言語を学ぶっていう方がやっぱモチベーションもつながるし。
プログラミングざっくりと漠然とってなるとなかなか続かない。自分が続かなかったっていうのはあるからね。
でもさ今多くない?子供とかだったらさ。
だって将来決めるわけでもなくてさ、いろいろな可能性を広げたいっていう人たちもいるわけじゃん。
それは大人だってそうだし。そうなった時のスキルとして持っといた方がいいなっていう感覚で学習する人もいるじゃん。
51:03
その人も目標を持てたのかどうかなんだよね。
でもそういう人たちでも学べるべきじゃん。そんなの。
そんな敷居が高いものにはなってほしくないというか。
学校で習う英語とちょっと似たようなものがあるから。
とりあえず英語は今の世の中やっとかなきゃいけないけど、英語を使うかな?みたいなことから取ったら。
英語の授業つらみたいな。
思ってるのは目的がなくても学習できてもいいじゃんっていうのは結構思ってて。
だからいいんじゃないかなと思ってるのはプログラミング学習のゲームを作りたいって思ってる理由でもあるんですよ。
ゲームにしちゃうとゲームの中で目的できるじゃないですか。
簡単なちっちゃい。それをするためにちょっとプログラミングを使うみたいな。
そういう仕組みで学ぶっていうのもありかもしれないなとは思ったりしてる。
あるよね。あるある。
ちっちゃい目標をパッて作ってみて、とりあえずそれを目指してみようかみたいな感じの、そういう教材あってもいいじゃん。
もっと言うとそういう面白い目標とか楽しい目標、自分なりのものを自分で作れるようになるのが一番強いのかなと思ったり。
作り方分かんない人いっぱいいるから、そういう作り方をちょっと体験してみて自分なりに噛み砕いていくところからやるっていうのはいい気がする。
分かんないもんだって。
プログラミングアクションとゲームの相性いいなって思ってるところがそこであって、ゲームって目的をもらうじゃないですか。
なんかやらされるって言うと変だけど、好きなことだったら魔王を倒すんやとか、アイテムを集めるんやとか。
最初に示されるよね、そのプレイするとき。
何のゲームですと。
これが目的です。
これがいいなって思ったり、スッて入ってくんだったらそれに合わせてそれを目標にしちゃって学べばいいじゃん。
っていうのがゲーミフィケーション的な考えでもあるかもしれないけど。
何から学べばいいか。楽しく学べるとこからやってみたらいいんじゃないかっていうところはあるかもしれないですね。
なんか気がついたら56分になってました。
まじで?
とりあえず2回目を、まだ2回目だ。終えたいなと思うんですけど。
じゃあこの時点でまた告知って入れときますか。
そうだね。ソルベンタで作ってるプログラミングの学習のゲーム体験版、せっかくなんで。
URLだ。
概要欄。
概要欄。
ゲーム作って公開できるんでしたよね。
そうそうそうそう。楽しいね。
そうですね。公開はしてます。
してます。
はい。
いえ、してないですねまだ。
スタップ細胞だよ。ないとこまで含めて。ないんだ。
スタップ細胞キャラみたいなのはあまりよくないと。
54:05
破片。破片。
だけどもう公開、皆さんに遊んでもらえるんだったら公開できる形では一応できてはいるので。
そうですね。
これもあげるゲーム。
これなんか公開予定っていつぐらいにしたっけ?
もう来週。来週の水曜日には公開したい。
来週がどこかこれ多分わかんないけど。
ごめんごめん。
同じ時間線で生きてると思ってる。
生放送だった。
生放送だった。
10月の18日。水曜日。
2023年10月18日にリリース予定。
もう体現版できるように。
ちょうどそこで秋葉原で東京インディーズっていうゲームの紹介、プレゼンをしたりするイベントがあるんですよ。
そこに参加するので。
その時には用意している予定。
そうか。
じゃあ多分これの収録の放送日には配信できてるはずなんで。
概要欄の方で皆さん遊んでいただいて。
こちらまで。
ぜひTwitterのsolventerで検索していただいて。
そこでフォローしていただけるとそちらのゲームがまた遊べるURLも多分貼ってると思うので。
また感想とかもろもろ。
ぜひやってみてください。
その他日々の開発の挫折やゲーム開発のプロジェクトの過程なんかも発信してますのでそのあたり気になる方見ていただければと思います。
お願いします。
じゃあ2回目これで終えていきましょうか。
何から学べばいい?話できたっけ?
好きなところからやれる範囲で関係する言語から学べばいい。
何をやりたいかからまず考えてもいいかもしれないですね。
そやね。
そやね。
じゃあ今日はありがとうございました。
ありがとうございました。
お疲れ様です。
お疲れ様です。