クリエイター手抜きプロジェクト[513]IoT編 IchigoJamでカレンダーを表示する/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,600文字)



今回は、IchigoJamでカレンダーを表示してみましょう。と書いたものの、IchigoJamは時計機能を内蔵していません。

つまり、IchigoJamを起動した時に何年何月何時何分なのかは分からない(保持されていない)ということです。仕方ないので、年月はプログラムの最初で定義しておくことにします。

現在ほとんどのプログラム言語では、日付を扱うための便利な機能が用意されています。しかし、IchigoJamには、そのような機能がありません。日付に関する機能がないのですから当然です。

そこで、ちょっと困ってしまうのがカレンダーの曜日です。ほとんどのプログラム言語で簡単に求めることができますが、IchigoJamにはありません。調べてみると、日付から曜日を求める「ツェラーの公式」というのがありました。

・ツェラーの公式
https://ja.wikipedia.org/wiki/ツェラーの公式





より分かりやすいページもあります。こちらは手計算で求める過程を体験できます。

・日付から曜日を求める(手計算編)
http://www.suguru.jp/culture/Zeller.html

カレンダーの場合、その月の1日の曜日が分かれば十分です。さらにIchigoJamで作成したBASICプログラムが100年後も使われることはないので、動作条件を限定してしまいます。

(1)うるう年の処理

うるう歳は4年に一度です。しかし、西暦年数が100で割り切れる場合は、うるう年ではありません。さらに、400で割り切れる年はうるう年になります。

ここで2016年以降2099年までに限定すると、4年に一度のうるう年だけを考慮すればよいことになります。

(2)曜日を求める処理

2016〜2099年までなので曜日は以下の計算式で求めます。ここでYが年、Mが月になります。

A=((Y%100)*5)/4
B=((N+1)*13)/5
C=(105+A+B+1)%7

ただし、Mが1か2の場合は年から1を引き、Mに12を足します。

IF M<3 THEN Y=Y-1:N=12+M

最終的に変数Cに曜日を示す値が入ります。この値は以下のようになります。

0 土
1 日
2 月
3 火
4 水
5 木
6 金

ただ、土曜日が0だとプログラムでは扱いにくいので、以下のように日曜日が0になるように調整します。

C=(C+6)%7

これで曜日を求めることができました。あとは、カレンダーを表示するプログラムだけです。単純に日付を表示していき、土曜日になったら下の行に日にちを表示するように座標をずらします。

実際のプログラムは以下のようになります。曜日を求める処理を入れても、案外と短いプログラムになりました。Illustratorだと、この2倍の行数になります。こう見ると、IchigoJamのBASICは学習用としてはいいのかもしれません。

10 Y=2017:M=2
20 LET[0],0,31,28,31,30,31,3,31,31,30,31,30,31
30 IF Y%4=0 THEN [2]=29
40 IF M<3 THEN Y=Y-1:N=12+M
50 A=((Y%100)*5)/4
60 B=((N+1)*13)/5
70 C=(105+A+B+1)%7
80 C=(C+6)%7
90 CLS
100 A=C*3:B=0
110 FOR I=1 TO [M]
120 LOCATE A,B:PRINT I;
130 A=A+3
140 C=C+1
150 IF C>6 THEN C=0:A=0:B=B+1
160 NEXT
170 PRINT


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

インサイダー取引・詐欺みたいなトラブルが発生し有名になったVALU。
http://nlab.itmedia.co.jp/nl/articles/1708/17/news060.html

自分の市場価値が分かるという、面白いサービスです。自分でもMY VALUという株式に近いものを発行できます。実質的には寄付に近いサービスのようで、どのくらい寄付するかの目安・指標サイトとしてはよさそうです。

で、発行できるかと思ってやったら、申請は却下されました。自分の市場価値を調べる以前に、私は対象外ということみたいです。結局、いつでも自腹。

InDesignのJavaScriptリファレンスだいぶ追加し、そこそこいける感じになりました。

・InDesign CS6 JavaScript Reference
http://www.openspc2.org/reibun/InDesignCS6/ref/

InDesignはあまりに量が多く大変なので、気晴らしにPhotoshopのJavaScriptリファレンスも少し用意しました。こちらは気が向いたら増やします。

・Photoshop CS6 JavaScript Reference
http://www.openspc2.org/reibun/PhotoshopCS6/ref/

・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/

・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605

・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591

・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/