create every day - 福野泰介の一日一創

Sabae will appear in the live of NHK WORLD TV broadcasting 'NEWSROOM TOKYO'

2018/01/18 23:55:00
#sabae #IchigoJam #maker #neoplug 

On Friday 19th, I'll appear in the live of NHK WORLD TV broadcasting(NHK国際放送) in "NEWSROOM TOKYO" program with neoplug "glasses for wearable". [20:00 - 20:45 (JST)]

IchigoJam x OLED x neoplug!


IchigoJam demo / see IchigoJam x OLED - IchigoJam BASIC & Arm Assembly Language.

1 GSB@INIT:GSB@LINIT:CLT 2 GSB@CLS:S="IchigoJam":FORI=0TOLEN(S)-1:X=3:Y=12-I:GSB@LC:C=ASC(S+I):GSB@LPUTC:NEXT 3 VIDEO0 20 X=RND(8):Y=RND(16):GSB@LC 22 IF TICK()>60*15 CLT:GOTO2 25 IF !(X<2 OR X>4 OR Y<3 OR Y>13) GOTO20 30 C=229+RND(27):C=RND(2)*C:GSB@LPUTC 40 GOTO20 100 @INIT:POKE#700,0,141,20,32,0,175:?I2CW(60,#700,6):RTN 110 @LC:POKE#700,0,33,Y*8,127,34,7-X,7:?I2CW(60,#700,7):RTN 120 @PUTC:COPY#700,C*8,8:?I2CW(60,#40,#700,8):RTN 130 @CLS:X=7:Y=0:GSB@LC:C=0:FORI=0TO127:GSB@PUTC:NEXT:RTN 150 @LPUTC:?USR(#800,C):?I2CW(60,64,#700,8):RTN 155 @LINIT:LET[0],#B5F0,#2307,#021B,#18C9,#2308,#4358,#1812,#2500,#2701,#2600,#2407,#2000,#5D93,#40EB,#403B,#40A3,#18C0,#3C01,#3601,#2E08,#D1F6,#5548,#3501,#2D08,#D1EF,#BDF0:RTN

We're judging programs of PCN Kid's Programming Contest 2017 Winter at SAMMIE'S in Fukui prefecture.
Thank you kids to send us many intresting programs!

IchigoJam x OLED、横向きサブディスプレイとして使う方法

2018/01/17 23:55:00
#KidsIT #IchigoJam #maker 

小さくてかわいい、IchigoJamで簡単に使える0.96インチOLED
文字が縦向き表示が簡単ですが、ちょっと工夫すると横向き表示もできます。

HELP #000 CHAR #700 PCG #800 VAR #900 VRAM #C00 LIST

こちら、HELPコマンドで出てくる、IchigoJamのメモリマップ。フォントパターンが1文字あたり8byte、メモリの0番地から入っています(CHAR)。

前回は1文字分8byteをそのままをPCGの#700(16進数で700、10進数では1792番地)にコピーし、OLEDに送信していましたが、どちらかに90度回転させたデータにすることで横向き表示が可能です。

200 @LPUTC 210 FOR X=0 TO 7 220 N=0 230 FOR Y=0 TO 7 240 N=N+PEEK(C*8+Y)>>X&1<<(7-Y) 250 NEXT 260 POKE#700+X,N 270 NEXT 280 ?I2CW(60,64,#700,8) 290 RETURN

90度回転させるプログラムができました。前回のプログラムに加えてみましょう。

C=ASC("A"):GSB@LPUTC

Aと横向きにでました。

GSB@CLS:S="IchigoJam":FORI=0TOLEN(S)-1:X=3:Y=12-I:GSB@LC:C=ASC(S+I):GSB@LPUTC:NEXT

IchigoJamと表示されます!


下ように短くかいておくと、プログラム容量が節約できます。(200〜290行は消してOK)

150 @LPUTC:FORX=0TO7:N=0:FORY=0TO7:N=N+PEEK(C*8+Y)>>X&1<<(7-Y):NEXT:POKE#700+X,N:NEXT:?I2CW(60,64,#700,8):RTN

ひとつの文字を表示するために、8x8、64回ループしているので、ちょっとゆっくりな表示ですね。
マシン語で高速化してみましょう。

1 LET[0],#B5F0,#2307,#021B,#18C9,#2308,#4358,#1812,#2500,#2701,#2600,#2407,#2000,#5D93,#40EB,#403B,#40A3,#18C0,#3C01,#3601,#2E08,#D1F6,#5548,#3501,#2D08,#D1EF,#BDF0 150 @LPUTC:?USR(#800,C):?I2CW(60,64,#700,8):RTN

配列の領域を使ってマシン語をいれておき、これを使ったサブルーチン@LPUTCに置き換えています。

asm15 assembly表記のArmマシン語はこんな感じです。

PUSH {LR,R4,R5,R6,R7} R3=7 R3=R3<<8 R1=R1+R3 R3=8 R0*=R3 R2=R2+R0 R5=0 'X R7=1 '1 @LOOP1 R6=0 'Y R4=7 '7-Y R0=0 'N @LOOP2 R3=[R2+R6] R3>>=R5 R3&=R7 R3<<=R4 R0=R0+R3 R4-=1 R6+=1 R6-8 IF !0 GOTO @LOOP2 [R1+R5]=R0 R5+=1 R5-8 IF !0 GOTO @LOOP1 POP {PC,R4,R5,R6,R7}

asm15、配列への代入形式、"bas (array hex)" を追加しました。

ボクにもわかる IchigoJam用 I2C 有機ELディスプレイ OLED の接続方法
こちらにまとめて転送することでもっと高速化する方法や、楽しいサンプルが紹介されていますので、合わせてどうぞ!

0.96インチOLEDをIchigoJamのサブディスプレイとして使おう

2018/01/16 23:55:00
#KidsIT #IchigoJam #maker 

温度や、動作状態をちょっと表示させたい時に便利な、128x64の有機ELディスプレイ(OLED)。
秋月電子通商からIchigoJam Tにぴったりの商品が登場!
0.96インチ 128×64ドット有機ELディスプレイ(OLED): ディスプレイ・表示器 秋月電子通商 電子部品 ネット通販

ピン配置が、GND,VCC,SCL,SDAの順は、IchigoJam TのCN5とぴったり。
(IchigoJam Uでもブレッドボードなどで配線すればOK!)

このモジュールはI2Cを使って制御します。差し込んだらまず次の初期化コードで表示しましょう。

POKE#700,0,141,20,32,0,175:?I2CW(60,#700,6)

つぶつぶ模様が表示されます。
イチゴのキャラクターを表示してみましょう。

COPY#700,255*8,8:?I2CW(60,64,#700,8)

次のように好きな文字を表示できます。

C=ASC("5"):COPY#700,C*8,8:?I2CW(60,64,#700,8)

表示する位置を変更するコマンドはこちら(X:左0〜7右、Y:上0〜15下)

POKE#700,0,#21,Y*8,127,#22,7-X,7:?I2CW(60,#700,7)

まんなかあたりに真っ白の四角を表示する例

X=3:Y=7:C=1 POKE#700,0,#21,Y*8,127,#22,7-X,7:?I2CW(60,#700,7) COPY#700,C*8,8:?I2CW(60,64,#700,8)

* 画面を全部消す時は、表示位置を右上にもっていて、16x8の128コ、真っ白を表示します。

わかりやすく、つくったプログラムがこちら

10 GSB@INIT:GSB@CLS 20 X=RND(8):Y=RND(16):GSB@LC 30 C=RND(256):GSB@PUTC 40 GOTO20 100 @INIT:POKE#700,0,141,20,32,0,175:?I2CW(60,#700,6):RTN 110 @LC:POKE#700,0,33,Y*8,127,34,7-X,7:?I2CW(60,#700,7):RTN 120 @PUTC:COPY#700,C*8,8:?I2CW(60,#40,#700,8):RTN 130 @CLS:X=7:Y=0:GSB@LC:C=0:FORI=0TO127:GSB@PUTC:NEXT:RTN

10行で初期化して、20から40行をぐるぐるまわって、ランダム表示。

ESCで止めて、次のようにやってみましょう。

GSB@CLS X=3:Y=7:C=255:GSB@PUTC

いろいろ遊んでみてください!

links
- 0.96インチ 128×64ドット有機ELディスプレイ(OLED): ディスプレイ・表示器 秋月電子通商 電子部品 ネット通販
- IchigoJam x OLED、横向きサブディスプレイとして使う方法
- ボクにもわかる IchigoJam用 I2C 有機ELディスプレイ OLED の接続方法

旭川高専出身、Viscuit開発者の原田さん開発、3次元版タートルグラフィック、トンボグラフィックがおもしろそう!ラインアートの3次元版(立体視用)

2018/01/15 23:55:00
#KidsIT #art #kosen #js 

北海道の離島、天売島生まれ旭川高専出身でこどもプログラミングアプリ「Viscuit」を開発・提供する原田さん、来福。 PC-8001をモニターなしでBASICを打ち込み、音でデバッグの話、おもしろい!

コンピューター、電子工作、粘土など、ものづくり話に花咲きます!

「右へ10、前へ20」などと亀を動かし軌跡で絵を描く、タートルグラフィックIchigoJamでの実装例)。これを3次元に拡張した亀ならぬ空間を飛び回るトンボグラフィックを旭川高専5年生の時に開発していたとのこと。 ダイヤモンドや、分子を短いプログラミングでさくっと表現できるとのことで、楽しそう!(実装かも、T3
過去に発明した変な言語1 - ビスケットのあれこれ」 - 原田さんのブログ

平行法や、交差法で手軽に(?)見られる3D(例、点で作った球)を、2012年一日一創のラインアートに適応。

LineArt3D」 - JavaScriptで作った、Webアプリ(オープンデータなオープンソース)

コンピューターの計算速度が上がり、部品が安くなって手軽になってきた Windows MRなどのVR。 先日、7歳以上向けのガイドラインが発表され、こども x VR の可能性もでてきたので、プログラミングで空間を自在に操るWOWなアプリもできちゃいますね!
「7歳未満には利用させない」など,施設型VRコンテンツの利用年齢に関するガイドラインをロケーションベースVR協会がリリース - 4Gamer.net

安いパソコンで、テキスト、2次元グラフィック、3次元グラフィックへと一気にステップアップできてしまう現代の子供達がうらやましい!
「jig.jp」福野泰介社長 ゲーム作りに夢中になった1冊|暮らし|ライフ|日刊ゲンダイDIGITAL

ベーマガイベント大盛況だっととのこと!コンピューターの楽しさは不変!

マイコンベーシックマガジン - Facebook

音声認識AI窓口、AI移動支援のプロトタイピングと筋ジストロフィー - 障がい者に寄り添うハッカソン

2018/01/14 23:55:00
#sabae #codefor #opendata #maker #python 

鯖江市の第4次障がい者計画「あるがままに 自分らしく いきいきと ともに暮らせる まちづくり」
障害の理解と、課題に対するアイデアソン、ハッカソンなど、継続的なものづくりがポイントです。

Code for Fuchu連携で、COTTONさくらんぼの岩間由里子さんからも情報提供。 筋ジストロフィーで手足に障害があり、2cm四方を範囲としたスライドと押し込み動作だけで使えるスマホを熱望。オープンデータ化と、使う人に合わせたアプリの横展開、必須ですね!

実際に、指一本でスマホ操作にチャレンジしましたが、指を画面から離せないという条件は厳しく、通常操作が無理でした。 調べるとiPhoneの3Dタッチなど、タッチパネルの力のかけ具合は、mouseforce系のAPIをブラウザ上で取得もできるので、いろいろ実験してみたいと思います。
iOS9で追加されたForceTouch(3DTouch)をJavaScriptで操作してみる | WebDesign Dackel
また、日本筋ジストロフィー協会でも「ワンキーマウス試作報告」の事例が掲載されていました。


主催、Code for Japan コーポレートフェローシップ、鯖江市臨時職員三ツ山さん(富士通)

アイマスクをつけてアイデアソン。
目に優しく、耳が研ぎ澄まされ、隣のテーブルの会話もよく聞こえちゃいます。
声でジャンケンして、ファシリテーターを決め、アイデアのディスカッションスタート。 まとめるための紙が使えない点が心配でしたが、みんな条件が同じなので、ひとつひとつ整理して進める意識を共有できて意外といい感じです。

つづいて、障害体験。高齢者シミュレーショングッズを借りて、重りをつけたり、膝の動きを制限する器具を付けて歩き回ってみます。 普段の何でもない生活の難易度がアップするので、刺激が欲しい人にもオススメです!

制限された視野をシミュレートするメガネ。

アイマスクをして、杖をもって点字ブロックを辿るチャレンジ。
センサーやGPSをつけた、IoT白杖をお互いつくって、難易度高いコースで対戦などできると楽しそう。

「Webアプリはじめのいっぽ」でHTMLの基本を覚えて、ハッカソンタイム!

WebRTCを使って、世界中どこからでもサポートできる!(featuring SkyWay
スカイボイス

アイマスクとスマホを装備をして自販機での買い物チャレンジ!

先のアイデアソンで登場した「おたすけパンダ」と「Pくん」の実現、AIチャットによる市役所窓口デモ。
おたすけパンダPくん

鯖江市も公開した、給付金オープンデータによる質問応答機能のデモに加え、音声認識と音声合成を使った窓口も実験。

Google Cloud Speech APIを使うと、高精度な音声認識が簡単に実現できます。
1回(15秒)$0.006(=約0.6円)の有料APIですが、1ヶ月60分、最大240回まで無料で使えます。
APIKEYを取得してみましょう。

とりあえず、音声認識とそれに対する回答するシンプルなデモスクリプト aichat.sh for Mac を作成。
(参考、GoogleのSpeech APIを使ってみた - Qiita

read -p "hit to start" rec --encoding signed-integer --bits 16 --channels 1 --rate 16000 test.wav ffmpeg -y -i test.wav -ar 16000 test.flac echo -e "{\n 'config':{\n 'encoding':'FLAC',\n 'sampleRate':16000,\n 'languageCode':'ja-JP' \n }, \n 'audio': { \n 'content': '`base64 test.flac `' \n } \n }\n" > sync-request.json curl -X POST -H "Accept: application/json" -H "Content-type: application/json" --data @sync-request.json https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=【APIKEY】 > response.json python3 talkresponse.py ./aichat.sh

* rec は、音声操作ツール sox に含まれます

音声認識結果 response.json から、認識した文字列を読み取り、会話するプログラム talkresponse.py for Python3 がこちら。(Open JTalkをimportしてます)

# coding: utf-8 import jtalk import sys import time import json import urllib.request cnv = { "おはよう" : "おはようございます", "今日の天気は" : "たぶん晴れです", "こんにちは" : "こんにちは", "がんばって" : "がんばる!", "かわいい" : "ありがとう", "ありがとう" : "どういたしまして", "免許返納について教えて" : "つつじバスとか確かお得に乗れるよ。詳しくは鯖江市のサイトを見てね", "読み書きが苦手です" : "読み書きの苦手なお子さんの相談講座が、3月11日にありますよ", "プログラミングを勉強したい" : "イチゴジャムがオススメ!ハナ道場へどうぞ", "うまいもの" : "サバエドッグ", "甘いもの" : "冬のかんみといえば、みずようかん!", "鯖江のうまいもの" : "サバエドッグ", "鯖江の美味しいもの" : "サバエドッグ", # "鯖江商店街、ミート・アンド・デリカささきの、サバエドッグ", "鯖江と言えば" : "メガネ!鯖江駅から徒歩10分、めがね会館へどうぞ!", "鯖江市長の名前は何ですか" : "まきのひゃくおです", # 写真でるといい } def a(): with open('response.json', 'r') as f: data = json.load(f) s = data['results'][0]['alternatives'][0]['transcript'] print(s) # 認識できた文をとりあえず表示 for t in cnv: if t == s: jtalk.jtalk(cnv[t]) # 対応する回答があった! return if s.endswith("て"): jtalk.jtalk("わかった!") # todo ちゃんとやってあげるプログラムを書く return jtalk.jtalk("ごめんなさい!よくわからないから勉強しておくね。") # todo わからなかった質問を記録しておき、しかるべき人に通知するプログラムを書く a()

とりあえず、いい加減なAIができました!

オープンデータを学習させて、文脈に応じた回答を考えるなど、おもしろそうです。
音声認識&音声合成部分を切り出したデバイスにするために必要なメモリ量は、16kHz、16bit、15秒で約469KB。 ちょっとメモリ大きめのマイコンがあれば、いけそうですね!

何事も実質プログラミング! 高専カンファレンスえぶりわん in 大阪

2018/01/13 23:55:00
#kosen #maker #KidsIT #kosenconf #kosenconf_113everyone 

ものづくり好きな高専生による高専生じゃなくても大歓迎なイベント、高専カンファレンスえぶりわん in 大阪
コスプレ衣装づくりは、実質プログラミングだ!と発表する女子高専生、やましーさん。

そう、ものづくりの極意は分解にあり。

何でできているかアタリをつけ、各個撃破、仮組み、うまくいけば完成。いけなければ、リトライ。あきらめたらそこで試合終了。 うまくいかないことで見える、新たな知見が楽しめるなら、そのジャンルは天職かもしれない。


新年らしくめでたい紅白リアルタイム投票戦!主催者、高専生による自作システム。

こちらも新年らしい、自作、あたまのわるいふくわらい。
若干偏り気味な、やわらかさある高専生による仕業 → #kosenconf 想像力豊かな高専生
3Dプリンターで量産したい逸品。

電車通学して目につくモノは、とりあえずつくってみたくなる病。
あるある。実際に作れちゃうからやめられない。

かっこいいスライドに憧れる人、必見!カラー、フォント、スタイル、イメージがポイント!

LTで話した「犬だって歩けば棒にあたるのだから」で、創ってシェアする楽しさをシェア。

プログラミングは楽しいよ!高専2年生達にIchigoJamを題材に、ミニプログラミング講座。

鯖江で人気、Hana道場で学生がこどもにプログラミングとものづくりを伝授してますよっ。

今回お土産にもっていった、かわいいNXP/Armのコンピューター、LPC810ちゃん!
IchigoJamでマシン語でプログラミングできちゃいます。
(ちょっと長いので、まずは、はじめのいっぽ&ミニゲームズで慣れてからどうぞ〜)

RESETLPC810RXD- IchigoJamのTXD
IchigoJamのRXD -TXDGND- IchigoJamのGND
PIO0_33.3V- IchigoJamのOUT1
WS2812B DIN -PIO0_2ISP- IchigoJamのOUT2

10 POKE#700,0,4,0,16,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,251,255,239,33,72,223,33,1,96,33,72 20 POKE#728,1,104,3,34,210,67,17,64,1,96,31,72,31,73,1,96,31,72,12,33,1,96,31,76,4,34,30,32,32,161,30,75,14,120,30,112,1,49,1,51 30 POKE#750,1,56,249,209,30,32,26,73,128,37,11,120,34,96,43,66,8,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,96,7,224,0,0,34,96 40 POKE#778,0,0,0,0,0,0,0,0,0,0,0,0,109,8,233,209,1,49,1,56,228,209,13,79,1,63,253,209,10,73,14,120,29,32,79,120,15,112,1,49 50 POKE#7A0,1,56,250,209,14,112,213,231,128,128,4,64,16,0,4,64,192,193,0,64,191,255,255,255,0,32,0,160,0,35,0,160,0,0,0,16,128,26,6,0 60 POKE#7C8,20,0,0,20,20,0,20,0,20,20,20,0,0,20,0,10,0,0,7,0,0,5,0,0,3,0,0,2,0,0 70 A=#700:L=216:LRUN1 SAVE0 NEW 100 'LPC810 Writer 256byte from ADR:A 110 UART3,2:OUT2,0:OUT1,0:WAIT9:OUT1,1 120 CLS:?"?";:GSB@R 130 ?"Synchronized":GSB@R 140 ?12000:?:GSB@R:GSB@R 150 ?"A 0":GSB@R:GSB@R 160 ?"U 23130":GSB@R 170 ?"W 268436096 ";256:GSB@R:UART1,2:LC0,-1:FORI=0TO255:?CHR$(PEEK(A+I));:NEXT:UART3,2:LC0,6 180 ?"P 0 0":GSB@R 190 ?"E 0 0":GSB@R 200 ?"P 0 0":GSB@R 210 ?"C 0 268436096 256":GSB@R 215 '?"G 268436128 T":GSB@R:END 220 OUT2,1:OUT1,0:OUT1,1:END 500 @R:K=INKEY():IF K=13 K=INKEY():WAIT9:RTN ELSE CONT SAVE1 LRUN0

普通のパソコンから扱う人向けの本もどうぞ!(ボクのLPC810工作ノート

書き込み終わったらこのようにスッキリ配線もコンパクト!
3Vの電源を右側まんなかに、左下からWS2812B用の信号がでるので、DINに接続するだけで、チカチカ完成!
ふんわり、さりげなく、キラリと光らせて、かわいいをアップグレードしちゃいましょう!

なんと実行副委員長賞として、えぶりわんオリジナルフラッグをもらったので、一緒に記念撮影!

楽しいは創れる!

【おまけ】
高専生のためのWS2812B x 10 を、LPC810でチカチカさせるArmマシン語 asm15 assembly 表記版、紹介。

DATA L #10000400 ' stack DATA L #21 ' entry point DATA L 0, 0, 0, 0, 0 DATA L #EFFFFBDF ' VALID_CODE = 0x100000000-0x10000400-0x21 @ENTRY R0=[@SYSAHBCLKCTRL]L R1=#DF 'SWT, GPIO, I2C:off, FLASH, FLASHREG, RAM, ROM, SYS [R0]L=R1 R0=[@FLASHCFG]L R1=[R0]L R2=3 ' flash no wait: set 0b00 R2=~R2 R1&=R2 [R0]L=R1 R0=[@PINENABLE0]L R1=[@PINENABLE0_DATA]L [R0]L=R1 R0=[@GPIO_DIR0]L R1=`1100 ' PIO0_2 and PIO0_3 [R0]L=R1 R4=[@GPIO_NOT0]L R2=`100 ' PIO0_2 @COPYTORAM R0=30 R1=@DATA_LED R3=[@RAM]L @COPYTORAM_LOOP R6=[R1] [R3]=R6 R1+=1 R3+=1 R0-=1 IF !0 GOTO @COPYTORAM_LOOP ' WS2812B driver ' R0 - data count ' R1 - data address (G1,R1,B1,G2,R2,B2 ....) ' R2 - OUT value ' R3 - data value ' R4 - GPIO address ' R5 - bit count ' R7 - wait count @WS2812B R0=30 ' R1=@DATA_LED R1=[@RAM]L @LOOP_DATA R5=#80 R3=[R1] @LOOP_BIT [R4]L=R2 R3&R5 IF 0 GOTO @ZERO NOP NOP NOP NOP NOP NOP NOP [R4]L=R2 GOTO @JOIN @ZERO NOP [R4]L=R2 NOP NOP NOP NOP NOP NOP @JOIN R5=R5>>1 IF !0 GOTO @LOOP_BIT R1+=1 '+6clock R0-=1 IF !0 GOTO @LOOP_DATA @WAIT R7=[@WAIT_N]L R7-=1 'wait R7*3+1 clock IF !0 GOTO -1 R1=[@RAM]L R6=[R1] R0=29 @SLIDE R7=[R1+1] [R1]=R7 R1+=1 R0-=1 IF !0 GOTO @SLIDE [R1]=R6 GOTO @WS2812B ' init @SYSAHBCLKCTRL DATA L #40048080 @FLASHCFG DATA L #40040010 @PINENABLE0 DATA L #4000C1C0 @PINENABLE0_DATA DATA L #FFFFFFBF @GPIO_DIR0 DATA L #A0002000 @GPIO_NOT0 DATA L #A0002300 ' WS2812B @RAM DATA L #10000000 @WAIT_N DATA L 400000 @DATA_LED DATA B 20, 0, 0, 20, 20, 0, 20, 0, 20, 20, 20, 0, 0, 20, 0, 10, 0, 0, 7, 0, 0, 5, 0, 0, 3, 0, 0, 2, 0, 0

一番最後の行、DATA_LEDがG,R,B(緑赤青)の順にLEDの明るさ設定が10コ分の並んでいます。とりあえず、ここを書き換えることからはじめてみよう。

鯖江市もらえる検索、障がい者向けの給付金オープンデータをCSV/RDFで公開 - Code for Japan / コーポレートフェローシップ

2018/01/12 23:55:00
#opendata #sabae #codefor 

Zaim連携された、室蘭市、日南市、浜松市の給付金オープンデータと同フォーマットのCSVを、鯖江市でのCode for Japanコーポレートフェローシップ協力で鯖江市版も公開!

次世代オープンデータ形式、5つ星オープンデータのLOD(Linked-RDF)としても公開されています。(CKAN on odp)

もらえる検索」 - 鯖江市データ追加、市を選択する機能追加

CSVでは地道にデータを追加していくしかありませんし、データフォーマットの柔軟性もありません。

柔軟性が高く、地域を越えて、データ種別を越えてつながる、Web標準(世界標準)の5つ星オープンデータ、LOD(Linked Open Data)によるオープンデータを推進しましょう!

links
- もらえる検索 - 自治体給付金オープンデータ活用アプリ、家計簿Zaim連携記念!

ふわっちコメントの読み上げをPython3でカスタマイズする - Python3 x Open JTalk on Mac

2018/01/11 23:55:00
#maker #python 

Open JTalk on Macを使った読み上げ実験、第一弾は、誰でもなんちゃってテレビ局、生配信サービス「ふわっち」のコメントの読み上げ。

顔文字や新しい言葉がどんどん登場する楽しい日本語の世界、自分で自由にカスタマイズ(transmapを編集)して、ストレスなしの読み上げを実現します。

# coding: utf-8 import jtalk import sys import time import json import urllib.request transmap = { " " : " ", "www" : "w", "iPhone" : "アイフォン", "AppleID" : "アップルアイディー", "一途" : "いちず", "ε" : "", "ω" : "", "(o(" : "", ")o)" : "", "´)ノ" : "", } def talk_whowatch_comment(id, timefrom): with urllib.request.urlopen("https://api.whowatch.tv/lives/%s?last_updated_at=%s" % (id, timefrom)) as r: s = r.read() data = json.loads(s.decode('utf-8')) for comment in reversed(data["comments"]): mes = comment["message"] user = comment["user"]["name"] userid = comment["user"]["id"] s = "%sさん(%s) %s" % (user, userid, mes) for t in transmap: mes = mes.replace(t, transmap[t]) print(s) jtalk.jtalk(mes).wait() return data["updated_at"]; id = sys.argv[1] timefrom = 0 if len(sys.argv) == 3: timefrom = sys.argv[2] print("https://api.whowatch.tv/lives/%s" % id) while True: bktimefrom = timefrom timefrom = talk_whowatch_comment(id, timefrom) print("updated at: %s" % timefrom) if timefrom == bktimefrom: time.sleep(5)

importしているjtalkですが、コメントのJSONデータを取得するためのライブラリ urllib.request などがPython3用なので、jtalk.py もPython3用に修正し、読み上げ終了がわかるようにプロセスのインスタンスを返す用に改造。

# coding: utf-8 import subprocess from sys import argv def jtalk(t): open_jtalk = [ 'open_jtalk' ] mech = [ '-x', '/usr/local/Cellar/open-jtalk/1.10_1/dic' ] htsvoice = [ '-m', '/usr/local/Cellar/open-jtalk/1.10_1/voice/mei/mei_normal.htsvoice' ] speed = [ '-r', '1.0' ] jf = [ '-jf', '0.6' ] fm = [ '-fm', '-1.0' ] u = [ '-u', '0.0' ] outwav = [ '-ow', 'out.wav' ] cmd = open_jtalk + mech + htsvoice + speed + jf + u + fm + outwav c = subprocess.Popen(cmd, stdin = subprocess.PIPE) c.stdin.write(t.encode()) c.stdin.close() c.wait() aplay = [ 'afplay', 'out.wav' ] wr = subprocess.Popen(aplay) return wr if __name__ == '__main__': jtalk(argv[1])

speed, jf, fm あたりをいじると読み上げの音質をいろいろ変更できますよ。


ふわっち - 動画・ラジオの生配信で稼ごう!

自分で創るスマートスピーカー、オープンな音声合成エンジン Open JTalk on Mac

2018/01/10 23:55:00
#maker #python 

音声認識と音声合成を使ったスマートスピーカーがいろいろ登場しています。
コンピューターから離れていても、人に伝える手段として音声は便利なケースもありますね。

お風呂が湧きました。
バッテリーが少なくなっています。
あと1分です。

しゃべってくれる家電を自分で手軽に作る方法として、オープンソースな音声合成エンジン「Open JTalk」を発見。
macでコードから音声を喋らせる (eSpeak, OpenJTalk) - Qiita」を参考にすぐ使えます!

例えば、残り時間をカウントダウンしてほしいときのアプリは、Pythonでjtalk.pyをimportし、このように書けます。(*しゃべってる時間分だけロスタイムあり)

# coding: utf-8 import jtalk import sys import time min = int(sys.argv[1], 10) for i in range(min): jtalk.jtalk("あと%s分" % (min - i)) time.sleep(60) jtalk.jtalk("%s分たちました" % min)

目を使わなくても、使える。
耳を使わなくても、使える。
手を使わなくても、使える。
コンピューターで広がる、いろんな可能性。

今週末は鯖江で「障がい者に寄り添うオープンデータ活用・ハッカソン」の開催です!

前回のアイデアソンなどのアイデアを元に、何か一緒に創りましょう!
障がいをテーマにアイデアソン! コーポレートフェローシップとアイデアソンお助けアプリ

links
- Open JTalk

創ろう!米子高専生へプログラミングの教え方とArmマシン語講座 with IchigoJam

2018/01/09 23:55:00
#tottari #IchigoJam #asm 

米子高専4年生向けにIchigoJamを使ったプログラミング教え方入門。
秒間5000万回の計算速度を持つコンピューターを操る、Armマシン語入門付き!

Armマシン語で、1+1を計算

POKE#700,1,48,112,71 ?USR(#700,1) 2

+10に変更

POKE#700,10,48,112,71 ?USR(#700,1) 11

マシン語から返ってくる命令"112,71"を変更すると・・・、IchigoJamを暴走させることができます!

POKE#700,10,48,11,71
?USR(#700,1)

CPUの命令数、スピード優先、Intel x86アーキテクチャの最新はなんと3500!
消費電力の少なさ優先、Arm Cortex-M0/M0+は56とコンパクトなので学ぶなら、Armがオススメ!
最新スマホや、今後登場するArmサーバーでもIchigoJamでも同じマシン語が使えますよ。
詳しくは「連載、Armマシン語入門」「Cortex-M0 Armマシン語表(抜粋)」をどうぞ!


ゲームも音があると盛り上がる!(圧電サウンダーの接続方法紹介スライド)


LED1で、光った瞬間が一番感動した。
ゲームづくりが楽しかった。
これを1年生でやって置きたかった。
など、感触上々、ぜひ周りのこどもへ広めてみましょう!


「プログラミングを教えよう」スライド(オープンデータなので自由にカット&ペースト&加工してください)


放課後は講演会「楽しいを武器に!」


おいしかったカニ雑炊!


さすが蟹取県!


福井県の小学生向けロボコン、越前がにロボコンとのカニロボ頂上決戦もおもしろいかも。
戦う姿まぶしい小学生、動画でふりかえる「越前がにロボコン」
ASCII.jp:小学生が自作ロボットで競い合う「越前がにロボコン」が熱かった


米子高専の河野先生を代表にPCN米子立ち上げ準備がスタート!
MAKER FES 境港」など、発表の機会もありますねっ

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image