memorandums

日々のメモです。

花と団子

f:id:ke_takahashi:20170409112235j:plain

今年はこんな時期まで桜が楽しめますね。

ゆっくり花見に行って飲みたいところですが。。。

4月に入ってから公私ともに忙しかった。。。昨日の宿泊研修会も無事終えて報告書や清算も済んでひと段落です。しばらく雑務とはオサラバ。やっと講義と研究にかかれます。。。

子供も無事、高校入試を終えて高校の入学式にも行ってきました。

今日は大学の子供のバレーボールの試合を見てきました。

会場に咲いていた桜をみて団子が無性に食べたくなり近所をうろつくとありました。。。で、パチリです。

新年度スタートです。今年度も有意義にしたいものです。

初代Pebbleのベルトが切れたので、試しに皮で自作してみた件

Pebbleが身売り?して更新されなくなったのは寂しい限りですが。。。とりあえず通知が使えるので使い続けています。

ベルトが半分きれてしまい。。。どうしたものかと思っていました。

買ってもよかったのですが、時計のベルトは作ったことがなかったので、とりあえず自作してみることにしました。

ハンズで材料探し。端切れコーナーに数百円のものがたくさんありました。

黒い皮もあったのですが、せっかくだからと明るい色を選択してみました。できあがったのは以下。

f:id:ke_takahashi:20170406124006j:plain

f:id:ke_takahashi:20170406124012j:plain

皮クラフト的には縫い目はありなんですが、時計のベルトとなると。。。やはりかっこ悪いですね。職人すげ、というのがやってみるとよくわかります。

とりあえず、やはり時計が黒なので暗い色の方がよさそうだったので、もう1つ作ってみました。

f:id:ke_takahashi:20170406143455j:plain

さっきのよりはマシですが、まぁ、いかにも自作って感じになりますね。

せっかく作ったのでしばらく使おうと思います。はい。

三重津海軍所跡に行ってきました

佐賀県佐賀市にある世界遺産ですね。

mietsu-sekaiisan.jp

昨年度の卒業研究のメンバーがここに行ってきたらしく、いつか行ってみたいと思っていました。時間があったので家族と行ってきました。

f:id:ke_takahashi:20170402121238j:plain

展示エリアの説明は以下のような感じです。

f:id:ke_takahashi:20170402121332j:plain

VRスコープをお借りして屋外の跡地で覗くと、昔の風景が見えるというものです。装着している様子は以下の感じです。

f:id:ke_takahashi:20170402123459j:plain

スマホを利用したGoogle Card Board的な(日本的にはハコスコ的といった方が通りがいいかも?)スコープです。重量は想像以上に軽いですね。スマホが軽いのかな?イアフック付きの片耳イヤホンを装着します(スタッフの方がかけてくれます)。

スコープはスポットで使用し、移動時には外すように指示があります。これは安全上正しい選択ですね。参考になります。跡地にはスポットが6箇所ありました。この看板にビーコンが埋め込まれていると思います。そこに接近すると、そのスポットのガイダンスが自動的に始まります。GPSは利用していない感じですね。

f:id:ke_takahashi:20170402122619j:plain

ちなみに、この他にドーム内にプロジェクションされた3DCGアニメ、あとOculus Rift(DK2でしたね)を使った3DCGアニメ。いずれも映像が高品質。ナレーションも高品質。

こういうのは作れないなぁ。。。仕組みを作るのは興味はあるけど。

勉強になりました。

グッディ長尾店で子供と工作してきました

ちょっと前に自宅近くのハンズマンで工作したことを書きました。

memorandums.hatenablog.com

グッディの長尾店でも工作スペースがあると聞いていましたのでいつか行ってみたいな。。。と。時間があったので子供と一緒に行ってきました。

f:id:ke_takahashi:20170331140657j:plain

店にはいるとフツーのグッディのようです。店内を歩き回ってみると奥の方にありましたありました。レーザーカッターもありました。

f:id:ke_takahashi:20170331144545j:plain

工具の貸し出しは無料です。工具棚から好きに使ってください、というスタイルです。

f:id:ke_takahashi:20170331162100j:plain

また例によって何も考えずに行ったので、何を作ろうかと店内を見回したところ、コロコロするやつがあったのでそれを真似てみようということになりました。(うちの)子供は大好きなので。作成は子供が主です。

f:id:ke_takahashi:20170331153314j:plain

とりあえず、いろいろとありましたが、できました。ボールがないので帰ってから試しましょう。

f:id:ke_takahashi:20170331163059j:plain

デジタル科学館を見学してきました

久留米にある福岡県立科学館の未来のデジタル科学館という特別展示を見てきました。

この手の展示イベントは最近、本当に多くなりました。使用機材とか使用風景とか見ていろいろと勉強したいな。。。ということで。

作品としては5つありました。

写真はありませんが、最初は歩くと床に花が綺麗に描画される作品。2つ目は大型の恐竜ロボットでボタンで操作できる展示でした。

残り3つです。最初に出てくるのが以下でした。

f:id:ke_takahashi:20170329141838j:plain

プロジェクタを2つ使ったスクリーンに、子供達が描いた絵が動き回るものです。タッチはできませんが、背景の写真の眺望がキャラクターの横方向の速い動きと相まって浮遊感が出ていました。

背景の写真を工夫することでこんな表現ができるんだ。。。と勉強になりました。

ちなみに動画を少しだけ撮ってきました。限定公開ですので。。。もし著作権など問題があれば消しますので教えてください。来場者の顔は写り込んでいないとは思います。

youtu.be

ちなみに描いた用紙は以下のような感じです。リコーって書かれていましたね。なんでだろう?自作じゃないのかな?タイアップしてるのかな?リコーが作った?

f:id:ke_takahashi:20170329144932j:plain

その横にあったのが以下ですね。今となっては古めかしい感じがしますが(偉そうにすいません、ただ直感的にそう思いました、実際に4、5年前の作品のようですのでしかたがないかと)子供達は大喜びです。

f:id:ke_takahashi:20170329142331j:plain

センサーはKinect V1ですね。たぶん。目が悪いので。。。勉強になったのはスクリーン自体は上記の展示と同様にプロジェクターを2つ横に設置したタイプなのですが、Kinectのセンシング範囲(横方向)はそこまで取れないんですね。作品の中央にKinectが設置されて、センシングできるのは全体の半分くらい。でも、うまいなと思うのは、その映像を折り返して(鏡像?)にして、本来はセンシングできていないところに表示して賑やかさを演出しています。センシング範囲にいない子も思わず動いてしまうんですね。うまい。

最後の出口付近に設置されたのが以下。

テーブルトップインタフェースで、テーブル上にかざされた手の位置を赤外線カメラで認識して、その位置に昆虫があればキャッチできるというゲーム?です。

f:id:ke_takahashi:20170329142310j:plain

赤外線ライト(LED群)はお手製っぽい感じ。その中央にカメラ(赤外線透過フィルタ)が設置されていました。その様子もパチリ。

f:id:ke_takahashi:20170329142308j:plain

さすが科学館だけあって、赤外線で手を認識できる仕組みが掲示されていました。誰も見ていませんでしたが。。。orz。

プロジェクション系の展示全般に言えると思うのですが「なんとなく楽しい」という雰囲気は物珍しさもあって来場者の多くが楽しんでいるんですね。でも、反応が遅かったり不確かだったりすると、目的がよくわからずちょっと触ってどっかに行ってしまう人も多くいました。

展示物の横に説明用の看板をおいても暗いので見えませんしね。。。難しいところです。

あと、いつも気になるのがプロジェクターの設置方法。こういうところに設置した経験がないので気になります。万が一落下して怪我でもさせたら。。。と怖くなります。安全性を確保した上で確実に固定して、なおかつ調整もしやすくする方法は。。。今回の場合は以下のような感じでした。以前、三越かどっかに展示していた方法と似たような感じですね。プロジェクターはBenQしか見たことがない。なぜだろう?コスパがいいのかな?買ったことがない。

f:id:ke_takahashi:20170329143004j:plain


5/7まで展示しているみたいです。G.W.あたりは混みそうですね。。。

2重ループの内外の入れ替えによるチューニング効果

授業資料を作るのにコードコンプリートの下巻のコードチューニングテクニック(第26章)を読んでいました。

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

富豪的プログラミングと対極ではありますが、モバイルデバイスや組み込み機器など、リソースや電力消費が話題になることがまだまだある世界ですので、知っておく価値はあるとは思います。

さて、この書籍の196ページに「26.2.6 最もビジーなループを内側に」という節がありまして、要は多重ループで処理する場合で、その繰り返し回数に大きな差がある場合に、どちらを外側、あるいは内側にするか?というチューニングになります。

チューニングが必要なコードとして以下が例として挙げられています。内側のループは5回繰り返し、そのループを100回繰り返します。for文では、それぞれカウンター変数(columnやrow)が指定された値を越えるかどうかの検査が行われ、さらに変数の値をインクリメントする命令も実行されます。ループ回数が多くなればなるほど、それら処理の回数が多くなります。

つまり、外100内5のパターンではfor文の処理が600回行われることになり、外5内100では505回に減らすことができるます。

■外100内5

for ( column = 0; column < 100; column++) {
  for ( row = 0; row < 5; row++ ) {
    sum = sum + table [ row ][ column ];
  }
}

■外5内100

for ( column = 0; column < 5; column++) {
  for ( row = 0; row < 100; row++ ) {
    sum = sum + table [ column ][ row ];
  }
}

この本では、計測結果も示されておりまして、具体的には以下のような表が掲載されていました。

言語 チューニング前 チューニング後 改善度
C++ 4.75 3.19 33%
Java 5.39 3.56 34%
PHP 4.16 3.65 12%
Python 3.48 3.33 4%

なかなかの差ですね。。。

で、実際に私の環境でも試してみました。

まず、Java。ほぼ上記のサンプルと同じですね。timeコマンドで計測したので差がわかるように1000000回繰り返して合計の処理時間をみました。

■外100内5

class Test {
  public static void main(String [] args) {
    int[][] table = new int [100][5];

    for (int times = 0; times < 1000000; times++) {
      int sum = 0;
      for (int i = 0; i < 100; i++) {
        for (int j = 0; j < 5; j++) {
          sum = sum + table[i][j];
        }
      }
    }
  }
}

結果は以下です。傾向は同じでしたが、改善度が違いますね。。。なぜかなぁ?Javaのバージョンがあがって最適化されるようになったのか?

ちなみに表内の数値(改善度以外)の単位は秒です。

言語 チューニング前 チューニング後 改善度
Java1.8.0_91 0.63 0.52 17%

続いてRuby(2.3.1p112)も試してみました。ちなみにRubyのBenchmarkライブラリを使うべきと思いますがJavaにはないので測定方法を揃えるために使っていません。

■外100内5

table = Array.new(100){ Array.new(5,1) }

10000.times do
  sum = 0
  for i in 0..99 do
    for j in 0..4 do
      sum = sum + table[i][j]
    end
  end
end

結果は以下です。Rubyには繰り返しの書き方がいろいろあるので、ついでにその比較もしてみました。チューニングによる効果の傾向はコードコンプリートと同様ですね。改善率も

実装方法 チューニング前 チューニング後 改善度
for 5.30 4.38 17%
upto 4.99 3.95 21%
each 5.01 4.03 20%

Rubyはもちろんのこと、Java関数型プログラミングの機能が導入されて、ループで処理を実装する機会が減ってきたとは思いますが。。。一応、今でも使えるテクニックと言えると思います。

レーザーカッターでくまもんメモ帳を作ってみようとしたが...失敗

思いつきでちょっとやってみました。

くまモンのイラストを持ってきてInkscapeでなぞります。

f:id:ke_takahashi:20170323161125p:plain

それをSmart Laser CO2で読み込んで、裏紙(A4コピー用紙)を何枚かかさねてセットして切断しました。

一気に(スピード500、パワー10%)で切断しようとすると焦げるので、弱め(スピード500、パワー5%)で何度か切断しては取り出しを繰り返しました。紙ファイルで表紙をつけて、以下のような感じになりました。

f:id:ke_takahashi:20170323161619j:plain

f:id:ke_takahashi:20170323161625j:plain

とりあえず頑張ればいいのですが、面倒だし、そもそも縁が焦げているのがなんとも。。。

そこで、他の作品作りで余ったアクリルで紙を剪断?するテンプレートを作ってみました。

f:id:ke_takahashi:20170323161815j:plain

A4のコピー用紙を挟んで一気に押したのですが。。。残念な感じになりました。

f:id:ke_takahashi:20170323161846j:plain

半紙くらい薄い紙であれば綺麗に剪断できるのかもしれませんね。。。

余った裏紙を加工してなんか使えないかな。。。という発想なんですが、レーザーカッターではちょっと難しいですね。

考えます。