僕はサンタクロースを信じている。

この記事は、mast Advent Calendar 2019 の9日目の記事です。

adventar.org

 

古い友人と久々に会うと、なんだか話が合わなくなったりして悲しくなることがある。人は環境に縛られていて、その人が持つ価値観や興味は、周囲との相互作用で変化していくものだ。或いは「常識」というものも環境によって変化するのかもしれない。

 

さて、冬になると肌が乾燥する。僕はいわゆるアトピー性皮膚炎という持病を抱えている。とはいえ僕にとって皮膚炎は自分の性質の一つであるし、大げさなことだと思ったことはない。しかしながら、世の中には耐え難い苦痛とともにこの病気と戦い続けている人が大勢いるはずだから、簡単に取るに足らない病気であるかのように書くのは間違っているとも思う。その病状は外見に直結するわけだし、夏は汗疹、冬になれば乾燥による肌荒れ、夜は痒くて寝付けない。そんな毎日を過ごしているのであればQOLの低下は避けられない。

 

しかし、あらゆる病気というものは当人だけでなく周囲の人間をも悩ませるものだ。僕の場合は両親だろう。とくに乳幼児の頃からこの病気を抱える僕の看病に当たっていた母の苦悩の日々は想像に難くない。

重度のアトピー性皮膚炎はステロイドの塗布薬を使用しながら治療するのが一般的だ。しかし母が子育てに奔走していた当時は、ステロイド剤に対する誤解とそれを増長させる風潮が日本に蔓延していた。ステロイドにはたしかに副作用があるのだが、世間はそれを大袈裟に取り上げるようになったのだ。90年代前半にテレビで有名なキャスターがステロイド剤を「悪魔の薬」と呼称し、脱ステロイド治療法が持て囃され、アトピービジネスが隆盛したという。世間では「ステロイド=危険な薬」という図式が成立していたのだろう。多くの皮膚科医までもが迷走を極め、中には根拠薄弱な自然療法を患者に提案する者まで現れたらしい。僕の母もそんな時代の被害者だった。

当時の主治医が勧めたのはまさしく脱ステロイド療法であった。そして僕の肌に回復の兆しは一向に訪れなかった。その医師は母が治療に尽力していないのではないかと疑いの目を向けるし、病院の待合室では幼い僕のひどく荒れた顔を見た年配女性が母をたしなめたりしたという。他人の「母親がしっかりとした治療を行わないから子供の症状が治らない」と言わんばかりの態度は母を疲弊させた。

変わらない現状と周囲の厳しい目。マスコミが絶大な力をもつ時代、医師までもが勧める脱ステロイド治療法を疑うことなど思いつきもしなかったのだろう。快方へ向かわない僕の病状を前に、母は自身を責めて悩むことしかできなかった。

 

そんなある日、地域で行われた幼児検診に、偶然にも当時皮膚科の権威であった医師が訪れていた。なぜ彼が東京の片田舎の地域検診に割り当てられたのか、どうやら不思議な巡り合わせというものが世の中にはあるらしい。

その医師はアトピー患者であるという僕のことを、検診とは別にその場で無償で診察してくれた。僕の肌を見たその医師は母に「どういう治療をしているのか」と尋ねたと言う。母が病院から処方されていた薬を説明すると彼は「お母さん。それではあなたのお子さんは治らない。病院を変えなさい」と言ったらしい。

今まで信じていたものが間違っていた。まさに青天の霹靂だったのだろう。そうして僕と母は救われたのだ。

母はすぐに通院していた皮膚科の担当医に、薬を変えるように頼みにいった。最初は渋っていたその医者も彼の名を出すとあっさりと手のひらを返したらしい。

その後は通院する病院を変え、僕は快方へ向かったという。

 

現代にだってよくある話だ。20年経っても変わりなどしていない。嘘が真実としてまかり通ってしまう世の中なのである。マスコミや巨大企業の影響が弱まったとしても、それは別の影響力のある者が台頭することの呼び水でしかない。自分の属する環境における常識は真実であり、その真実を疑うことは容易ではないのかもしれない。

この話は今年の夏に帰省した時にたまたま聞かせてもらったことなのだが、妙に感動してしまった。悩んでいる時というのは得てして正常な判断ができないものだろうから、もしも周囲にそういう人がいたら助けてあげるべきだ。そして自分自身としては考えることをやめないこと、判断を他人任せにしないことを心がけていきたい。

 

ESP-WROOM-32 DIP化キットをセットアップした

はじめに

IoTがしたい。BLEを使いたい。ArduinoIDEで開発したい。

じゃあESP-WROOM-32を使おう!

ということでESP-WROOM-32で電子工作をすることになったのですが,せっかくなら開発ボードじゃなくてDIP化キットから回路組んだりして開発できるようにしようか...
となったので作りました。

ちなみに開発ボードを使う人はここから読めばセットアップできます。

 

ESP-WROOM-32について

ESP32シリーズはWi-FiBluetoothを内蔵する低コスト,低消費電力なSocのマイコンである。他のBluetooth内蔵マイコンに比べてとにかく安い!この安さでBluetoothWi-Fiも!とにかくこいつは電子工作界の革命児なのだ。(誇張)

ESP32 - Wikipedia

 

使うもの

全て秋月電子さんで揃います。

 

回路を組む

3端子レギュレーターを使って3.3Vまで降圧する

ESP-WROOM-32の入力電圧は2.2V~3.6Vですが,ここでのシリアル変換器からは5Vが供給されてしまいます。そこで3端子レギュレーターを使って3.3Vまで降圧して3v3ピンに繋ぎます。

 

リセットスイッチなどをつける

ENピンとIO0ピンはタクトスイッチをつけます。
両者ともにOFF時に10kΩでプルアップし,ON時にGNDに繋がるようにします。
ENピン側のスイッチはリセット用。IO0ピンのスイッチはENピンのスイッチとともに書き込みモードへの切り替え用に使います。

 

シリアル通信の回路を作る

ここでのシリアル通信の意味は狭義のものですし大したことは書きません。詳しくは調べてください。
パソコンとESP32をつなぐためにシリアル通信をします。USBからの入力は変換キットで変換されるのでESP32に配線するだけです。
基本的に最低限のシリアル通信をするためには3本の線が必要です。1つがGNDで残り2つは送受信用です。送信用はTXD(Transmitted Data),受信用はRXD(Received Data)という名称です。

f:id:onutomo:20181030135932p:plain


 

ブレッドボード図

f:id:onutomo:20181030020543p:plain

        

ライブラリをダウンロード

ArduinoIDEで開発可能です。

  1. [環境設定]の[追加のボードマネージャのURL]にhttps://dl.espressif.com/dl/package_esp32_index.json を追加。
  2. [ツール] > [ボード] > [ボードマネージャ]を開く。
  3. 検索フィルタに「esp32」を設定すると、「esp32 by Espressif Systems」が表示されるのでそれをインストール。
  4. [ファイル] > [スケッチ例] にESP32 Dev Module用のスケッチ例があることを確認

 

Lチカ

ボードは[ツール] > [ボード] > "ESP32 dev module"を選択。*1

IO0ピン側のスイッチをスイッチA,ENピン側のスイッチをスイッチBとします。
スイッチAを押しながらスイッチBを押し,B→Aの順に離して,書き込みモードにしてから書き込みます。Lチカが成功すればOK!
次回はBLEとして動かして行こうと思います。


void setup() {
  pinMode(19, OUTPUT);
}

void loop() {
  digitalWrite(19, HIGH);
  delay(250);
  digitalWrite(19, LOW);
  delay(250);
}
    

 

 

最後に

なんだかんだで別段難しいことはないです。しかしながら,秋月電子さんや他のお店ではESP-WROOM-32の開発用ボードというものが1500円前後で売っています。(ちなみにESP32DIP化キット+USBシリアル変換キットで1500円オーバー)

今回はレギュレーターを使って降圧回路を組んだりとか,パソコンとマイコン間のシリアル通信についてとか学びたいことが色々あったので自作しましたが,
開発ボードを買う方が早いし安いし楽だということが結論。

ESP32-DecKitC ESP-WROOM-32開発ボード

参考サイト

ESP32はじめるよ - 滴了庵日録

 

 

*1:2018.10.31追記 

嫌な予感がする / I have a bad feeling about this.

 はしがき

この記事はmast Advent Calendar 2017の18日目の記事です。

mast17の@ITF_onukiです。軽いノリでmastAdCに参加したのですが、ここ1週間は割と皆さん真面目な記事が多くて戦々恐々としながらこの記事を書いています。

しかしこの流れに逆らってでも今回はSTAR WARS愛を存分にぶちまけます。

ネタバレはないので最後まで読んでいただけたら幸いです。

 

開戦(余談)

12月1日。戦いはすでに始まっていました。

 

午前0時

TOHO、ユナイテッド・シネマなどのいくつかの映画館ではすでにSTAR WARSのチケットの販売が始まりました。

 

出遅れた!

僕が気がついたのは時計の針が0:30を回ったところでした。

 

マ?

 これは一大事だ!と急いでチケットの確保をしようとしたその時...

 

LINE ♪

 

 

高校時代の友人がチケットを確保してくれました!

ほーんとにありがとう。

 

*以下STAR WARS最後のジェダイの感想になります。ネタバレはないですが、個人的な評価 もつけているので読みたくない方はここからSTAR WARS論の項目へ飛べます。

 

 

 

 

 

STAR WARS 最後のジェダイの感想

12月15日(金)

公開日当日。

(5限の授業をブッチしてTXに乗り込んだことは内緒)

まぁアレですね。今まで無欠席で授業に出てたので痛くも痒くもありません。

日頃から真面目に生きるのは良いことなのです。

 

さて感想ですが、ひとことでいうと「衝撃」です。

これ以外の言葉が見つからない、今までにない新しいSTAR WARSの形を提示するものでした。

正直な話、中盤が最悪でした。ストーリーはつまらないし、そもそも映像表現がSTAR WARSのそれではない。非常に落胆していました。「こんなのSTAR WARSじゃないよ。」と泣き出してしまいそうになるくらい。

しかし後半以降が素晴らしかった。そうかこれは新たなるSTAR WARSなのかと実感させられました。ep5,6を想起させるシーンやep3を思わせるシリアスな展開。しかしその全てが今までとは違う方向へと進む。今でも信じられない。それほどまでに既存のSTAR WARS観を見事に打ち破っていたのです。

STAR WARSでは常に光と闇が対立していました。そこには必ず希望があります。しかし今作は光と闇、善と悪、強さと弱さ、希望、そしてフォース、その全てが揺らぎ皆が葛藤する。これは何だ?これがSTAR WARSなのか?

そしてルークと2つの太陽のシーン。「そう来たか!」

これは原点回帰なのか、いやそんなものではない。これは変革なのだ。

この作品の副題である"The Last Jedi"には今までのSTAR WARSに終止符を打ち、この物語を更新するという意思が込められているように感じました。

 

と、べた褒めしましたが... 映画としては微妙、というかSTAR WARSに詳しくない人にとっては多分クソつまらないです。本当にクッッソつまんないです。STAR WARSへの第一歩としてこれを見るのは間違いだと断定します。おとなしく旧作を見てからにしましょう。

ちなみにSTAR WARS初心者の方へのススメを最重要項目として最後の方に書いたのでよく読んでください。

 

総評:映画としては微妙。STAR WARSとしては良かった!

これは間違いないと思います。

                                              

個人的STAR WARS

さて本題です。

今回は新作が加わることの意義について語っていこうと思います。

STAR WARSの構成

f:id:onutomo:20171203165109j:plain

f:id:onutomo:20171203165106j:plain

このようになっているのですが、

 

ep1~6を監督したジョージルーカスの当初の構想ではSTAR WARSはep1~9で完結する予定でした。しかし彼は結局のところ6作品のみしか作らなかったのです。

しかしルーカスフィルムウォルト・ディズニー・カンパニーに買収され続編の制作が発表され今に至ります。

ここで旧三部作と新三部作のそれぞれについて考察してみましょう。

 

旧三部作はルーク、レイアそしてハンソロの3人にフォーカスしていて非常に物語性が強いという特徴があります。

それぞれのエピソードが個々で完結している面もあり物語として完成されています。

 

一方で新三部作はアナキンやオビ=ワン、パドメといった人物に焦点が当てられているのですが、歴史的事実が淡々と描かれているような印象が強いです。

事実、ep1とep2の間は約10年間の空白があります。またep2とep3の間はクローン大戦という銀河で最も大きな戦争の1つと言える物語が存在するのですが、それは描かれていません。(クローン大戦についてはアニメシリーズ ”クローン大戦”、そしてCGアニメーション映画&TVシリーズ ”クローンウォーズ”として放映されている)

 

このように旧三部作と新三部作には特徴的に大きな違いがあり、全体を見るとなんとなくとっ散らかったような印象を抱きます。

新三部作は“新”ではあるのですが、ただの外伝や旧三部作を補完する役割程度のように感じられてしまうのが現実でした。

 

続三部作が加わることの意義

しかし続三部作が加わることで

  • 新三部作:プロローグ / 前日譚
  • 旧三部作:メインストーリー
  • 続三部作:エピローグ / 後日譚

という構成になり、STAR WARSがより洗練された物語になっていっていると感じています。

各々が違う様相をしているが故にバラバラだったものが最新作「最後のジェダイ」によって、バラバラであることに意義が生まれました。そして深みのある重厚な世界観を生み出しています

STAR WARSは全体を見通した時、その魅了をいかんなく発揮します。

 

まとめ

  • STAR WARS -最後のジェダイ変革そのものである!
  • STAR WARS全体を見てこそ真の面白さがわかる!
  • 続三部作によりさらに素晴らしい物語になる(はず)!

                                              

[最重要]これからSTAR WARSを見ようと思っている方へ

4→5→6→1→2→3→7→8 という順で見ることを強くお勧めします。

 

最後に

今回は続三部作によってもたらされる新たな可能性を語りましたが、まだまだ語り尽くすことができていません。兎にも角にもSTAR WARSを多くの人に布教できたら幸いです。

 余談ではありますが、この記事のタイトル「嫌な予感がする / I have a bad feeling about this.」とはSTAR WARSシリーズを通して多くのキャラクターが口にしてきたセリフです。最新作では誰がこのセリフを放つのかも気にしながら見るとより楽しめるでしょう。

 

WiiバランスボードとProcessingで遊ぶ

はじめに

みなさんの家にも眠っているかもしれない...

それは

Wiiバランスボード

今回はこれで遊ぼう!!!というわけです。

 

 

ちなみに我が家にはバランスボードは眠っていなかったのでつくば市内のWonder Gooで中古で購入しました。100円で。

  

準備するもの

 

OSCulatorの準備

ダウンロード

ダウンロードはこちらから

 

WiiバランスボードとMacをOSCulatorでつなぐ

MacBluetoothをONにする。

Wiiバランスボードを起動し、電池ボックスの下にある赤いボタンを押す。

f:id:onutomo:20171117213923j:plain

 

OSCulatorを起動しParametersを開く。

f:id:onutomo:20171117213417p:plain

 

Pair a Wiimoteをクリックしバランスボードと接続する。

f:id:onutomo:20171117214214p:plain

 

指定のポートにOSCを飛ばす

OSCを開きosc.udp://localhost:8001と書く。

*任意のポート番号で良い。

f:id:onutomo:20171117214255p:plain

 

Prametersを閉じEvent Type"OSC Message"に、Value"D"みたいな文字にする。

ValueDがない場合はNew...から選べば良い。

f:id:onutomo:20171117214817p:plain

f:id:onutomo:20171117214820p:plain 

Quick Lookから値がとれていることを確認

  • 0: 左下の値
  • 1: 右下の値
  • 2: 左上の値
  • 3: 右上の値
  • 4: 合計値
  • 5: 0.5を基準として前後の値
  • 6: 0.5を基準として左右の値

f:id:onutomo:20171117215625p:plain

正直これだけでしばらく楽しめます。

以上でMacWiiバランスボードの接続は完了です。

 

 

Processingの準備

ダウンロード

ダウンロードはこちらから。

設定

Processingを起動し、スケッチライブラリを追加からoscP5をインストールする。

f:id:onutomo:20171117211844p:plain

f:id:onutomo:20171117211900p:plain

 

ソースコードを書く

 

 ライブラリのインポート

import oscP5.*;
import netP5.*;

OscP5 oscP5;

この番号はOSCulatorで用意したポート番号(ここでは8001)を記述する。

// 受信用 OSCuratorで設定した送信先の番号 
oscP5 = new OscP5(this, 8001);

受信する

//oscP5.plug(this, "関数名", "パス");
  oscP5.plug(this,"get_bottom_left", "/wii/1/balance/0");
  oscP5.plug(this,"get_bottom_right","/wii/1/balance/1");
  oscP5.plug(this,"get_top_left",    "/wii/1/balance/2");
  oscP5.plug(this,"get_top_right",   "/wii/1/balance/3");
  oscP5.plug(this,"get_sum",         "/wii/1/balance/4");
  oscP5.plug(this,"get_virtual_x",   "/wii/1/balance/5");
  oscP5.plug(this,"get_virtual_y",   "/wii/1/balance/6");

 

ソースコードの例

import oscP5.*;
import netP5.*;

OscP5 oscP5;

float bottom_left;
float bottom_right;
float top_left;
float top_right;
float sum;
float x;
float y;

void setup() {
  size(10, 10);
  background(255);

  // 受信用 OSCuratorで設定した送信先の番号
  oscP5 = new OscP5(this, 8001);
  
  //oscP5.plug(this, "関数名", "パス");
  oscP5.plug(this,"get_bottom_left", "/wii/1/balance/0");
  oscP5.plug(this,"get_bottom_right","/wii/1/balance/1");
  oscP5.plug(this,"get_top_left",    "/wii/1/balance/2");
  oscP5.plug(this,"get_top_right",   "/wii/1/balance/3");
  oscP5.plug(this,"get_sum",         "/wii/1/balance/4");
  oscP5.plug(this,"get_virtual_x",   "/wii/1/balance/5");
  oscP5.plug(this,"get_virtual_y",   "/wii/1/balance/6");
}

//信号を受信
public void get_bottom_left(float _bottom_left){
  bottom_left = _bottom_left;
}

public void get_bottom_right(float _bottom_right){
  bottom_right = _bottom_right;
}

public void get_top_left(float _top_left){
  top_left = _top_left;
}

public void get_top_right(float _top_right){
  top_right = _top_right;
}

public void get_sum(float _sum){
  sum = _sum;
}

public void get_virtual_x(float _x){
  x = _x;
}

public void get_virtual_y(float _y){
  y = _y;
}

//コンソールにそれぞれの値を表示
void draw(){
  println("__________________________");
  println(" bottom left  = "+bottom_left);
  println(" bottom right = "+bottom_right);
  println(" top left     = "+top_left);
  println(" top right    = "+top_right);
  println(" sum          = "+sum);
  println(" virtual x    = " +x);
  println(" virtual y    = "+y);
}  

 実行

実行するとコンソールにそれぞれの値が出力される。

f:id:onutomo:20171117220403p:plain

 以上でProcessingの準備も完了です。

あとは煮るなり焼くなり好きにしてください!!

 

 

 最後に 

OSC(Open Sound Control)について

今回使ったのはOSC(Open Sound Control)という通信プロトコルです。

OpenSound ControlOSC)とは、電子楽器(特にシンセサイザー)やコンピュータなどの機器において音楽演奏データをネットワーク経由でリアルタイムに共有するための通信プロトコルである。カリフォルニア大学バークレー校にある CNMAT(The Center for New Music and Audio Technologies)が開発した。 

OpenSound Control - Wikipedia

 

よりいろんなことをしたい方へ