Blockly:ブロック型プログラムエディタライブラリ 2017年版

https://www.catch.jp:443/wiki/index.php?Programing%2FBlockly2017

Programing > Blockly2017

Blockly1.0がリリースされたので、あらためて色々調べてみました。

blocklyp5.js_s.png

概要

Blockly1.0は、ビジュアルプログラミングエディター用ライブラリです。これ自体は、完成したアプリではなく、開発者向けのツールキットという位置付けですね。

公式サイトによると、次の特徴を備えています。

  • 純粋なJavaScriptライブラリ。サイズは150Kb未満。
  • 100%クライアントサイドで動作。サーバー側には依存しません。
  • Chrome、Firefox、Safari、Opera、IEなど、主要なブラウザで動作します。
  • 高度なカスタマイズ性と拡張性を備えています。

作ってみた

ニュース

公式サイト

公式サイトの情報がまとまっていてわかりやすいです。Google翻訳による日本語ページも、けっこう意味がわかります。

開発者向け

デモ

同じ内容が、ダウンロードしたファイルの「demos」フォルダにあります。

(BDTなど、いくつかのデモは、ダウンロード版では動作しません。)

Blockly Games

多言語化用のリソースファイルが、流用できる。

Blocklyの基本機能を理解する

Blocklyのブロックエディタは、ブロック(block types)を格納するtoolboxと、ブロックを配置するためのワークスペースで構成されています

ガイドページから以下の説明を順番にたどっていくと、Blocklyの基本機能を理解できます。

Blocklyのダウンロード

Githubからクローンするか、ファイルをダウンロードします。

固定サイズのワークスペース:fixed-sized Workspace

Blocklyを固定サイズで表示します。

そのために、HTMLファイルに次の5つの領域を記述します。

  • Javascriptのコード読み込み
  • ロケールファイル
  • 空のdivを追加て、サイズを設定します
  • ツールボックス
  • Javascriptによるロード

サイズ変更可能なワークスペース:Resizable Workspace

divタグかテーブルタグに、id="blocklyArea"を設置して、その下に、id="blocklyDiv"のdivタグを設置します。あとは、サイズを自動調整するスクリプトを設置します。

サンプルファイルは、index.htmlではなく、overlay.htmlを見てみましょう。

カスタムブロックの追加:Add Custom Blocks

オリジナルのブロックを追加することができます。

カスタムブロックを追加するには、次の3つを用意します。

  • ブロック定義(/blocksに標準ブロックがある)
  • ツールボックスリファレンス(ツールボックスからブロック定義を参照)
  • ジェネレータ(ブロックからコードを生成)

ブロック定義は、Blockly Developer Toolsで生成することができます。

ツールボックスリファレンスは、ワークスペースに追加したツールボックスと同じ。

ツールボックス:Toolbox

ツールボックスは、サイドメニューにある標準ブロック置き場。 Blokcsに、標準的なブロックがひとやま用意されている。それをtoolsboxに追加するだけで動く。 XMLで記述するんだけど、手書きが面倒な場合は、Blockly Developer Toolsで生成できる。 また、カテゴリの記述方法も書いてある。

ちなみに、特に説明がないけれど、ゴミ箱をオンにするのは、こんな感じ。

var workspace = Blockly.inject('blocklyDiv',
   {toolbox: document.getElementById('toolbox'), trashcan: true});

コードジェネレータ:Code Generators

ブロックで組んだプログラムをコードに変換します。

グリッド:Grid

Blocklyのワークスペースには、オプションでグリッドを設置できます。

ズーム:Zoom

Blocklyのワークスペースには、オプションでズーム(拡大/縮小)を設置できます。

イベント:Event

ワークスペース上のすべての変更は、イベントのトリガーになります。

Cloud Storage

Googleのクラウドサービス:Google App engineでコードを保存・読み込み・共有できます。

その他

  • サンプル一覧: /blockly/demos/index.html
  • JavascriptやPython・Luaへの変換: /blockly/demos/code
  • Javascriptインタプリタ: /blockly/demos/interpreter

カスタムブロック/ツールボックスのカスタマイズ

概要

Blockly Developer Tools

Blockly Developer Toolsで作ることができます。ここには、カスタムブロックやワークスペースを作るため、次の3つの機能があります。

  • Block Factory:ドラッグ&ドロップでブロックをデザインする
  • Block Exporter:デザインしたブロックを管理する
  • Workspace Factory:ワークスペースをデザインする

作り方

ブロックの言語指定

既存ブロック

既存ブロックの表示言語は、以下を指定する

https://developers.google.com/blockly/guides/configure/web/fixed-size

<script src="msg/js/en.js"></script>

日本語の場合は、こちら。

<script src="msg/js/ja.js"></script>

カテゴリ

ツールボックスのカテゴリは、name属性を変更する。

<category name="ロボット" colour="#ED225D">
 <block type="run_foward"></block>
 <block type="jump_forward"></block>
 <block type="is_ball"></block>
 <block type="is_wall"></block>
</category>

カスタムブロック

独自に追加したカスタムブロックの表示は、.appendFieldで指定する。

Blockly.Blocks['run_foward'] = {
  init: function() {
    this.appendDummyInput()
       .appendField("前に進む");
    this.setPreviousStatement(true, null);
    this.setNextStatement(true, null);
    this.setColour(0);
 this.setTooltip("");
 this.setHelpUrl("");
  }
};

その他

同じページで言語を切り替える

https://blockly-demo.appspot.com/static/demos/code/index.html

ライセンス

ソースコードのライセンス

  • Apache License 2.0

Blocklyサイトのライセンス

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code samples are licensed under the Apache 2.0 License. For details, see our Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

特に明記されていない限り、このページのコンテンツはCreative Commons Attribution 3.0 Licenseの下でライセンスされ、コードサンプルはApache 2.0ライセンスの下で使用許諾されます。 詳細については、 サイトポリシーをご覧ください。 Javaは、Oracleおよびその関連会社の登録商標です。

参考になるページ


  トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
添付ファイル: fileblocklyp5.js_s.png 199件 [詳細]
Last-modified: 2018-04-19 (木) 22:30:31 (580d)