MixJuice 向けコンテンツの作成と公開



MixJuice コンテンツ公開サーバ

汎用的な Web サーバを用います。テキストファイルが公開できる Web サーバであればどの環境でも構いません。

 

パソコン・モバイル向けの Web サイトをブラウザで生成する Google サイト・Jimdo・wix などは適していません。

一方 Pastebin.com や GitHub Pages などは使用する事が可能です。運営者は GitHub Pages を用いています。

ただし、アドレスが手入力になる事が多い事から、できるだけアドレスが短くわかりやすくなる環境が理想的です。


GET コマンドと URL

http:// を外した URL が GET コマンドで含めます。
? 以降のパラメータもそのまま含める事が可能です。ただし文字コードに注意を要します。

  • http://fu-sen.github.io/IJHELP/PRINT
    → ?"MJ GET fu-sen.github.io/IJHELP/PRINT (IchigoJam BASIC)
    → echo MJ GET fu-sen.github.io/IJHELP/PRINT> uart;cat uart  (IchigoLatte)

もし SSL を含めた URL https:// の場合は代わりに GETS コマンドにして下さい。

  • https://fu-sen.github.io/IJHELP/PRINT
    → ?"MJ GETS fu-sen.github.io/IJHELP/PRINT (IchigoJam BASIC)
    → echo MJ GETS fu-sen.github.io/IJHELP/PRINT> uart;cat uart (IchigoLatte)

パラメータが多い場合、IchigoJam からデータを送出する前提の場合は POST・POSTS を用いる事になります。

(現在のところ、実際に POST・POSTS コマンドを用いているコンテンツが存在しません)

ドメイン部(上の場合 fu-sen.github.io)は通常大文字・小文字の区別がないのですが、

MixJuice では小文字にしないと接続できない場合が多いです。


コンテンツの内容

記載内容がそのまま IchigoJam で受け取られます。これはシリアルで受信している状態に同等です。

  • 行番号がなければダイレクトモードでの動作になります。CLS・NEW などを実行できます。
  • 行番号があれば、それはプログラムの入力になります。そのままプログラムを転送できます。
  • 単に文字列を表示させたい場合は行頭に ' を付けて下さい。IchigoJam BASIC ではコメント文の扱いとなり、これを無視します。

IchigoJam のカナはシフト JIS(Shift_JIS)の半角カナに共通します。

そのため文字コード Shift_JIS で制作するとカナを使用できます。
運営者 ふうせん Fu-sen. のコンテンツは GitHub で公開しているので、実際にソースを参照できます。製作の参考にして下さい。

(GitHub 上で見ると文字化けしている可能性があります。

 Raw で参照するか、クーロン・ダウンロードなどでファイルを取り込んで下さい)

  • fu-sen/IJHELP - IchigoJam BASIC コマンド一覧 - MixJuice 版
  • fu-sen/IJPRG - イチゴジャム レシピ IchigoJam BASIC プログラム (MixJuice 向け)
  • fu-sen/PCPRG - イチゴジャム レシピ PanCake+IchigoJam プログラム (MixJuice 向け)

IchigoJam BASIC 1.1 以降では CLS・LOCALE・SCROLL で特定のコントロールコードをシリアルに送出します。

MixJuice は通常これらを無視しますが、
例えば CLS 直後の PRINT"MJ〜 は CLS のコントロールコードによってコマンドを処理しない場合があります。

PRINT で改行させて CLS のコントロールコードを飛ばすか、UART コマンドを用いて送出しないように設定して下さい。

IchigoLatte では発生しません。


ファイル名とアドレス

Content-Type は無視されます。そのため、拡張子を .txt にしておく必要はありません。

例えばアドレスを省略する目的で index.html を用いる事も可能です。

index.html などでアドレスを省略する場合、コマンド送出するアドレスは / で終わらせて下さい。

/ を省略するとエラーになります。 (下のとおり、この場合 Web サーバは redirect 処理を発生させます)

  • ?"MJ GETS fu-sen.github.io/IJHELP/index.html
    → ?"MJ GETS fu-sen.github.io/IJHELP/ → 参照可能
    → ?"MJ GETS fu-sen.github.io/IJHELP → エラー

Location・redirect(http ステータス 301・302)は使用できません。MixJuice は 403・404・500 同様にエラー処理します。
別の URL に転送したい場合 MJ GET コマンドを出力させて下さい。

この仕様により、短縮 URL は使用できません。


動的コンテンツ生成

PHP・Perl・Ruby・Python などの動的コンテンツも使用できます。出力がテキストになっていれば良いです。

必ず Content-Type を出力させる必要がある場合は Content-Type: text/plain にすると良いでしょう。

カナを出力する場合は Shift_JIS の半角カナに文字コードを変換して出力して下さい。


サーバから特定の値を IchigoJam へ渡す

特定の数値を複数個渡す場合、サーバは数値を改行区切りにして出力すると、
IchigoJam BASIC のプログラムはその行数の INPUT を実行する事によって変数・配列に入れる事ができます。

 

日時を出力するサーバ側の PHP datetime.php

左の datetime.php を実行した出力結果例

2016

5

29

13

24

各行末尾には改行コードが含まれます


MixJuice 経由で得る IchigoJam BASIC プログラム

左のプログラムを MixJuice+IchigoJam で実行した例

※ PHP の date("i") は 0 を含めた 2 桁にしますが、

  IchigoJam はこの場合でも正常に処理します。


古籏一浩さんが MixJuice 向けの日時データをサーバ公開しています。

このサーバを用いる事で IchigoJam BASIC プログラムのみで同等の動作を実現可能です。

 

IchigoJam + MixJuice用 日付&時間データ | IchigoJamを楽しもう

 

文字列を取得したい場合は LOCATE で位置決めしておく事で VPEEK・SCR や 1.2 より対応している文字列コマンドで取得できます。

 

プログラムをサーバへ送る

次のコマンドで IchigoJam に現在存在しているプログラムをサーバへ送る事ができます。
サーバは動的に処理する必要があります。

 

?"MJ POST START サーバ.name/実行プログラム.ext":LIST:?"MJ POST END (IchigoJam BASIC)

?"MJ POST START 15_jam.com/upload.php":LIST:?"MJ POST END (例-実在しません)

 

echo MJ POST START サーバ.name/実行プログラム.ext> uart:cat . > uart:echo MJ POST END> uart (IchigoLatte)

echo MJ POST START 15_jam.com/upload.php> uart:cat . > uart:echo MJ POST END> uart (例-実在しません)
サーバからレスポンスが得られる場合は ;cat uart を末尾に加えて下さい。

 

POST メソッドで送られますが、パラメータは付いていません。
そのためサーバ側のプログラムでは標準入力(stdin)で渡したデータ全体を取り込む必要があります。

例えば PHP の場合は $_POST ・ $_REQUEST を用いるのではなく、php://input で取り出します。

 

PHP のサンプルプログラム - IchigoJam BASIC 向け。IchigoLatte では一部修正が必要です。


User Agent

MixJuice は User Agent(HTTP_USER_AGENT)の値を次の内容にします。

 

MixJuice-<バージョン番号>

MixJuice-1.0.4

 

これは MixJuice 以外の環境から実行するのを防止し、MixJuice 専用に処理するために有効です。

特にネット上で公開するプログラムの場合、他の環境から意図しない実行を受けてプログラムを悪用されないよう

セキュリティ対策として User Agent による MixJuice の判別は行って下さい。


その他ヒント

MixJuice は Content-Type を無視して表示します。
拡張子 .txt にする必要はなく、.html などでも構いませんし、拡張子をなくせはアドレスが短くなります。

 

MixJuice で IchigoJam へ転送する場合、必ずしもプログラムにする必要がありません。

例えば PanCake であればダイレクトモードでコマンドを実行して正常に動作する事ができます。

これによって IchigoJam のプログラム容量に制限されない処理を行う事が可能です。

 

簡単なコマンド・プログラムは Pastebin.com などのサービスで容易に公開できます。
raw の URL から MixJuice の GET コマンドを提供できます。

Dropbox の Public フォルダ、GitHub Gist も同じような公開が可能ですが、アドレスが複雑になります。

(Google ドライブの HTML 公開機能は 2016年8月 で提供終了のため、使用しないで下さい)

 

多くのサーバは Linux や BSD などの UNIX 系で運用されています。これらの OS はファイル名の大文字・小文字を区別します。

Windows・OS X は大文字・小文字の区別がありません。(OS X はファイルシステム hfs+ によって区別するようにも可能です)

ローカルサーバによる動作確認を行った際など、ご注意下さい。


注意事項

特に共用のレンタルサーバを用いている場合、PHP などの動的処理を行う場合はサーバ負荷に注意して下さい。

テキストの短いものでも、状況によってはプロセスを独占し、サーバ負荷につながる事があります。

GET コマンドなどを随時送出する場合は 1 分〜数分おきにして、サーバに負荷がかかりすぎないよう考慮して下さい。

 

特に MixJuice 1.0 ではローカル環境で構築した Web サーバでは取得に問題が発生する報告があります。

問題がなければコンテンツは最初からネット上に公開し参照できる状態で製作して下さい。