レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

物理エンジンで物体に重さをつける

BLOCKVROCKでは、物理法則をコンピュータで計算再現して、物体に重さや衝突の判定を設定することができます。 ブロックに「動きのある物体」の属性を繋げましょう。 Y座標を少し上にセットしておくと分かりやすいです。 物理エンジンで重力をつける 実行する…

物体の回転(Z軸)

Z軸は奥行きを表しますので、物体の中心を手前から奥に向かって通る軸を中心に回転します。 Z軸による回転は、カメラの目線が回転軸と平行になるため、時計回りであることがわかりやすいですね。 物体の回転(Z軸) [公式]z軸60,90,135回転

物体の回転(Y軸)

Y軸での回転は、物体の中心に縦の軸を通してそれを中心に回転するということです。 やはり+になるほど時計回りに回転し、マイナスになるほど反時計回りに回ります。 今回は、マイナスの回転もやってみます。 y軸90,45,-45回転 [公式]y軸90,45,-45回転

物体の回転(X軸)

物体を回転させる回転属性については、初期段階で最も混乱するポイントのようです。 軸を中心にして+であれば時計回りに回転するというルールさえ理解できれば、あとはトライアンドエラーで作りたい角度を確認しながら進めていくのが良いです。 このサンプ…

番号を指定して配列からデータを取り出す

配列は、データを複数まとめて扱う仕組みであり「繰り返し」という構造をとても相性がいいのですが、繰り返しのためだけのデータ構造ではありません。 データが順番に並んでいるので、番号を指定して配列のデータを使うこともできます。 この時注意が必要な…

配列を使った繰り返し

繰り返しは大変便利なのですが、数字を規則的にカウンターとして取り出しながら繰り返すことが中心です。 規則的でない繰り返しや、微妙な微調整をするには配列を使った繰り返しを使うと良いでしょう。 配列とは変数とよく似た要素で「違いは複数のデータを…

繰り返しブロックの内側に複数のブロックを書く

繰り返しブロックの内側にも物体などを組み合わせて配置することができます。 繰り返しブロックの内側を1回の仕事として実行して、次の繰り返しに移るという動作のしかたをします。 「= counter」が入っている箇所をよく確認してみてください。 繰り返しブ…

繰り返しブロックのカウンタ変数

繰り返しのブロックには、「変数 xを カウントして」という記載があります。 繰り返しブロックを作ると、同時に変数xが作られて0(min)から10(max)までの繰り返しの数字が入る状態になります。 繰り返しブロックの内側で、この変数xを使うことができます。 繰…

BLOCKVROCKリファレンス 目次

だれでも簡単にVRやARが作れるサービスBLOCKVROCKについてリファレンスを書いていっています。記事を投稿したら、この目次を更新していきます。 【紹介】1−1 BLOCKVROCKというWebVRサービスhttps://daiyamamoto.hatenablog.com/entry/2019/11/26/144231 【BL…

繰り返しを使った複数の物体作成

コンピューターが得意なことの1つは、同じ作業を苦もなく繰り返すことです。 プログラミングはコンピューターへの命令なので、やはり繰り返し同じことを実行してもらう命令が重要です。 BLOCKVROCKでは、こういった繰り返しに使える「変数xをカウントして0か…

掛け算(乗算)の演算

四則演算と呼ばれる演算には、足し算(加算)引き算(減算)掛け算(乗算)割り算(除算)があります。 特に掛け算は、数学で使う記号(x)とは異なり、アスタリスク(*)を使うので注意が必要です。乗算に*を使うのはBLOCKVROCKだけではなく、ほとんどの言…

変数と演算

変数を使うのと同じように入力項目を=から書き始めることで、計算式を作ることができます。 「= 1 + 1」のように数値だけで計算もできますし、「= x - 2」のようにあらかじめデータをいれた変数を使った式にすることもできます。 以下のプログラムは、「段…

変数によるデータの名前付け

変数には数値やデータに対する名前づけの効果もあります。 10や-4という数字は味気ないですし、プログラムが巨大になってくるとどの数字が何を指しているかわかりにくくなります。 以下のプログラムでは、変数名に「高さ」という名称をつけました。 参照する…

BLOCKVROCKでの変数

BLOCKVROCKで変数(へんすう)を使います。変数はプログラミングのとても基礎的ながら重要な要素です。 プログラムで変数を使うメリットはいくつかあります。 同じ値を使っている場所にセットしておくと、変更するときに1箇所変更するだけですむ 値に名前を…

BLOCKVROCKでHelloWorld

BLOCKVROCK入門編 様々な言語で、初めの1歩といえばHelloWorldとコンソールに出すことですが、BLOCKVROCKでもやってみます。 [公式]BLOCKVROCKでHelloWorld 半角英数文字を浮かせるコードです。 BLOCKVROCKでHelloWorld 位置のX Y Zの感覚が少し迷いがちで…

子要素をとにかく円形に配置してくれるブロック

勢いに乗って早速の連投をしていきます。 BLOCKVROCKは、入門編の話もできていないのに、いきなり新機能の話をしていきます。 ブログを書くテンションをキープするためです。 円形に配置というブロックは、Aframe-Layout-Componentというコンポーネントを使…

BLOCKVROCKというWebVRサービス

昨年より、BLOCKVROCKというサービスをやっています。 https://blockvrock.com/ WebVR/ARを、誰でも作れるようにするサービスで、例えば下に載せたようなのが5ステップぐらいで簡単に作れます。 プログラミングに興味のある高校生などを対象に、プログラミ…

設計力で測る課題解決力

設計力は、課題解決力の一部です。 プログラミングを使って「設計」がうまくできるようにすることを目的にすると、結果として「課題解決力」が身につき、課題解決力が測定しやすくなると思います。 例えば、「おばあちゃんの安否を見守りたい」という課題を…

プログラミング学習は、設計を学ぶ科目だと思う

若い人(特に子供)たちにプログラミングやコンピューティングを教えることの意義について、あれこれ行ったり来たりと考えた結果、その意義は「設計の力」を鍛えることを目的にするということで良いんじゃないかと現時点で思っています。プログラムはそもそ…

簡易HTTPツール

<html> <head> <meta charset="UTF-8"> <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> </head> <body> <div>host:<input id="req_host" type="text" value="http://localhost:8080"></div></body></html>

Scratch Blockly と Blockly とで違うところ(1)

Blocklyで作ったソフトをScratch Blocklyに対応させている、色々詰まるのでメモ。 1) Blocklyのツールボックスのカテゴリには必要な属性がなかったが、Scratch Blocklyには必須属性がある(colour・secondaryColourがないとエラー)そして、ID属性がないとク…

1年が暮れる。この1年はレベルエンターという会社と自分にとって、とても実りの多い1年だった。 BLOCK VROCK というサービスを開始した。 産休明けの仲間の復帰を受け入れられた。 提携レベルの協業を実現できた。 障害児童向けのプログラミング教育を定期的…

Swiftのちょっとしたメモ

PlayGroundでHTTP通信 import UIKit import PlaygroundSupport PlaygroundPage.current.needsIndefiniteExecution = true let session = URLSession(configuration: .default) var urlComponents = URLComponents(string: "http://localhost/json")! urlComp…

Node.js/Expressサイトを、AWS EC2からfirebaseに移行

コーポレートWebサイトを firebaseに移行しました。 もともと、静的ページで AWS EC2のWindowsサーバにホスティングしていましたが、 色々とメンテナンス性が悪くコストも高いので、段階的にnode.js/Express 化してfirebaseに以降、今週日曜日に移行が終わっ…

プログラミング教育の目的は、職業訓練ではなく課題解決力であるとは本当か?

「子供向けのプログラミング教育については特に、職業訓練ではないのだからプログラミングスキルを身につけることを目的にしてはいけない。課題解決力を身につけることを目的にするべきだ。」 上記のようなことは、子供向けプログラミング教育を義務教育化す…

ブログを統合した

数年前まで、はてなダイアリーでブログを書いていましたが、起業と前後してはてなブログに移行しました。 とはいえはてなブログでは、あまり記事を書いていませんでした。 はてなダイアリーがサービス終了と聞き、同時にはてなブログにブログのインポートと…

プログラミングを教えるときに余計なことを教えすぎ説(またはプログラミングを嫌いにならないコツ)

件名通り。プログラミングの教育をやっていて、本当に余計なこと、、、というか段階に合わないことを一気に教えすぎ。 例えば変数を教えるときに、はじめに教えるべきなのは代入と参照の2つでいい。 そこに無理に基本型のサイズとか、参照型とか一気にやりす…

Swift 関数とオプショナルの解説を覚書

オプショナルについて 他言語を知っているひとがSwiftを学ぶときに、一番最初につまるのはオプショナルだと思います。Swiftでは普通の型(IntやStringや自作クラス型などほとんどの型)ではnil (=null)を代入できません。nilは非常に特殊な状態であると言語…

コンピュテーショナルシンキングについての学習ルート

最近ずっと僕が取り憑かれているコンピュテーショナルシンキングとは、コンピュータサイエンティストの思考法という解釈がしっくり来ます。 Google for Educationでも重要な指針として認められている考え方です。 edu.google.com 主なコンセプトは、以下です…

コンピュテーショナルシンキングをSEの世界で考える

コンピュテーショナルシンキングを習得する授業を高校向けにやっていきましょうという話をしていて、コンピュテーショナルシンキングについてシステムエンジニアではない人にどうやって説明するかについて気づきを得たのでメモしていきます。 コンピュテーシ…