北千住で何もしない週末

2月は疲れがたまる!

ということで、週末に大浴場のあるホテルで、夫婦でのんびり過ごそう!ということで金曜日の朝、出社前にインターネットで探して予約しました。インターネット素晴らしい!

 

とくに観光目当てではないので近場でいいじゃない、ということで探していると「北千住」のホテルがヒット。

大浴場があり、そこそこリーズナブル。

金曜の仕事を終えて、家に帰らず北千住に向かいました。

f:id:inajob:20190224142823p:plain

 

お店は妻がいろいろ調べてくれたらしく、例えばinstagramで”北千住グルメ”などとすると見つかるのだとか 

www.instagram.com

 

ふむふむ。おされだな・・

 

サニーダイナー

夜ごはんはよさそうなハンバーガー屋にしました。

www.sunnydiner.com

 

気になる「フッツウノ」お客様の声から生まれたらしい・・

f:id:inajob:20190224142856p:plain

かわいいつまようじをアレする装置

おいしかったです。

f:id:inajob:20190224143054p:plain

あと、関係ないけど、店に置いてあった新聞の広告に気になる書籍が・・

f:id:inajob:20190224143148p:plain

”ゾンビ”のビジネスとは・・

ホテルのPC

ホテルのフロントにPCがあったので、興味本位で見てみると、謎のキーボードがついていた!(結局使い方はわからなかった)

あとおもむろにブラウザを開いたら誰かのFacebookにログインしっぱなしだったよ!(閉じておきました)ホテルのPCを使うときは注意が必要ですよ!どなたか知らないけど。

f:id:inajob:20190224143235p:plain

大浴場でのんびりしてから、睡眠。

北千住ぶらり

朝ごはんを食べて、妻は再び寝てしまったので、僕は一人北千住の街をうろうろ

 

店員のウルトラマンさん

f:id:inajob:20190224143420p:plain

 

すごいPayPayを押している。

f:id:inajob:20190224143442p:plain

やけに雰囲気の良い眼科。ここだけ異世界から転生してきたような様子

f:id:inajob:20190224143523p:plain

instagramで人気そうなお店は、行列ができていました。これがインスタ映えの力か・・・

 

Sd Coffee

朝ごはんをホテルでしっかり食べたので昼は軽めでよいだろうということで、立ち寄ったのが、こちらのカフェ

 

www.kita-senju.jp

 

謎の店内

f:id:inajob:20190224143632p:plain


謎の「OK!DOG」なるメニュー (どうやらOKと桶を掛けているらしい)

f:id:inajob:20190224143609p:plain

やけに長い名前のシェイク「抹茶めっちゃむっちゃシェイク」(めっちゃ迎春ひなまつりVer.2)

f:id:inajob:20190224143730p:plain

これが

「抹茶めっちゃむっちゃシェイク」(めっちゃ迎春ひな祭りVer.2)

 だっ!!

f:id:inajob:20190224143811p:plain

これが「OK!DOG」

f:id:inajob:20190224143921p:plain

おいしかったけど、シェイクを食べたら寒くなったのでホテルに帰って再び風呂

ダラダラしていたら、もう夜だよ!ということで夕食

足柄野菜の店 YOSHI

夕食はこちらに店でいただきました。まぁSD Coffeeからと比較すると普通のお店でした。

osteriayoshi.gorp.jp

 

帰り道

ということで、帰ってきてこのブログを書いています。

たまにはこういうダラダラ週末も良いなと感じました。

 

前回ブログに書いた平塚旅行(平塚旅行してきました - inajob's blog)以上に近場で、かつ何もしない旅行となりましたが、こういうのが良いんだよ・・

 

OpenSCADによる3Dプリンタモデルの設計

はじめに

3Dプリンタ用のモデル、どうやって作っていますか?

僕はFusion360も使いますが、ここぞというときにはOpenSCADを使っています。

www.openscad.org

 

OpenSCADとは

OpenSCADはプログラムで3Dモデルを作成する環境です。プログラム言語で図形を定義することでいくつかのメリットがあります。

  • 変数が扱える
  • Gitなどのソースコード管理ツールと相性が良い
  • パーツのモジュール化などが用意

一方で、GUIによる編集ができないので直感的なモノ作りは難しいです。

僕は雑な形状をまずFusion360などGUIのCADで作ったのちに、OpenSCADを使うことが多いです。

ちょっとデモ

cube([1,1,1]);

 f:id:inajob:20190216181314p:plain

 こんな風に、立方体が作れます。

2次元の形状を定義することもできます。

square([10,10]);
circle(r=5);

f:id:inajob:20190216181606p:plain

 さらにこれを引き延ばせます

linear_extrude(height=5){
union(){
square([10,10]);
circle(r=5);
}

f:id:inajob:20190216181806p:plain

offsetを指定すると角が丸くなります

linear_extrude(height=5){
offset(3){
union(){
square([10,10]);
circle(r=5);
}
}

f:id:inajob:20190216182040p:plain

offsetを同じだけマイナスすると大きさを保ったまま角を丸めることができます。

linear_extrude(height=5){
offset(-3) offset(3){
union(){
square([10,10]);
circle(r=5);
}
}
}

f:id:inajob:20190216182120p:plain

図形同士を演算してくりぬいたりもできます。

$fn=50;
module sketch(){
    union(){
        square([10,10]);
        circle(r=5);
    }
}

linear_extrude(height=5){
    difference(){
        offset(-3) offset(3){
            sketch();
        }
        offset(-2) offset(1) sketch();
    }
}

f:id:inajob:20190216182615p:plain

まぁ、こんな感じで3Dデータを作ることができます。

 

3Dプリンタやレーザーカッターでの出力

こうやって作った3DモデルはSTL形式でエクスポートすることができるので、3Dプリンタで印刷することができます。

また2次元データはSVG形式の出力もできるため、うまくモデルを作るとレーザーカッター向けのデータも作成できます。

今私が作っているRakuChordは、3Dプリンタで作った筐体に加えてレーザーカッターでフロントパネルを作っています。

このようなデータを用意する際もOpenSCADで同じように扱うことができます。

また私の場合は3Dプリンタは家にあるのですが、レーザーカッターは持ち合わせていません。このような状況だと、まず3Dプリンタでレーザーカッター用のデータで部品を出力してみて、位置合わせをする。というのがさっとできるのがこの方法の良いところです。

f:id:inajob:20190216183318p:plain

下が3Dプリンタで作ったもの、上が同じデータをレーザーカットしたものです。

f:id:inajob:20190216183532p:plain

回路設計ソフトKiCADとの連携

さらに便利な機能としてKiCADでの外形データをdxfとしてOpenSCADで読み込むことができます。

私の場合は、下記の図でいうと白い枠線をCmts.Userなど、製造とは関係ないレイヤーに作成し、そのデータをdxfで出力してOpenSCADに取り込んでいます。

こうすることで、基板上のコンポーネント配置とぴったり合ったカバーなどを作ることができます。

f:id:inajob:20190216183955p:plain

まとめ

といった具合にOpenSCADを使うと非常に簡単に3Dデータのワークフローを構築できます。

もちろんFusion360でも似たようなことはできるのでしょうが、オープンソースのソフトを組み合わせて使おうとすると、テキストファイルとして3Dデータを扱えるというのは非常に取り回しが楽です。

しかし、OpenSCADは直感的な3Dの造形が難しく、今回紹介したoffsetを2回実行することで角を丸くするテクニックなども知らないとわかりません。Fusion360だと、フィレットや面取りはUIから簡単にできるため、そういう点ではFusion360のほうが簡単です。OpenSCAD使いの方で、こういったテクニックを知ってる人は、ぜひその知見を公開してほしいです。

私が使ってて気づいたことは 下記Scrapboxに随時まとめています。

scrapbox.io

またOpenSCADは独自の言語なので敬遠する人もいるかもしれません。そういった方にはJavaScriptで似たようなことをするOpenJSCADがお勧めです。

openjscad.org

 

最後に、今私が頑張って作っているRakuChordの紹介ページを貼って、この記事を締めます。

気になる方はぜひ見てみてください↓↓↓↓↓

inajob.github.io



 

 


 

 

ESP32ゲーム機o-bakoによるゲームのオンラインダウンロード

o-bakoにゲームのオンラインダウンロード機能が付きました!

o-bakoは、僕が作っているESP32で動作するゲーム機です。

inajob.hatenablog.jp

ゲームのオンラインダウンロード機能を作っているので、その紹介をします。

o-bakoの現在の状況

昨年5月から、ずいぶんと開発が進み、プリント基板化も行いました。

ちなみにこの基板、設計を大量に間違えており、工夫をしないと作ることができません・・

そして、3Dプリンタで筐体を作りました。

 さらに、リチウムイオンポリマー二次電池による、充電機能も付けてみました。

といってもこれは、市販の充電回路と、5V昇圧回路を組み合わせただけですが、、

f:id:inajob:20190131164124p:plain

o-bakoのランチャ

o-bakoはLuaでゲームプログラムが書けるという環境です。描画命令や、キーの入力スキャンなどの処理はネイティブ実装を行っており、Luaの関数から呼び出すことができます。

また、o-bakoのランチャ自体もo-bakoのアプリケーションの一つとしてLua言語で実装されています。要は”ランチャ”というゲームです。

o-bako-esp32/main.lua at master · inajob/o-bako-esp32 · GitHub

この150行程度のプログラムがランチャです。

f:id:inajob:20190131164705p:plain

実行するとこのようにSPIFFS上のファイルを一覧し、十字キーでゲームを選んで実行することができます。

o-bako用のゲーム

ゲームらしいゲームの例を見ていきましょう。

o-bako-esp32/main.lua at master · inajob/o-bako-esp32 · GitHub

この104行のプログラムは、ジャンプで敵キャラをよけるという単純なアクションゲームです。

f:id:inajob:20190131195313p:plain

o-bako固有の命令については o-bako Simulatorに紹介していますので参考にしてください。

 

ゲームを構成するファイルについてみていきます。

o-bako-esp32/example/jump at master · inajob/o-bako-esp32 · GitHub ここにあるように、このゲームを構成するのはgame.jsonとmain.lua、sprite.bmpです。

game.jsonはこのような内容です。

{"title":"jump", "files":["main.lua", "sprite.bmp"]}

これが、このゲームのタイトルと、依存しているファイルの一覧です。

main.luaはゲーム本体のLuaスクリプトです。sprite.bmpは128x128の256色インデックスカラーのビットマップファイルです。

ゲームのオンラインダウンロード

ゲームのオンラインダウンロードのため、まずはダウンロード可能なゲームの一覧をファイルにまとめています。

o-bako-esp32/games.json at master · inajob/o-bako-esp32 · GitHub

{"games":["jump", "loader", "downloader","doteditor"]}

このような内容です。この例では4つのゲームがダウンロード可能となっています。

 

ゲームのオンラインダウンロードを行う機能も一つの”ゲーム”としてLuaで記述しています。

o-bako-esp32/example/downloader at master · inajob/o-bako-esp32 · GitHub

主となるのはmain.luaで、120行程度のプログラムです。

このプログラムが、上記のゲーム一覧のjsonファイルを読み込みます。そして、ゲームをダウンロードします。

f:id:inajob:20190131172555p:plain 

まとめ

ESP32はWiFiが利用でき、非常に高性能なマイコンモジュールです。

o-bakoでは esp32-arduinoでluaを使う - Qiitaで紹介した方法でLuaを利用しています。

これらの強力な機能のおかげで、”インターネットからのオンラインゲームダウンロード機能”を備えた携帯ゲーム機を作ることができてしまいました。

これからもo-bakoの開発を進めていきますので、気になる方は私のTwitterアカウントina_ani (@ina_ani) | Twitterと、このブログを要チェックです。

 

 

 

2018年まとめ

f:id:inajob:20181228182232p:plain

所感

今年はなんといってもRakuChordのキットを販売できたのが大きかったです。昨年試行錯誤していた3Dプリンタのノウハウがようやく生きてきたのを感じます。来年もバージョンアップして売りたいな、と考えています。まだ形になっていませんがESP32を使ったゲーム環境o-bakoにも力を入れました。これは来年も継続して取り組みたいです。

また、このはてなブログの記事のうち2つの記事で非常にたくさんのブックマークをもらうことができました。

去年の反省で、”もう少しWeb系の活動がしたかった”と、書いていたのですがまぁこの2つ目の記事で実現できたかなと思います。

それと、半分仕事ですが、KubeWeeklyで紹介されている記事を読んで、一言感想を書いてQiitaに投稿する。という活動を継続して行うことができました。 → KubeWeekly 13 posts - Qiita

おかげで「英語の技術文章をさっと眺める」ということが抵抗なくできるようになってきました(理解できるとは言っていない)。次はリスニングについて抵抗をなくしていきたいところです。

体調不良は相変わらずなのですが、今年は新たなるチャレンジとして「ダンスダンスレボリューションを毎朝する」というのをはじめました。来年はもう少し健康でありたいです。

 

このブログは、今までは”自分の作ったもの”を記事として投稿していたのですが、今年は”自分の買ったもの”、”旅行記”についても投稿してみました。今後も面白いものを買ったり、変わった旅をしたときはそれも投稿していくつもりです。 興味のある方はぜひ読者登録してみてください。

ステータス

  • 引っ越してから2年目
  • 会社に入ってから9年目(来年度で10年目)
  • 結婚してから2年ちょっと

今年学んだスキル

  • 電子工作キットの販売
  • 英語の技術記事をざっと読める
  • ESP32

月別振り返り

今年はTwitterでのみ製作報告した取り組みが多かったので、少し細かい粒度でまとめてみました。

1月

  • 映画オデッセイを見る
  • PIC32に挑戦しようとして挫折
  • おうちKubernetes増強
  • 豆苗を育てるブーム
  • 3Dプリンタを簡易的な箱で覆う
  • 瞑想中 作る 

  • Arduboy Writerを作る

inajob.hatenablog.jp

 

  • タッチパネルキーボードを作る

inajob.hatenablog.jp

 

  • モバイルRaspberryPiを作ろうとする

  •  鼻笛に興味を示す。
  • 月蝕

2月

inajob.hatenablog.jp

 

inajob.hatenablog.jp

inajob.hatenablog.jp

  • ESP8266で和音

inajob.hatenablog.jp

  • T.Chordstrumを発見する
  • 布教用RakuChord完成
  • RakuChord紹介動画作成

www.youtube.com

  • RakuChord公式ページ作成

inajob.github.io

  • リビング改造 こたつ机からちゃんとしたデスクに!
  • FM音源ボードを購入してRakuChordから鳴らしてみる

www.youtube.com

  • フィラメント送り用の補助具を作った

3月

  • 掃除しないルンバ

inajob.hatenablog.jp

  • RakuChordのキット組み立て手順作成

inajob.github.io

  • シャープの電子ノートを購入
  • Osushiが流行る
  • OctoPrintのホストをRaspberryPi3に変更 遠隔プリントの準備が整う

  •  映画 her を見た
  • 名前入りキャンドルを作る

  •  納豆ボタン日本語対応

  •  モバイルRaspberryPiをつくろうとする

  •  組みひも作り器の糸巻をつくる

  •  蕁麻疹に悩む(結局花粉症だったのかな?)

4月

  • 掃除しないルンバをしゃべるようにした

  • ESP32初購入
  • ヤマハFM音源チップYM2413を購入(仮組みしただけで放置)
  • T.Chordstrumを購入した。

www.youtube.com

  • ケースも作った

  •  ESP32で豊四季TinyBASICを動かしてみる

  •  ESP32でLuaを動かしてみる

  •  本を開きっぱなしにするやつを作った

  •  倉敷観光からの帰省

5月

  • 風邪っぽい症状
  • Arduboyに自分の名前が入っているようで感動

  •  木製フィラメントを購入

  •  o-bakoシミュレータの開発

inajob.hatenablog.jp

6月

inajob.hatenablog.jp

  • RakuChordを貸し出して、演奏してもらう。うれしい。 

  •  m5stackを購入
  • 電子工作合宿
  • esp32-arduinoluaを使う 

qiita.com

qiita.com

  • makeに向けてキットを作り始める

7月

  •  腹痛からののどの痛み、風邪
  • RakuChordのケースをレーザーカッターで作れないか試行錯誤

inajob.hatenablog.jp

8月

  •  MakeにてRakuChordの販売

  •  RakuChordキット販売への道のり

inajob.hatenablog.jp

9月

inajob.hatenablog.jp

  • 平塚旅行 

inajob.hatenablog.jp

  • o-bako実機の作成

10月

  • 毎時新聞

inajob.hatenablog.jp

  • RakuChordディスプレイテスト

  • 技術書展お手伝い
  • o-bakoテストのためにソフトを書いてみる

  •  コメを炊く必要があることを知らせるやつ作った

  •  RakuChordで演奏してみた動画を作った

www.youtube.com

11月

inajob.hatenablog.jp

  • テレビチューナー購入

inajob.hatenablog.jp

  • さくら展に行った
  • Qooboが届いた。
  • 出張で中国へ
  • 映画 レディプレイヤーワン 見た
  • 映画 カメラを止めるな! を見た
  • 同人ハードウェアミートアップに参加
  • Wiiのセンサーバーを固定するやつ

12月

  • ESP32でタッチパネルと液晶

  • のどが痛い からの体調不良(熱は出なかった
  • OrangePicoPocketを購入

  • HackDayの全作品をまとめた 

scrapbox.io

 

参考

テレビチューナーを買った

いんとろ

買ったエントリばっかり続いていますが、テレビチューナーを購入しました。

何を隠そう僕は高校生くらいの時からテレビのない生活をしてきたので、テレビにはめっきり詳しくない、、、 そんな僕の奮闘を記録しておきます。

要件

  • テレビ番組が見たい(妻が年末のガキ使が見たいと言っている)
  • ものを増やしたくないのでディスプレイはパソコン用のものを流用したい
  • うちのディスプレイはDVI-DかVGA接続ができる

調査

HDMI接続あり、という絞り込みができたので、ここを参考にする。

kakaku.com

 

ちなみにHDMI接続にこだわらないとこんな感じ。

kakaku.com

 

  • 1万円程度のチューナーはコンポジット出力のみ
  • 2万円程度からHDMI接続をサポート
  • 上には上がいる

決める

コンポジット出力されたものをVGAやDVI-Dに変換するという手もあるが、なんか負けた気がするのと、しょぼい地デジチューナーは旅先のホテルとかで触ったことがあるが、すべてにおいてもっさりなので、中くらいの性能のものがいいな、、などと考えた結果、HDMIをサポートしていて一番安そうな

 こいつに決定!

テレビは難しい

B-CASカード

よくわかっていないが、これを刺さないとテレビが見られないらしい。地デジの信号はなんか暗号化か何かされていて、このカードを使ってそれを複合化している、、という認識。

HDMI変換

このチューナはHDMIを出力しますが、我が家のディプレイはDVI-DかVGAしかサポートしていない。(もっと詳しく言うと我が家には2つのディスプレイがあり、1つはVGAとDVI-D、もう一つはDVI-Dのみサポート)

ということでHDMI → DVI-D or VGAの変換が必要となる。

HDMIからDVI-Dは普段から使っている。 

ELECOM HDMI DVIアダプタ AD-HTD

ELECOM HDMI DVIアダプタ AD-HTD

 

 こういうやつ。

しかし、、これ、音声はどうなるのか・・。

パソコンの場合は音声端子は別にあるのでそっちを使えばよいが、今回のチューナはHDMIから映像と音声を出力することしかできないようだ。

つまり、HDMIから音声を分離する必要がある。

DVI-Dはひとまずあきらめて、VGAだとこういう製品がある。

このアダプタ、すっきりしそうだが、USBで給電する口がある、配線だらけになるな・・と思っていたが、実際接続してみるとUSB給電しなくても動作した。HDMIバスパワーといった仕組みなのだろうか・・ まぁ動いたからいいや。

 

たくさん探したけどHDMIをDVI-Dとオーディオに分離するアダプタは見つからなかった。

 

買っていないけど、こういう商品で一度オーディオを取り出してHDMI-DVIアダプタでHDMIをDVI-DにすればDVI-Dとオーディオになるのかな・・つらみ

まぁとりあえずはVGAで良いことにする。

同軸ケーブル

チューナーを購入して、いそいそと設置準備をしているときにふと気づいた、、「同軸ケーブルがない」部屋の壁についているテレビアンテナからのコネクタをチューナにつなげるためのケーブルです。我が家の場合は5mくらい必要そうです。

ということでそれも購入 

 こういうやつ

さて、チューナの後ろを覗くと、同軸ケーブルを刺すところが4つもある!

  • 地上デジタル出力 これはテレビにつなげるときの線で使わないはず
  • BS・110度CS出力 これもテレビにつなげるときの線で使わないはず
  • 地上波デジタル入力 これは入力らしい、それっぽい
  • BS・110度CS入力 これは入力らしい、それっぽい

ん?同軸ケーブルを刺す箇所が2か所ある。しかし壁には1つしか穴がない。

始めに間違えてBS・110度CS入力にさしてしまったが、番組スキャンがすべて失敗した。

その後地上波デジタル入力に刺したところ地上波デジタルの番組が視聴できました。

 

試していないが、こういうコネクタで「分波」してやれば見られるようになるのだろうか、、謎技術だな・・

HORIC アンテナ分波器 BS/CS/地デジ対応 白ケーブル2本付き(S-4C-FB) 40cm  BCUV-971

HORIC アンテナ分波器 BS/CS/地デジ対応 白ケーブル2本付き(S-4C-FB) 40cm BCUV-971

 

で、無事PCモニタへVGAケーブルで接続してテレビを見ることができました。

スマートフォンからの視聴 

このチューナ、スマートフォンからも視聴できるようで、LANケーブル端子がついています。

せっかくなので設定して、iPhoneに視聴アプリを入れてみてみました。見れる!しかもチューナが2つ内蔵されているので、2端末から見れるらしい!

 

ちなみに妻はAndroid端末を持っているが、USBデバッグがONだと視聴アプリは起動できないらしい。テレビアプリともなるとその辺厳重になるのだな。

PCからの視聴

スマートフォンから見れるのだから当然PCからも見れる、、と思って調べてみると、、

Windowsの場合は1世代前のアプリが使えるようだ、、 お、、おう

Macの場合はアプリが提供されていない

スマフォファースト、ということか。って、PCからみられるならHDMI接続なんて頑張らなくてもPCで全画面表示すればよいじゃないか!とおもってそれも試してみる。

しかし、、ノートパソコンのメインディスプレイだと受信できるが、外部ディスプレイで表示しようとするとみられない。どうやらノートパソコンと外部ディスプレイの接続がVGAなのが気に入らないらしい。著作権保護信号的なものがサポートしていないディスプレイには表示できないということか・・?

僕のノートPCにはVGA端子しかない、妻のノートPCはMacBookなのでそれもダメ。まぁいいや直接つなぐから。

まだ試していない機能

どうやらこのチューナUSBでハードディスクを接続すると「録画」ができるらしい。今のところ空いているHDDを持っていないので、後で試そうと思うが、これは非常に役立ちそうだ。

また、スマートフォンからの視聴は設定を適切に行えば出先からもできるらしい。すごい通信量になりそうだが・・。リアルタイムではなく録画したものをスマートフォンに転送しておいて、見ることもできるらしい。これは通勤時間にお気に入りの番組を見ることができそう。まぁまだ見たい番組がないけど

2020/05/31 追記:1年ちょっと運用してみて

USBハードディスクで録画なども活用しています。ハードディスクはお古のノートパソコンから取り出したやつにIDE-USB変換アダプタをかましただけのしょぼいやつですが、特に問題なく使えています。画質は全く気にしないのでMR6(640×360)で録画しています。

出先で見ることができる「持ち出し」機能はまだ使っていません。

HDDがいっぱいになると当然録画することができないのですが、それを通知する機能が欲しいなと感じます。

アプリはiPhoneのものとWindowsのものを、よく使っていますが、どちらも微妙な出来栄えです。視聴し始めれば特に問題は無いのですが、視聴するまでの間に、謎にセッションが切れて、操作できなくなったりすることが頻発します。

番組表の読み込みはもっさりしている印象ですが、一度読み込めば操作は軽く、一覧性が良く見やすいので好みです。

テレビを買って気づいたこと

テレビがある生活というのは、17年ほどしてこなかった、もちろん友人の家や親戚の家で見ることはあったが、そんな僕の感想

  • テレビは常にさっと付けられることが価値の一つ(うちはPCディプレイがプライマリなので、この状態にはなっていない、切り替え機とかを買うのが良いのかな。)
  • 新聞のテレビ欄はテレビ番組を見るのに最適なUI、テレビ自体の番組表はいろいろつらい
  • テレビは基本的に見たい番組がない。ごくまれに見たい番組があるが、時間を合わせるのが大変なので録画が重要

 毎週のお気に入りの番組でもあればまた気持ちも変わるかもしれない。

テレビがないとき僕はどうやって動画コンテンツを視聴していたかというとYouTubeGyaoやAbemaTVで見ていた。

わざわざ録画をして見るより、インターネット上のコンテンツの好きなものをタップして見始められるほうがはるかに簡単だ、残るは番組の魅力だが、これはまだ僕のテレビ経験が浅いため今後に期待といったところ。

さて、来年の自分がテレビを活用できているのか、否か・・

 

 

 

1万円未満で始められる!自宅ダンスダンスレボリューション!

ふと家でダンスダンスレボリューションがやりたくなった

なぜだかやたらとダンスダンスレボリューション(以下DDR)がやりたくなったので、一式そろえてみました。

f:id:inajob:20181118155207p:plain

昔友人の家で遊ばせてもらったことはあったけど、飽きるまでやったことはなかった・・大人になった今、欲しいものは買える!!! という反動のようなものがあったのかもしれません。

DDRはどうすれば遊べるか?

DDRを遊ぶためには、コントローラか、専用マットが必要です。僕は専用マットで遊びたかったので、マットも含めて調達する必要があります。

調べたところ次のゲームハードでDDRが遊べるようです

PS/PS2

PSとPS2は両方でDDRがリリースされている。ただ、PS2だとしても結構古い。PS3,PS4も互換性があるので、どれかのPSがあれば遊べそう。しかしPS3,PS4は比較的新しいため中古だと少し高い気がしました。逆にPS2やPSは古いので、故障が心配です。(主観です)

GameCube

GameCubeでもDDRがリリースされていたようです。しかしWiiの中古が十分に安いのでGameCubeをあえて選ぶこともないかな。

DreamCast

DreamCastでも遊べそうですが、中古、、あるかな?

Wii/WiiU

Wiiでも遊べます。WiiUも互換性があるので遊べそう。

 

ここまで調べたところで、独断と偏見でWiiにすることに決めました。特に専用マットの経年劣化が心配なため、比較的新しいハードウェアが良かったのです。ちなみにWiiは2018年3月にオンライン機能が実質終了しているので、価値がガクンと落ちているようです。

 

価格.com - 任天堂 Wii [ウィー] シロ (Wiiリモコンプラス・Wii Sports Resort同梱) 価格推移グラフ

f:id:inajob:20181118155303p:plain

家に元からあるもの

  • パソコン用ディスプレイ(HDMI接続できるやつ)
  • スピーカ

買い物

Wii中古は「すぐ遊べるセット」などと銘打って2000~3000円で販売されています。(付属品の有無に注意してください)

Amazon.co.jp: こちらもどうぞ: Wii本体 (シロ) (「Wiiリモコンプラス」同梱) (RVL-S-WAAG)【メーカー生産終了】

続いてDDR専用マット

Amazon.co.jp: こちらもどうぞ: Wii用 ダンス ダンス レボリューション コントローラ

こちらは2600円程度で販売されています。

また、我が家にはテレビがなく、パソコン用のディスプレイのみがあります。通常Wiiはアナログ端子でテレビと接続します(赤、白、黄のケーブルのやつ)。しかし次の装置を使うことでHDMI端子でも接続できるようになりました。 

最後にソフトウェアです。

Wiiでは複数のDDRタイトルが出ており、 最後に販売されたMUSICFITが最も高い(中古で5000円程度)ですが、収録曲も多いようです。 

しかし、私はなるべく安く遊びたかったので、次のソフトを購入しました。

 こちらは中古で1000円程度で購入できます。

 さて、ゲーム機本体+専用マット+ソフト+HDMI変換器 がそろったので、これでDDRで遊ぶことができます。1万円かからないくらいで、DDR環境を用意することができました。

 

Wii版のDDRは足だけでなく、両手を振るアクションもあって、それはそれで面白いです。(オプションでOFFにすることもできました)

感想

ひさびさに遊ぶDDRは思った以上に体力を使いました。普段から運動不足を自覚しているので、うまく生活に組み込んで楽しんで体力をつけることができればと思っています。ダイエットモードというものもあるようなので、慣れてきたらそっちも遊んでみようと思います。

 

あ、あとWiiで面白いゲームタイトルがあれば教えてください!

Kubernetes上で動くマイクロサービスとして「毎時新聞」を作り直した

これは何?

f:id:inajob:20181020191454p:plain

インターネットの世界が常に気になるけれども、ずっと見ているわけにはいけません。例えば私は仕事をしているときはTwitterをずっと眺めているわけには行きません。

 

そんな人に向けたサービスが「毎時新聞」です。
Twitterで盛り上がっている画像や、トレンドワードを1時間ごとに集約します。
寝る前に今日のページを見ると 大まかなインターネットの盛り上がり方を知ることができます。

 

実はこれ、以前も作ったことがあります。

inajob.hatenablog.jp

数年運用したのですが、最近Closeさせてしまいました。で、今回また作りました。

デモ

こちらからアクセスすることができます。

page.inajob.tk

 

こんな感じで、1時間ごとにTwitterで流行った画像を閲覧できるサービスです。

ちょうど10/20の8時で、シンカリオンの画像がはやっている様子がわかります。

f:id:inajob:20181020191234p:plain

 

 もうひとつ10/21 9時、皆さんご存知ニチアサタイムが観測できます。

f:id:inajob:20181021094824p:plain

仕組み

今回はKubernetesクラスタ上で動かすマイクロサービス群として実装してみました。

Kubernetesクラスタは以前紹介した方法で作成したものです。

inajob.hatenablog.jp

トレンド取得部分(trend-checker)

肝となるトレンド取得は、TwitterのStreaming APIを利用しています。

GET statuses/sample — Twitter Developers

一般利用なので、すべてのTwitのストリームを取得できませんが、そこそこたくさんのデータが流れてくるので、ここに流れてくる画像を含むTwitの数を数え続けるアプリケーションをGo言語で書きました。

このアプリケーションはメモリ内にランキングを保持しており、外からHTTPでアクセスすることで、このランキングを取得することができるようになっています。

ランキング取得とスコアリングのバッチ処理

上記トレンド取得のAPIを1時間ごとに呼び出して、その結果をファイルとして保存する仕組みです。これにはKubernetesのCronJobの仕組みを利用しています。

さらに、いかがわしい画像などを判定するためのスコアリングを計算するために後述のNFSW APIを呼び出して、ランキングデータにスコアデータを付け足します。

NSFW API

毎時新聞を作った時に気づいたのは「エロ画像が多い」ということでした。

まぁそれも毎時新聞の醍醐味なのかもしれませんが、せっかくなら分類してみたい、、ということで調べているとYahooが公開しているOpen NSFWというモデルがあることを知りました。

 

github.com

これは最近はやりの機械学習の仕組みで、エロ画像など職場で見るにはふさわしくない(NSFW:Not Safe For Work)な度合いを判定してくれるものです。

さらに、このOpen NSFWをWebサーバとして利用できるように改造したものを作ってくれた方がいたのでこれを利用することにしました。

blog.kksg.net

フロントエンド

ここまでで、NSFWのスコアのついた毎時の画像ランキングデータがファイルサーバに格納できました。後は表示するだけです。フロントエンドはJavaScriptを使って、ブラウザ上で画面を組み立てるようにしました。

NSFWのスコアによる表示の有無もブラウザで判定しています。

図解

f:id:inajob:20181020190320p:plain

図にすると結構壮大な感じになりました。

まとめ

以前作ったものと同じ内容のサービスですが、Kubernetesを利用したマイクロサービスとして作ることで新たな学びがたくさんありました。

このように役割ごとにマイクロサービス化することで、改良もしやすく、また別の何かを作るときもここで作ったマイクロサービスを機能として取り込みやすい作りになったと思います。

おまけ

ここまでの説明で、気づいたかもしれませんが、フロントエンドのコードをちょっと変えるだけで「裏モード」を作ることができます。「裏モード」とはつまりNSFWのスコアの高いものだけを表示するようにした毎時新聞です。 いろいろまずい画像が表示されますので、注意してアクセスしてください。

page.inajob.tk