Hatena::ブログ(Diary)

お前の血は何色だ!! 4 このページをアンテナに追加 RSSフィード Twitter

2016-08-18

Future Home Contorller の Homebridge対応ハック

FutureHomeControllerをHomekit(siri)に対応させる追加プログラムを作成しました。

このプログラムを設定すると、iphone取り出して、hey,siri 電気消して で、電気が消えます。

https://github.com/rti7743/homebridge-fhc

npmモジュール化したので、以下で入ります。

npm install -g homebridge-fhc

platformsとして実装したので、導入は簡単です。

こういう設定を書くだけで、FHCに登録されているすべての家電を利用できます。

"platforms": [
     {
         "platform" : "FHC",
         "name" : "FHC",
         "apikey" : "<<APIKEY>>",
         "host" : "http://127.0.0.1"
     }
]

ただ、HomeKitでの細かい処理の定義の書き方がよくわからないので、

今のところ基本的にできることは、ON/OFFだけです。


こんな風にすると、自由キーワードが取れそうですが、残念ながら取れません。

statusService
.addCharacteristic(KeyCharacteristic)
.on('get', this._getKey.bind(this))
.on('set', this._setKey.bind(this));

function makeKeyCharacteristic() {
	KeyCharacteristic = function() {
		Characteristic.call(this, 'Key', '2A6FD4DE-8103-4E58-BDAC-25835CD006BD');
		this.setProps({
			format: Characteristic.Formats.STRING,
			unit: Characteristic.Units.NONE,
			//maxValue: 10,
			//minValue: -10,
			//minStep: 1,
			perms: [Characteristic.Perms.READ, Characteristic.Perms.WRITE, Characteristic.Perms.NOTIFY]
		});
		this.value = this.getDefaultValue();
	};

	util.inherits(KeyCharacteristic, Characteristic);
}

テレビとかのチャンネル切り替えとかはどうやっているのか未だによくわかりません。

samsungtv 対応のルーチンがあるのですが、 chunnel切替とかを真似してみたが、どうもなにか違うらしい。

https://github.com/CONNCTED/homebridge-samsungtv

このあたり、うまくできている方は、やり方をぜひ教えて下さい。

どうやれば、ON/OFF以外の、チャンネル切り替えとかのような操作ができるのでしょうか?

テレ東にして!とか、緑ボタン押して!とかやりたいです。


また、HomeKitのためだけにnodejsを動かすのはサーバリソース的にもったいない!

ということで探してみると、 HAPC++の実装もあるみたいですね・・・動くかどうかはわからないですけど。

https://github.com/etwmc/Personal-HomeKit-HAP

HomeKitは、端末を探すのに Bonjourで、

イベントの送信には、魔改造したHTTP+Chacha20+なんかいろいろ やっていてEVENT/1.0 200 OKとかで通信する感じ?


そもそも、Chacha20ってなんだよ。チャチャなんて赤ずきんチャチャぐらいしか知らない。

仕方ないので、検索してみると、「新しいTLSの暗号方式ChaCha20-Poly1305 - ぼちぼち日記」というところでChacha20とかについて解説されている。

HomeKitには、いろいろと新しい技術がふんだんに使われていそう。

この実装とその理解は難しそうです。

2016-07-18 人に迷惑をかけるなのパラドックス

人に迷惑をかけるなのパラドックス

たまに、少しは人の迷惑を考えろという人がいる。

だがしかし、あなたに迷惑が掛からないようにすると、私にとってとても迷惑なことがおきる。

なぜ貴方の迷惑を解消するために、私が迷惑を被らないといけないのか。

少しは他人の迷惑を考えてほしいものである。


つまり、人に迷惑をかけるなという行為自体が、とてつもなく人に迷惑をかけている。

同様に、わがままを言うなという行為自体は、とてつもなくわがままである。

よって、人に迷惑をかけるなという行為自体が自己矛盾のブーメランじみた、パラドックスである。

もし、人に迷惑をかけるなという人がいたら、あなたのその意見がとてつもなく迷惑をかけているので、人に迷惑をかけるのは、やめてくださいといってあげよう。それが優しさというものだ。

2016-02-20

日の丸を丸く描くんじゃねーよ。

f:id:rti7743:20160220062815j:image:medium

みなさんは、日本国国旗である日の丸、好きできすか?

私は大好きです。

ってことを書くと、このウヨクがーといってくる頭のおかしい人がいそうですが、個人的には、どちらかといえばリベラルな方なんじゃないのかと思ってます。

それでは、なぜ日の丸が好きなのか?

自国の国旗が好きで何が悪いという単純な理由だけではなく、

好きな理由をいくつか上げることができます。


なぜ日の丸が好きなのか?

好きな理由1

白い長方形に赤い丸。

実にシンプルで、美しいデザインだと思います。

引き算の料理と言われる日本料理や、盆栽、見えそうで見えない美少女のパンツみたいに、シンプルなところに美を見つけ出す日本人にふさわしいデザインだと思います。

f:id:rti7743:20160220062817p:image:medium



好きな理由2

日の丸弁当がうまい。

白米に梅干しというコンボは最強です。

日本人として疑う余地がありません。

f:id:rti7743:20160220062816j:image:medium


余談ですが、

ピザマルガリータ(マルゲリータ)も、緑のバジルと白いチーズと赤いトマトで、イタリア国旗をかたどったデザインだそうです。

シンプルな国旗だとそれをかたどった美味しい食べ物が作られるのでしょうか。


好きな理由3

子供で簡単書ける

長方形の白い紙に、赤ペンで丸をでかくかけば完成です。

子供でも簡単にかけます。

もし、アメリカ星条旗や、シンプルながらマークがある中国ロシア国旗をかけといわれたらけっこう大変です。


好きな理由4

よってグラフィックプログラムの入門に最適

長方形に丸、そして塗りつぶしというグラフィックAPIに必要なことがすべて詰まっています。

日の丸を書くコードはグラフィックAPIを学ぶhello worldのようなものでしょう。

<script>
	var canvas = document.getElementById('canv');
	var context = canvas.getContext('2d');

	context.beginPath();
	
	//四角形を描き
	context.fillStyle = "rgb(255, 255, 255)";
	context.fillRect(0,0,200,120);

	//円を描き
	context.strokeStyle  = "rgb(255, 0, 0)";
	context.arc(100, 60, 40, 0, Math.PI*2, false);

	//塗りつぶす
	context.fillStyle = "rgb(255, 0, 0)";
	context.fill();
	context.stroke();

</script>

もし、これがアメリカ星条旗を描けと言われたらと思うと、

あまりの難しさに初心者は卒倒します。

星マークとかは関数化したりしていい感じに逃げたいところですが、そうなるとhello world から外れてしまいますね。

f:id:rti7743:20160220062818p:image:medium


ちなみに旭日旗は嫌いです

ちなみに旭日旗は嫌いです。

まずデザインがシンプルではありません。

単純に円に丸ではないので、子供とかは簡単に書くことができませんし、グラフィックプログラムの例題としても複雑過ぎます。

そして何よりも旭日旗弁当は、あまり美味そうには思えないところです。

旭日旗 弁当

https://www.google.co.jp/search?q=%E6%97%AD%E6%97%A5%E6%97%97+%E5%BC%81%E5%BD%93&source=lnms&tbm=isch

f:id:rti7743:20160220062820p:image:medium


本題

このようにシンプルで美しい日の丸ですが、

最近、日の丸を円形で書く人たちがいます。

例えばAppleのサイト。国旗が円形でデサインされています。

f:id:rti7743:20160220062821p:image:medium

http://www.apple.com/choose-your-country/


確かに円形にすることでおしゃれっぽく見えます。

星条旗や複雑なデザイン、シンボルマークをもっている国旗はとても綺麗に見えますが・・・

f:id:rti7743:20160220062822p:image:medium



問題は日の丸にあります。

これです。

f:id:rti7743:20160220062823p:image:medium


私は、これを何度見ても「ゲゲゲの鬼太郎目玉の親父」にしか見えません。

最初見た時、これが日の丸であることを視認できませんでした。

なんだこの目玉の親父は? というか、なぜ目玉の親父がこんなところにいるんだ?きっと何か哲学的な意味があるに違いないと、深く深く考えこんでしまいました。


目玉の親父に似ているわけですから、せっかくだから吹き出しをつけて喋らせてみましょう。

おいっ 鬼太郎

f:id:rti7743:20160220062825p:image:w360


完全に一致。



この丸いのは他にもあって、

「速報版! 日の丸 F-35 航空観閲式 航空自衛隊 百里基地」の動画より

f:id:rti7743:20160220062826j:image:medium


おいっ 鬼太郎

f:id:rti7743:20160220062827p:image


補足:この場合、国籍マークであって、日の丸ではないのかもしれないが、目玉のおやじであることにかわりない。


と、いうわけで、円形で日の丸を書かれると目玉の親父にしか見えないです。

こういうデザインを見るたびに、毎回頭のなかで、「おいっ鬼太郎!」というフレーズが聞こえて一人笑いしてしまいます。

何あの人一人でニヤニヤわらっているの?と指をさされかねません。

大変危険です。

なので、日の丸は円形ではなく、できれば四角形で書いて欲しいと思っているのです。

f:id:rti7743:20160220062825p:image:medium

2015-08-30

太古の昔、メモリ空間は自由だった。

太古の昔、メモリ空間は自由だった。

好きなところにジャンプでき、自由に書き換えることもできた。


だが、その結果、解読不能摩訶不思議ソースコードができあがった。

これではいけないと人々は立ち上がった。


gotoなどの無条件ジャンプは悪とされた。


だが、自由にメモリ空間は書き換えられた。

その結果、グローバル変数でまみれた不思議なコードが出来上がった。

これではいけないと人々は立ち上がった。


グローバル変数は悪とされローカル変数などが導入された。


だが、長いスコープを持つ巨大な変数があった。

スレッドで再突入されるコードがあった。

これではいけないと人々は立ち上がった。


その結果、クラスや名前空間によりもっと細かいスコープで管理されるようになった。


だが、煩雑なクラス定義が残った。

これではいけないと人々は立ち上がった。


その結果、無名関数やlamda構文やリフレクションなどの構文ができた。




プログラム言語の歴史は、

自由すぎるメモリ空間をいかに制限して使いやすくするか、

それと同時に、制限はするがそれでも高い表現力を維持させるにはどうすればいいかという、

矛盾しそうな気もする課題への挑戦だったと思う。

2015-07-01

右派と左派って、真女神転生で例えるなら、右派がロウで、左派がカオスだな。

右派左派って、真女神転生で例えるなら、右派がロウで、左派カオスだと思う。


右派->ロウ

左派->カオス


規律のためなら死んでもいいのと、自由のためなら死んでもいいの違い。

規律ある社会や国家のために死んでもいいのと、個人の自由のためなら死んでもいい。みたいな。

個人の自由より秩序を優先と、個人の自由を何より優先。みたいな。


例えば、家に否定的な左派がなぜ同性婚賛同するかというと、

本人たちがそれを望んでいて、特にデメリットがないならまあいいんでねという、個人の自由を何より最優先するからだと思う。


なんで左派が家とかの古くあるコミニティに否定的かというと、

それを窮屈に感じる人がいてそこから逃れたい人がいるならば、その個人の逃れたいという自由を最優先したいからだと思う。


ちなみに、左派表現の自由とかを最優先するかというと、

それは云わずもがな言いたいことを言う自由を優先したいからだ。ということは、逆に、右派表現規制などを行い社会秩序を守りたいのもなんとなくわかるよね。


ようするに、左派自由ありきなわけだ。だから、リベラル(自由主義者)なんだね。

言葉というのはよく出来ているものだ。




右派からすれば、左派は自分勝手な身勝手な奴らで、秩序を破壊する危険なやつらだし、

左派からすれば、右派は口うるさく自由を束縛する、人間の自由を奪う危険なやつらだ。

お互いが互いの価値観を理解し合うのは無理というものだろう。

お互いの価値観に違いがあるのを認めるぐらいしかないだろう。




どちらも、極限まで傾くと頭おかしい集団となる。

例えば、

右派だと、ナショナリズムとかで外国人とかを迫害し始めたり、検閲や全体主義を始めるだろうし、

左派だと、国家とか秩序をないがしろに始めるだろう。

これもたま、女神転生で、ロウを極めても頭おかしい集団になるし、カオスを極めても頭がおかしい集団になるのと一緒だ。



右派左派もどちらも極めた社会はディストピアそのものだ。




だから、できるならばどちらにも傾かないニュートラルルートを歩んでいきたいものだ。

右派左派も、あいつら何マジになっているんだと馬鹿にして指差して笑えるぐらいになりたい。

そして、右派からは左派だと言われ、左派からは右派だといわれる地点にいたいものだ。

その地点がどちらにも傾かないニュートラルルートだと僕は信じる。



右派を極めた頭おかしい奴ら、左派を極めた頭おかしい奴らをすべて笑って弾き返すニュートラルでいたいよね。