よくある質問

(1)仕様などに関すること

一般的な Rubyの仕様との違いはありますか?
はい。
rbCanvasでは、Rubyのコードは Opalによって JavaScriptに変換して実行されるため、
おもな違いとして下記のような点が挙げられます。
  • 数値はすべて倍精度の浮動小数点となるため、Integer型として扱うことはできません
  • 文字列に対して gsub!upcase! などの破壊的なメソッドを使うことはできません。
  • シンボルは String型として扱われます。
  • ブラウザ上では非同期での処理がおこなわれるため、
    ひとつの処理が終わるのを待たずに次の処理に進むケースが発生します。
  • 正規表現に関する処理で違いが生じるケースがあります。
  • 外部ファイルの入出力に関する処理はできません。

基本的な文法(構文)は Rubyのどのバージョンに相当しますか?
Ruby 2.3に相当します。
rbCanvasの内部では Opal 0.11.4 (Ruby 2.3に準拠)を使用していますが、
今後のバージョンアップは現在検討中です。

putsや pなどのメソッドの挙動はどうなりますか?
それぞれ下記のようになります。
puts … ブラウザの画面上に値を表示します。
p     … ブラウザのデバッグ用コンソール上に値を出力します。
その他、コンソール系のメソッドの留意事項などについては、
APIリファレンスの「コンソール系メソッド」の内容をご覧ください。

グラフィック関連の処理など、rbCanvasではどのようなメソッドが使えますか?
「APIリファレンス」に詳細が記載されていますので、下記のリンクからご覧ください。
→「APIリファレンス」


(2)動作環境などに関すること

rbCanvasを使うには、Rubyのインストールなどが必要ですか?
いいえ。
ブラウザとインターネット接続ができる環境さえあれば、
すぐに rbCanvasを使いはじめることができます。

micro:bitを使うにはどうすればいいですか?
「micro:bitを使う前の準備」のページに記載がありますので、下記のリンクからご覧ください。
→「micro:bitを使う前の準備」

micro:bit接続時のダイアログで止まってしまう場合はどうすればいいですか?
ブラウザのキャッシュを一旦クリアしてみてください。
接続時のダイアログで止まってしまうのはいくつかの要因が考えられますが、
Web Bluetoothのセキュリティ的な制約によって
当サイトに HTTPによってアクセスした場合には micro:bitへの接続要求がエラーになってしまいます。
過去の古い接続時の情報が残っている可能性がありますので、
ブラウザのキャッシュをクリアすることで問題が解消するかどうかお試しください。

micro:bitを使ったプログラムの実行中にブラウザのタブを切り替えると
micro:bitの反応が遅くなるようですが、なぜですか?
ブラウザの Web Bluetooth機能の仕様によって生じる現象のようです。
反応が遅くならないようにするための対処法がないか、調査を進めています。


(3)操作などに関すること

画像ファイルや音声ファイルをプログラムで使うことはできますか?
はい。
使いたい画像ファイルや音声ファイルを選び、rbCanvasエディタ上にドラッグ・アンド・ドロップすると
エディタ内にデータが取り込まれ、画面の下部にサムネイルとして表示されます。
あとは、画像や音声を扱うメソッドを使ってプログラム内で自由に処理してください。
作ったプログラムは保存できますか?
はい。
作ったプログラムは、HTMLファイルとして PCに保存することができます。
また、保存したファイルをエディタにロードして編集しなおしたり、
PC上から直接実行することもできます。

クラスやモジュールごとにプログラムを分けて作ることはできますか?
はい。
rbCanvasエディタ上では、任意の名前をつけた仮想的なファイルを
いくつも追加していくことができますので、それぞれその中に
クラスやモジュールなどのまとまった単位のプログラムを
書いていくことをお勧めします。
関連情報として、下記もご覧ください。
  →「rbCanvasエディタの使い方 (8)プログラムの分割管理」

(4)エラーメッセージなどに関すること

エラーが発生したらどのように出力されますか?
エラーの内容および発生箇所が下記のように出力されます。
構文(シンタックス)エラー    … rbCanvasエディタ上にダイアログでエラー情報が表示されます。
実行時(ラインタイム)エラー … 実行中のプログラムによる描画などクリアされ、そこにエラー情報が表示されます。
なお、実行時(ランタイム)エラーについては、下記の種類のものが検知されます。
エラーの種類おもな発生ケース
NameErrorクラスや定数などが定義されていない場合など
NoMethodErrorメソッドが定義されていない場合など
ArgumentError引数の数などが一致しない場合など
TypeError引数の型が一致しない場合など
LoadError画像や音声のファイル指定に誤りがある場合など
NotImplementedErrorrbCanvasでは使用できないメソッドが呼ばれた場合など

エラー発生箇所の表示がおかしいかったり、
エラーメッセージがなにも表示されないときがありますが?
プログラムの内容等によっては、正しく表示されないケースがあります。
ブラウザのコンソール画面に関連する情報が出力されている可能性がありますので
[F12]キー(Chromeの場合)を押すなどしてコンソール画面の出力内容を確認してみてください。
今後、改善していく予定です。

よくわからないエラーメッセージが出力されましたが、これはなんでしょうか?
下記のケースが考えられます。
  • rbCanvasの内部的な不備によるもの
  •  今後、改善していく予定です。
  • ブラウザなど実行環境面での制約などから生じるもの
  •  現時点で把握できているものとして、以下のようなメッセージがあります。
    [DOMException] play() failed because the user didn't interact with the document first.
     → 音声ファイルの再生時にはユーザアクションが必要という制約があり、
       プログラムの実行開始後に画面をマウスクリックするとエラーが生じなくなるようです。
    [DOMException] GATT operation failed for unknown reason.
     → micro:bitとの Bluetoothでの通信中に動作が不安定になると生じるようです。
       PCと micro:bitとの距離を近づけたり、micro:bitへの電源供給が十分かどうかを確認してください。

Link to GitHub