0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MixJuice を使わずに Kidspod に絵文字込みのプログラムを投稿する

Last updated at Posted at 2020-12-09

この記事は、IchigoJam Advent Calendar 2020 の 10 日目です。

きっかけ

IchigoJam のプログラムをブラウザ経由で Kidspod に投稿する際、自分は MixJuiceでKidspod;と通信しよう!のページの以下のような記述

(パソコンのブラウザでは絵文字を表示できないので、IchigoJamの場合は「(#数字)」、IchigoLatteの場合は「#」という形で表示されます。)

を読んで、「ああ、絵文字は (#数字) と入力すれば、うまく置き換えてくれるんだな」とか勝手に思い込んでいました。
Kidspod での表示

そんなうまい話はあるハズもなく、実際 Mixjuice で取り込もうとすると、
失敗例

という具合に、入力したものがそのまま出てきてしまうわけですよ。(当たり前)
う~ん、本物の MixJuice を持っていない自分は、絵文字込みのプログラムをどうやって投稿すれば良いのか…

で、どうするか

いろいろ調べてみたところ、実際のところは単純な HTTP のやり取りをしているだけだということが分かったので、curl コマンドを使える環境であれば、IchigoJam 投稿用の URL に対し、

curl kidspod.club/mj/nnnn:XXXXXX --data-binary @source.bin

という具合に HTTP リクエストを投げれば OK です。
source.bin はプログラムの生データのファイルで、カタカナや各種絵文字が仕様に基づいた 1 バイトコードになっている前提です。改行コードは LF で。
成功例
うむ。イイ感じですな。

戯言

ん? そもそもプログラムに絵文字をそのまま入力するのは行儀が悪いって?
まぁ、そのへんはいろいろ思想や主義主張があるとは思うのですが、かつてのベーマガでは当たり前にやられていたように記憶しています。
当時、目からウロコだったのは、以下のような方法で、一回の PRINT 文で複数行のキャラクタを出力するというテクニック。

LOCATE X,Y:PRINT " A ↓←←←IOI"

このテクニックを使っているプログラムは、機種によってはリストを印刷すると空白で出力されるので、ベーマガの紙面に載せる際、編集者の方が手書きで矢印を書き加えてくださったりしていたんですよねぇ。
IchigoJam でも仕様的には同じことができるのですが、キーボードで (#1C) ~ (#1F) を入力することができない上に、「リストで出力する時は制御コードではなくキャラクタとして出力する」ということができないので、あまり実用的ではありません。

あと、この記事を書くにあたって、curl コマンドに --data-binary というオプションがあるのを知ることができたのが思わぬ収穫でした。
はじめは -d オプションを指定して、改行が自動的に取り除かれてしまうので、何故だ何故だと小一時間悩んでしまったのですが、もともとそういう仕様だったんですね…

参考: curlのオプション--data, --data-binary, --data-raw, --data-urlencodeの違い

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?