@numa08 猫耳帽子の女の子

明日目が覚めたら俺達の業界が夢のような世界になっているとイイナ。

クモ膜下出血で入院をした話

起きたこと

スノーボード中の事故でクモ膜下出血になり、3日間入院をしました。実際に何が起こったのかをまとめて、やっておいて良かったことや今後に向けて改善をしたいことについてまとめます。

事の起こり

2018-2019 のウィンターシーズンは俺の中で空前のスノボブームが訪れて、ぼっちや友達、奥さんと一緒にゲレンデで滑りまくりました。シーズンも終わりに近づいた3/8-9も、東京から id:sseze を呼び寄せて岐阜にある「鷲が岳スキー場」へ行きました。   ski.washigatake.jp

初日は散々滑って2日目。軽い筋肉痛を覚えつつ、でも滑っているうちに体も温まってくるやろ、くらいの感覚で滑り出し。リフトで頂上まで登って鷲が岳の隣のホワイトピアたかすのメインのゲレンデに降りて行った所で事故は起きました。

その時の様子

3/9 は土曜日でゲレンデはなかなか混んでいました。俺たちはゲレンデ入り口で滑り降りた後の合流地点について打ち合わせた後、それぞれスタート。ボーダーやスキーヤーの間を縫うように滑って、そう言えばキッカーがあったから飛んでいきたいなと思いキッカーの方を見たのが最後の記憶です。その後は気がついたら BURTON のフリースを着たおじさんに支えられながら歩いていて「あなたは人とぶつかりました!」って言われていました。

何が起きたのか

どうやら別の人とぶつかったらしいです。そしてそのまま気絶。ぶつかった人がゲレンデのスタッフを呼んで介抱をしてくれたらしいです。

ぶつかった相手のことは全く覚えていません。どうやら俺が「大丈夫です」と答えたらしく、相手はそのままどこかに行ってしまったらしいです。

直後のこと

BURTON のフリースを着たスタッフの人に支えられつつ、いつの間にか id:sseze も合流していてホワイトピアたかすのレストランへ歩いて向かいました。このとき、自分でボードラックにボードを立てかけたような気がします。ただ、このタイミングで意識や記憶はかなり混乱していて`

  • ここがどこなのか
  • なぜここにいるのか

が分かりませんでした。一応自分のことと id:sseze のことは分かったので大きな不安はありませんでしたが。

失った記憶を取り戻すため、スマホの写真を見返してようやく意識と記憶が帰ってきた感じがありました。車でゲレンデに来て2日目だと言うことを思い出すのに、10分くらいはかかったと思います。

最初の対応

ゲレンデのスタッフの人は俺と id:sseze が席についたのを見てどっかに行っちゃいました。仕方がないので、自分で体に大きな怪我がない事を自分で確認。骨が折れたりとかは無さそうだなと思いました。筋肉痛による痛みはありましたが、なによりも頭が痛い。気絶もしていたらしいし、頭を強打してるはず。ここで思い出されるのが声優の塩沢兼人さんです。

ブリブリざえもんやマ・クベで有名な塩沢さんは階段から落ちたあと気絶、意識が帰ったあと6時間くらいして容体が悪化して亡くなられたそうです。

ja.wikipedia.org

この事を覚えていた自分はすでに脳が内出血をしているであろうこと、放置したら24時間もあれば死ぬかもしれないことをリスクとして捉えて病院探しをしました。

 id:sseze が家族に連絡しろよとか言ってましたが、そんなことより我が身の安全と思い近所の病院を検索。救急車の検討もしましたが、呼ぶべきなのか分からないし、岐阜には #7119 が無いので自力で向かうことに。鷲見病院ならスノーボード、スキー外来があることがわかり、そこに向かいました。

sumihosp.or.jp

病院でのこと

そこそこに混んでいました。後から聞いた話、この日だけで入院患者は3人居たそうです。CTの結果外傷性くも膜下出血と判明。ただ、出血自体は小さくてほぼ止まっている可能性があるそう。しかし、悪化することもあるし家に返すことは出来ないので入院をする流れとなりました。人生初の入院。

入院をしてから

基本的に安静にしている必要があり、トイレに行くときも付き添いが必須。id:sseze が居てくれたので楽でしたが、一人の時はし瓶を使いました。これはこれで慣れたらトイレに行かなくても用が足せて便利。

病院のご飯は思っていたよりも美味しかったです。味噌の味付けが大阪よりも濃くて、名古屋文化の影響を感じました。後、肉や揚げ物が多い。えびふりゃー。

退院

予定通り3日目には退院できました。特に検査もなく、体に異常がないなら退院して良いよとお医者さんに軽く言われた程度。費用は4万5千円ほど。医療保険が降りるけど、それなりにでかい出費となりました。

振り返り

今回、ヘルメットを被っていたため大事に至らなかった可能性があります。ヘルメットも万能ではないですが、 60km 近く出して滑るスポーツを行う上では必須のアイテムだったかなと思います。

また、 1day 保険に入っていたため、仮にぶつかった相手に治療費の請求や訴訟などを起こされても対応ができたかと思います。セブンイレブンですぐに入れるし、シーズン中何度も滑りに行くようならこういう保険には入っておきたいです。ただし、今回は3日で退院だったので 1day 保険からの一時金はありませんでした。

ehokenstore.com

今回はゲレンデに id:sseze と2人で来ていたのも大きいです。やはり怪我をしたときに1人だけだと冷静な判断や対応ができない可能性もありました。そしてなにより心細い。それなりに危険の伴うスポーツであることを自覚して、2人以上で行くほうが良いですね。

今後に向けて取り組みたいこと

2018-2019 シーズンはもう終わりなので次のシーズン以降のこととなりますが、例えばぶつかった相手の連絡先は交換するようにしたほうが良かったです。今回はどっちが悪いとかそういうのは何もわかりませんし、事故の目撃者の情報も得られていないのでなんともですが、場合によっては医療費の請求や逆にこっちが責任を取る必要があったかもしれません。

今回は自家用車での旅行でしたが、車を運転できる人間はメインドライバー以外にも最低1人は用意をしておいたほうが良さそうだなと思いました。 id:sseze は運転はできるのですが、俺所有の自家用車ということで保険の対象外になってしまっていました。各社から出ている自動車の 1day 保険も、車両保険をつけるには7日以上前から申し込みをしておく必要があるとのこと。片方の運転が困難になったときにもう片方に運転をしてもらえるように準備を整えておくべきでした。

あと、今回のケースでは救急車を呼んでしまっても良かったそうです。その辺りの判断がよくわからなくて自力で病院に行きましたが、移動中に事故るリスクを考えると救急車のほうが良かったと言えるでしょう。

最後に

Twitter で入院をしたことをつぶやいたら、様々な方からお見舞いのメッセージを頂戴しました。全てにレスはできていませんが、目は通してます。ご心配おかけしましたが、元気にやってます。いちおう、ちょっと間をおいてから MRI での検査を行う予定です。

これに懲りずに来シーズン以降も滑りに行きたいな。

LGBTを読み解く を読んだ

この本を手にとったきっかけは、2018年の年末に読んだブログだった。

razokulover.hateblo.jp

はてぶのホットエントリーでみたのだけれど、本文中に気になる一文があった。

「自分は寛容な人間なのでLGBT?とかいうやつにも寛容だぜ、理解してるぜ」とか「何でも受け入れるよ僕は」みたいな、知ったかぶりな態度の人は意外と多いんじゃないかなと思う。 良心的であることや寛容であることに満足して、その先のもっと詳しい部分を知ろうとしない態度。 これこそがマジョリティ的な態度であり、本当の意味での理解を阻害してしまっている

この文章を読んでまさに自分のことじゃないだろうか?と恐怖を覚えたのがきっかけ。性的指向についてはマジョリティに属する自分がマイノリティのことを正しく理解せず、無意識のうちに傷つけているのではないだろうか?と思った。

この本はメインタイトルが「LGBTを読みとく」だけれど、どちらかと言うと副題の「クィアスタディーズ入門」の方が主題で、「クィアスタディーズ」という非常に大雑把に一言でまとめると、「セクシュアルマイノリティについていくつかの視点からセクシュアルマイノリティそのもの、あるいはマジョリティなど性に関する事柄を考察する」方法を学ぶための本だ。

つまり、この本を読んでもセクシュアルマイノリティを理解できるわけでも、傷つけないように振る舞うことができるわけでもない。この本に書かれているクィアスタディーズによる考察や分析を行うことで過去に発生した現象や事件、または文学や映像作品などを考察することができるようになる。もうちょっと具体的に書くのなら、「今日の自分の発言は、セクシュアルマイノリティに対する差別的な発言ではなかっただろうか?」と夜眠るときに布団の中で反省や考察ができるようになる、と言える。

この本は「クィアスタディーズ入門」とあるようにやはり入門書にすぎなかった。この本を読んで、実際に世の中で起きている意識的あるいは無意識的なセクシュアルマイノリティに対する差別や共感について考察を行い、さらに参考文献として紹介している本を読んで知識を身に着けて自分の振る舞いを正していくための最初の足がかりとして役立つ本だと言える。

2018年のまとめ!振り返り!!

デ・ジ・キャラット20周年

何はなくともデ・ジ・キャラット20周年だった2018年。プリパラに出会ってしまったり、みれぃちゃんにぷりぷりぷりになったりしたけど、やっぱり一番可愛いのはでじこちゃん。

f:id:numanuma08:20180702203438j:plain
20周年ワインおいしかった

プリパラ

2018年はプリパラに出会った年でもあった。みれぃちゃん最高。

このへんのエモい思いは酔った勢いでブログにした。

numa08.hateblo.jp

リモートワークの話

numa08.hateblo.jp

完全リモートワークになってから1年が経過しました。最近、リモートワークラボの方にインタビューをしていただきました。

www.remotework-labo.jp

www.remotework-labo.jp

リモートワークに関してのメリットやデメリット、これから改善をしてみたい点やアイデアについては別でブログを一個書けるくらいにはネタが有るのですが、何はなくとも通勤を全くしなくても良いという状況を作り出すことができたのが最高です。電車通勤は3年くらいで音を上げて、コベリンに入ってからは主に徒歩圏内で通勤できる場所に住んでいましたが、やはり仕事が終わって疲れ果てた状態で帰宅してから晩御飯の準備や家事全般をするのはただただ苦痛でしかなく、そう言ったことを一切しなくても良い環境であることは何事にも代えがたいものだと思います。

食洗機

とは言え、家で仕事をしていると家事や何やらが捗るのかと言えば必ずしもそうではなく、やっぱりやらなければいけないことをやることは面倒くさいと感じます。そこで、2月には食洗機を導入。

f:id:numanuma08:20180202203114j:plain
食洗機

乾燥機

料理を作ることは好きだけれど、片付けをするのは嫌いというぐーたら思想を体現化したこの白色の箱には毎日非常に助けられています。というか、一家に一台設置されていたほうが良いんじゃないだろうかと思えてしまう。食器を洗う時間は例えば1回の食事につき20分くらいは大きく見積もってもかかってしまうと思うと、昼夜と作っている我が家では40分近くかかっていたという計算。1日で40分、1年だと243時間なので10日ちょっとくらい人は食器を洗っているわけです。この間にできることは多いなと思い、PCの前に座ってコードを書くでもなく、本を読むでもなく、畳に寝転がってYoutubeなどを見る始末。心のリラックスができていると思えば良い買い物でした。

さて、食器を洗う手間が省けたなら次に目をつけるのは衣食住の中でも衣でしょうか。来た洋服を洗う必要があるわけで、洗濯をするのは日課として行っていますがこれを物干しに干すのが面倒くさい。晴れている日ならば良いものの、雨の日ならば部屋干しが必要となるため一部屋利用する必要がある。これはどうにかしなければ、ということで洗濯乾燥機を検討したのが9月くらい。ただ、どんなに部屋の寸法を図ってみても小型の洗濯乾燥機が入らない。こればっかりは引っ越ししなければ解決ができないなと思い、乾燥機単体の導入に方針転換。良い感じの写真は無いのだけれど、10月に購入。最初は洗濯機から乾燥機に移す手間はどうなのか?と思っていたけれど、実際にやってみればなんてことはない。30秒もあれば余裕で終わる。しかもうれしいことは、乾燥機と洗濯機が別になっているので乾燥しながら洗濯ができる。洗濯乾燥機にはこれができない。普通洗い&乾燥機で良いものを先に洗ってから、デリケート洗いが必要なものを後から洗うことで、洗濯の手間や物干しの手間を大幅に短縮できるわけ。物干しと洗濯にやっぱり20分くらいかかっていたものとすれば、1年で10日くらいの節約になっていると言える。部屋干しをしなくなった部屋の中で本を読むでもなく、プログラミングをするでもなく畳で寝転がってYoutubeなどを見る始末。心のリラックスができていると思う次第。

読んだ本

読書録をつけるぞ!!!って毎年言っている気がするけれどできてない。できるだけブログに記録は付けていると思うけど。

numa08.hateblo.jp numa08.hateblo.jp

レディ・プレイヤー・ワン、映画も最高だったね。映画ではメカゴジラガンダムの構図で「俺はガンダムで行く」という名台詞が生まれたけれど、原作ではレオパルドンエヴァが登場していて、それはそれで良かった。メカゴジラが三式機龍なので、この「わかってない」感じのチョイスを悪役がするのが、作品に対する愛やロマンを持っていない悪者っぽくて愛しさすらある。

numa08.hateblo.jp numa08.hateblo.jp numa08.hateblo.jp numa08.hateblo.jp numa08.hateblo.jp

増田で話題になってた本。災害シミュレーションだけれどこの本を読んだあとに起きた北海道の地震とそれに伴う停電で、この本に書かれていたこととおなじような出来事が発生して、シミュレーションとしての完成度の高さがあったように思う。

numa08.hateblo.jp

numa08.hateblo.jp

numa08.hateblo.jp

numa08.hateblo.jp

アウトドア、旅行

f:id:numanuma08:20180224131052j:plain

淀川の河川敷で焚き火をするところから始まって、6月くらいから本格的にキャンプをしてたのだけれど、夏は異常な暑さ&雨で全然キャンプへ行けなくて、結局10月〜11月に今までのうっぷんを晴らすかのようにキャンプをしまくった。

f:id:numanuma08:20181025144112j:plain
阿蘇カルデラ
f:id:numanuma08:20181030104559j:plain
噴火する桜島
f:id:numanuma08:20181029175715j:plain
無限焼酎

会社でキャンプへ行ったりもしたね。

2019年

まとめを書いて思ったけれど、コードを書く以外の色々なことをやるようになってきていると思う。2018年の github 活動を見ても、そんなに無い。そのぶん、本を読んだりアウトドアをしたりスポーツをしたりと言った部分に時間を使うようになった。人生はインプットを多めに取り入れていきたいという思いもあるので、このペースは継続していきたい。

今年はトライアスロンに挑戦してみたいなぁとか、スノーボードをもっと上手に滑れるようになりたいなぁとか、家族に新メンバーを迎え入れたいなとか色々とやりたいことや挑戦したいことはあるのでこの気持を大事にしていこう。

ただ、2018年は一人遊びや家族で遊ぶ機会が多すぎたような気もするので、もっと外に出ていろいろな人と出会うようにしていきたい。

「ポップステップげっちゅー みれぃプリ!!」をするアニメーションを作ったよ MagicaVoxel + Blender + Unity

この記事は プリッカソン Advent Calendar 2018 - Adventar 12/23 の記事です。

昨日は id:saken649 さんの 「形態素解析を用いて、夢川ゆいのユメ語録を再現してみる試み」でした。

syn-station.hatenablog.com

南みれぃとぼく

みれぃちゃんが私自身にとってどういう存在だったのかは、以前ブログに書きました。

numa08.hateblo.jp

過去の自分を投影してそして過去の自分を受け入れられる存在としてみれぃも好きだって言える。俺の中のみれぃはそんな存在なんだ。

今見返してもエモさの塊だけで文章になってない、エモエモな記事ですね。ともかく、みれぃちゃんは自分自身を投影できるそんな存在です。

やっぱり造形でしょう

さて、思いの丈を表現するのなら、やっぱり造形物にしてしまうのが良いでしょう。という訳で、できあがったものがこちら。

プリパラ2期84話「ポップ・ステップ・ぷりぷりぷり!」 のみれぃちゃんを思い出しながら見てください!!

みんな大好き MagicaVoxel を使いました。アニメーションは Blender で行い、最終的に Unity に組み込みました。

ephtracy.github.io

家に「ねんどろいどこ~で 南みれぃ マジカルピエロコーデ」があるので、それを参考にモデリングを行いました。

f:id:numanuma08:20181021103429j:plain
みれぃ

ちなみに、このフィギュアは Amazon のほしいものリストに入れていたら、 [twitter:@NorsteinBekkler] が差し入れで送ってきてくれたのだけれど、ギフト扱いになっていない荷物でマーケットプレイス出品だったため

「えっ!?俺、自分でも記憶にないうちにオーダーしてた??それとも神??神様なの!?女神様!!!ジュリィありがとう!!プリチケ配達人になったんだね!!ついに俺のところにもプリチケがきたんだ!!そ、そうだ、ライブ!ライブしたい!!歌いたい!踊りたい!!おしゃれなコーデでランウェイを歩きたい!!それが今の夢。今叶えたい夢。パン!ご飯!!麺類!!ひゃっほぃ」

という感じでテンションが上りました。

ともかく、ポチポチと Voxel を組み上げてできあがったものがこちら。

f:id:numanuma08:20181223042335p:plain
みれぃ

「絵心は死んだ!もういない!!だけど、俺の心にこの胸に!!1つになって生き続ける!!」

自分の中では及第点かな?と思えるモデリングができたので満足です。

ちなみに、 MagicaVoxel の使い方は id:henteko07 さんの本が最高に詳しいです。

ボーンを組み込む

最終目標はアニメーションをすることなので、できあがったモデルデータにボーンを組み込んで動かすことができるようにします。ボーンの組み込みは Blender だけでもできると思いますが、今回は Maxiamo を使って自動生成してもらいます。

Mixamo

MagicaVoxel で obj 形式で出力を行い、出来上がった .obj, .mtl, .png を1つの zip にまとめます。

f:id:numanuma08:20181223043110p:plain
エクスポートされたファイルを zip にまとめる

zip ファイルができたら Maxiamo に Adobe アカウントでログインをして、キャラクター一覧ページにある Upload Character からさっき作った zip ファイルをアップロードします。

f:id:numanuma08:20181223043319p:plain
Upload Character を選ぶ

f:id:numanuma08:20181223043351p:plain
zip ファイルをアップロードする

f:id:numanuma08:20181223043431p:plain
アップロード成功

無事にアップロードに成功したら、次は関節の位置を決めます。丸い関節ポインターを動かして、モデルの適当な位置に配置します。

f:id:numanuma08:20181223043553p:plain
関節の配置

また、指は不要なので「Skelton LOD」から「No Fingres」 を選びます。

f:id:numanuma08:20181223043643p:plain
指の関節は不要

あとは Maxiamo が自動的にボーンを設定してくれます。ボーンの設定に失敗することが多々あって、今回は次の対応を何回か行いました。

  • 関節同士の位置を遠ざけた
  • スカートや髪の毛など、浮いているパーツと関節を遠ざけた

対応が良かったのかどうかはわかりませんが、何度かチャレンジを繰り返したらうまく行きました。

maximo で適当なアニメーションを設定して、動作確認。

ポップステップげっちゅー するプリ

アニメーションすることがわかったら、 設定をしたアニメーションは一旦削除して、fbx 形式でファイルをダウンロードします。maximo のダウンロードボタンから「Format」 を fbx、 「Pose」を T-Pose としてダウンロードします。

f:id:numanuma08:20181223044450p:plain
ダウンロードする

ダウンロードした fbx ファイルを Blender の File -> Import -> FBX と進んで、インポートします。

f:id:numanuma08:20181223044607p:plain
インポートする

ボーンを動かしてアニメーションする

インポートできたらボーンを動かすことでアニメーションを設定します。Blender を今回はじめて使いましたが「何かの値を変える」→「キーフレームに設定する」→「間が補完されてアニメーションになる」という仕組みなんですね。ボーンの操作をしやすくするため、 Armature -> Armature の設定から「Display」を Stick に変更し、X-Ray にチェックをつけました。

f:id:numanuma08:20181223045140p:plain
Armature の設定

f:id:numanuma08:20181223045200p:plain
ボーンが見やすくなる

アニメーションの設定を行っていくため、 Dope Sheet -> Action Editor を開き、1フレーム目を選択します。

f:id:numanuma08:20181223045452p:plain
1フレーム目を選ぶ

3Dオブジェクトが表示されている方の画面では、 Armature を選んだ状態で左下の Edit ModePose Mode に変更ます。こうすることでボーンの編集ができるようになります。ボーンは右クリックで掴んだらそのままドラッグで移動、Rキーを押したら回転の設定、もう一度Rキーで移動に切り替え、という操作で編集が可能です。alt+Gで移動のリセット、alt+Rで回転のリセットができます。また、Aキーで全てのボーンを選ぶことができるので、この状態でalt+Gやalt+Rを使えば、編集のリセットができます。

f:id:numanuma08:20181223045931p:plain
ボーンを設定してポーズを決めよう

ポーズが決まったらIキーを押してInset Keyframe Menu -> Rotation を選び、キーフレームにポーズを追加します。

f:id:numanuma08:20181223050044p:plain
キーフレームを追加する

そして、次のフレームとして20フレーム先を選んでポーズの決定、キーフレームの追加、20フレーム先を選択・・・という手順を繰り返します。今回は20フレーム間隔でやったけれど、もうちょっと短い間隔でやってもよかったかも。アニメーションの動作確認はDope SheetTimelineに変更することで、操作コンソールっぽいのが出てきて操作ができました。

f:id:numanuma08:20181223050431p:plain
アニメーションの確認は Timeline から行う

Unity でインポート

アニメーションもできあがったしここで完成でもいいですが、もうちょっと色々なことができるように Unity に組み込むところまでやります。

テクスチャーの出力

Blender で編集をしたモデルを Unity に組み込んだところ、テクスチャーが無くなってしまったようではんぺんみたいなみれぃさんが表示されてしまいました。

f:id:numanuma08:20181223050731p:plain
「パプリカ学園校則第55301条!みれぃをはんぺんみたいに表示してはならない!!」「はんぺんみたいな委員長も素敵です」

流石に辛いので直します。テクスチャーをちゃんと画像として出力しておいて、 Unity のマテリアルで設定すれば良いようです。Blender で出力したい 3Dモデルを選び、テクスチャーっぽいマークのアイコンのタブを選び、 Image -> Sourcesave an image packed inthe .blend file to disk を押してテクスチャーの画像を保存します。

f:id:numanuma08:20181223051229p:plain
テクスチャーっぽいアイコンを選んで、 Source を見つける

f:id:numanuma08:20181223051129p:plain
テクスチャーを保存する

モデルの出力

3Dモデルとアニメーションを出力して Unity で利用できるようにします。File -> Export -> FBX を選んで fbx 形式で出力し保存します。

f:id:numanuma08:20181223051403p:plain
fbxで保存

Unity で表示する

Unity 上でテクスチャーの画像ファイルと、fbxファイルを Assets に追加します。Assets で右クリックをして Create -> Material から新しいマテリアルを作ります。新しいマテリアルを選び、Inspector の Albedo の左側の四角□にテクスチャーの画像をドラッグ・アンド・ドロップで設定します。これで、テクスチャーを表示するマテリアルが作られました。

f:id:numanuma08:20181223051732p:plain
新しいマテリアルの Albedo にテクスチャーの画像を設定する

fbx を読み込んだときに Prefab として追加された3Dモデルを選択して、 Inspector の Remapped Materials->On Demand Remap-> palettemat にさっき作ったマテリアルを設定します。

f:id:numanuma08:20181223051930p:plain
Prefab にマテリアルを設定

ここまでできたら、ちゃんとしたみれぃちゃんをシーン上に追加できます。

f:id:numanuma08:20181223052008p:plain
やっぱりみれぃはこうでなくっちゃだめプリ!

最後にアニメーションの設定です。Assets 上で右クリックをして Create -> Animator Controller を選択して、新しい Animator Controller を作ります。Animator ウィンドウ内で右クリックをして Create State -> Empty を選びます。新たにできた State を選んで Inspector 上で Motion に fbx を読み込んだときにつくられたアニメーションを設定します。

f:id:numanuma08:20181223052319p:plain

そして、この Animator Controller をシーン上にある3Dモデルの Animator コンポーネントController に設定します。

f:id:numanuma08:20181223052434p:plain
Controller に設定する

あとはシーンを再生することでみれぃちゃんが動きます!!やったぷり!!

終わりに

今回、生まれて初めて Blender を触りました。Unity でテクスチャーがつかない現象が発生していて、それを解決する方法がわからなくて困り果ててた・・・。

自分の好きなキャラクターをモデリングしたりして動かすことができるようにするのは、めっちゃ楽しいのでみんなやると良いと思う。

でじこちゃんでもなんかやろうっと!!

jcom から手紙が来ていた話

f:id:numanuma08:20180924100630j:plain

先月末、jcomからお知らせという件名で手紙が届いていた。

jcom から来た手紙を Google DriveOCR 機能で読み取った結果を修正したものが以下。

J:COM NET サービスご利用に関するお願い 平素はJ:COM NET サービスをご利用いただき誠にありがとうございます。 このたび J:COM NET サービスのご利用方法に関してお願いがございまして、ご連絡いたしました。突然のご案内になり申し訳ございません。 お客さまのご紹約されている回線から、9月26日 と 9月27日 の2日間にわたり、大量のデータ送信(※) 確認されました。この状況が続きますと、インターネット回線の通信品質に影響が出る恐れがございますの で、ご利用状況の見直しをお願い申し上げます。 また、データバックアップの為に他社クラウドサービスをご利用の場合は、一度に大量のデータ送信を行わ ず、日にちを分散してデータ送信いただけますようお願いいたします。 引き続き、データが一定水準を超える場合は、改めて書面にて実施期間をお知らせした上で、通信速度 の制限が発生しますので、やめて下さいますようお願い申し上げます。 ご不明点がございましたら、お手数ではございますが、弊社カスタマーセンターまでご連絡くださいますよ うお願いいたします。 今後も弊社サービスをご愛顧賜りますよう、重ねてお願い申し上げます。 ※大量データ送信とは、お客さまのパソコンなどからインターネット網に送信される1日あたり 30GB(ギガ バイト)以上の上り(アップロード)データ通信と定義しています。これは一般的なご利用の約 30MB と比較 して、およそ1000 倍に該当します。 30GB 以上のデータ量の目安では、DVD に格納されるデータ量(1枚約 4.7GB)の約7枚以上、もしくは CD (1 枚約 700MW), 44枚以上、またはデンタルカメラ写真(1枚約 6MB)の約 5120 枚以上に相当します。

初動

ちょうどこの手紙が届いたタイミングで俺は東京へ出張に行っていた。そのため、初動として動いてくれたのは奥さんの方で、 jcom への問い合わせを行っていてくれた。具体的な問い合わせのログが残っていたわけではないのだが、訪ねたことは

  • データの送信が行われていた詳細な時間帯
  • 送信されていたデータのプロトコルなど、詳細な情報

の2点。しかし、電話の担当者曰く手紙に描かれていること以上のことはわからないとして、情報が得られなかった。

対応、原因解明

自分がこのことを知ったのは、東京への出張から返ってきた9/29の夜。疲れ果てて返ってきたところに、奥さんに言われたので、まあ明日(日曜日)に考えてみるかーと思って、一応PCの電源だけを落として寝た。さて、翌朝の日曜日、いったい何が発生したのかを考えてみた。

大量のデータを送信するようなプロセスを起動した記憶は無いことを考えるとウィルスの可能性もあるなー、面倒くさいなーと思ってPCの前に座った瞬間、ちょうど1週間前に北海道へ行った際に Sony のアクションカメラで撮影したデータを Google Drive でバックアプをしたことを思い出した。4k 動画で全部で2時間くらい。これだわ・・・。

対策

対策といった対策を特に取っていない。jcom の手紙には

また、データバックアップの為に他社クラウドサービスをご利用の場合は、一度に大量のデータ送信を行わ ず、日にちを分散してデータ送信いただけますようお願いいたします。

とあったので、日をまたいでのバックアップをすることが適切なんだろうな。ただ、4k 動画で撮影した動画と言えどほとんどが車載動画で、全部を見返すことはあんまり無さそうということを考えると、今後はバックアップを行うファイルを選ぶのが良さそう。

そんなことを考えた9月末でした。

#ドラえもん展 強烈な精神的汚染による自分自身都の対話。あるいは、なぜドラえもんがそこにいないのか。

f:id:numanuma08:20180918010846j:plain

作品鑑賞とはすなわち自分との対話の一環である。その作品を通して自分がどう感じたのかを自分自身に問いかけることで、自分自身の心や頭が何を考え何を感じ、そしてそれらはどういう傾向があるのかを考察する。作品は絵画や彫刻、映像だけであるとは限らない。食べ物や飲み物を対象にするときもあれば、車などの乗り物であったり他愛のない食器やそのあたりの草であったりもする。

いずれにせよ人々はそこにリソースを割かないことが往々にしてある。自分との対話とは即ち、記憶の掘り起こしであり自分を形作ってきた物の再認識であり、それらは全てが心地よいものではない。そもそも、この活動は非常に疲れる。だから、美術館に行っても気になるものや話題のものだけを鑑賞したら、それ以外についてはあんまり時間をかけない。

もしも、すべての作品が自分の興味を引くものだけで構成された展示会があったらどうなるのか。脳をフル活用して疲れ果てた人はどうなるのか。その先は何のか。

それは、自分と自分以外の境界線の喪失である。自分がどこまで自分なのかどこからが他人なのか、他の鑑賞中の客なのか、それとも作者なのか。その境が曖昧になってくる。高熱を出して朦朧とする意識の中で立っているときのような、自分が見ている景色は誰かが見ている景色のような。強力な精神汚染。

ドラえもん展はそんな展示会だった。

物心ついた頃からドラえもんというコンテンツに強く惹かれてしまうようになった自分にとって、ドラえもんのみで構成された展示会は夢のような場所であると同時に、精神的疲労を強く覚える場所だった。

一つ一つの作品に強い思い入れを抱き、作者の思いを想像し、それを通して自分の内面を見つめ直す。その一つ一つのプロセスが少しづつ心を蝕む。

流し見をすればいいのではないだろうか? いや、それはできない。なぜならドラえもんだから。

しかし、何となく展示の企画者の意図も感じた。村上隆氏の大型作品「あんなこといいなできたらいいな」に始まりシンヤマザキ氏の「(Pink) Dust In The Wind ~すべては(ピンクの)もやの中に」で終わる作品配置は深く見れば見るほど、破壊され蝕まれる精神状態を表すように見えてならない。

ドラえもん展のテーマはそもそも「あなたにとってのドラえもん」だった。つまり、画家や彫刻家、クリエイターがあるいは子供のときに、あるいは大人になってから見つめ直したドラえもんを自分の形で表現したものだ。この世のすべての作品は受け取り手にとって十人十色、100人いれば101通りの受け取り方があり得る。「あなたにとっての」とは各クリエイターの心の中にあるドラえもんを、言ってみれば各クリエイターの心の中を覗き見する行為に他ならない。

私は人の心を理解することはできないと思う。したがって、人の心の中を覗き見することは自分にとっての「理解の及ばない」エリアを見ることに他ならない。自分の理解ができないものを見ることは即ち自分の精神的限界点を超えてしまうことなのだ。

ドラえもん展にはそれだけのパワーが有った。

気鋭の若手現代アーティスト達によるドラえもん展の展示は、見ているものに対する精神的汚染に他ならない。しかし、自分の心が乱される中で自分という個を保つために自分との対話が生まれる。

自分にとってのドラえもんは何だろうか・・・。それを問いかける機会ともなった。

私にとってのドラえもん

それは、SFとの出会い。

それは、漫画との出会い。

それは、アニメとの出会い。

それは、藤子・F・不二雄との出会い。

大人になってしまった今では、少年時代との出会い。

ドラえもんと言えば思い出すのは、初めて大学の単位を落としたときのこと。一年生の線形代数学の授業だった。

自分にとって「単位を落とす」とか「留年をする」はフィクションの中のことだった。

キテレツ大百科の勉三さんみたいな、あるいは「アパートの木」の五郎さんのような、どこか昭和の薫りの漂う漫画の中の出来事だと思っていた。

それが現実になったとき、大きなショックを受けた。自分の中の価値観が壊れてしまうような衝撃。自分が自分を保つため、選んだのは「ドラえもん」だった。

てんとう虫コミックス第6巻の「さようならドラえもん」。あるいは大長編ドラえもんの「のび太の宇宙開拓史」。そして、テント虫コミックス第35巻「ドラえもんに休日を」。

自分の中の「泣ける」ドラえもんの話。

これを「泣く」ことこそが、自分自身だと思っていた。落第が決定したときにこれらの作品を読んだ。でも、泣けなかった・・・。

泣くことができなかったショック。自分が自分でなくなるかのようなショックに涙を流した。

なぜここにドラえもんが居ないのか。

いくつかある最終回を除けばドラえもんが居なくなった瞬間は漫画の中では描かれない。大学生になったのび太がタイムマシンを利用していたシーンもあれば、大人になったのび太ドラえもんとの再会を懐かしむシーンも有る(45年後・・・

ドラえもんは最も近くて最も遠い存在だったのかもしれない。近くにいるけれど見つけられない。灯台下暗し。「心をゆらして」探せば見つかるのかもしれない。

今では、そんなこともあったと思える。

結局、自分を立ち直らせたのはしばらくしてから発売された劇場版ドラえもんのDVD BOX だったり、藤子・F・不二雄大全集だった。

自分が自分であること、それはドラえもんを読んで「すこし」笑っていたり「すこし」泣いていたりすること。

そんな、在りし日の思い出を揺り起こすことだった。

ドラえもん展を見に行ってほぼ1年。今では、全国を巡回している。大阪に来る日もあるだろう。

1年前とはもしかしたら「すこし」違う、でもやっぱり一緒な自分を見つめ直すこの展覧会をまた見に行こうと思う。

そのアプリ、本当に MVI が必要?

久々に技術っぽいポエムを。

Qiita で Android の MVI アーキテクチャについての記事を書いている。

qiita.com

思ったよりも大作になってきて、ちょっとどこから編集を追記すれば良いのかなという気持ちになっていたりするのだけれど、ぼちぼち作っていきたい(また書籍化したい・・・?)。

さて、 この Qiita の記事を書くきっかけはあるプロジェクトの中で MVI アーキテクチャを採用しませんか?ということになったため。練習レベルで MVI アーキテクチャiOS の Reactor Kit を使ったコードを書いたことはあるけれど、ちゃんとプロダクトで使ったこともないし、人に説明ができる感じでもないなという状態だったため、今一度自分のスキルセットを確認しようと思い筆を執った次第。

で、コードを書いていて思ったのだけれど全部が全部 MVI っぽい感じのコードにはならない。まあ、そんなのは当たり前で、アーキテクチャを決める会なんかのときにも「いやあ、全部が全部 MVI っぽい書き方にすると大変っすよー」みたいなことは言うのだけれど、具体的に「全部が全部」じゃない部分ってどれよ?ってのを今ならある程度言語化できそうなので、忘備録的な意味合いでちょっとまとめておく。

プロジェクトが終わった時に考え方が変わっているかどうかが見もの。ちゃんとプロジェクトが終わりますようにという思いも込めて 🙏

静的な View

そもそも MVI を導入する目的は「複雑になった画面の状態を抽象化し、コードで表現できるようにしてデバッグやテストをしやすくする」ことだと思う。その目的にそぐわないのが「静的な View」だ。一般的なアプリだと

  • ヘルプ、使い方画面
  • WebView だけの画面

とか。「WebViewだって、View の中身のページが変わるじゃん!」みたいな考えもできるけれど、中身のコンテンツ自体は WebView が状態を管理してくれることが多いのでそっちに任せておくのが良さそう。静的な View しか存在しない画面は MVI っぽく作る必要がないし、動的に変化をする画面でも 静的な部分については State で管理をする必要はない。

画面遷移

画面遷移も Fragment なり Activity なりを管理してくれるのは os なので、アプリの方では気にしない。ボタンを押したりしたら普通に startActivity や add/replaseFragment で画面を開けばいい。個人的には Espresso でテストがしやすいので EventBus 的に Fragment → Activity で通信を行う仕組みを作っていると、EventBus をモック化することで Fragment の UI テストがしやすくなるので好み。ただしこれは MVI とは関係がない。

Runtime Permission

これもなー、画面遷移に近いのかなーって思っている。ボタンを押して現在位置を取得する、みたいな実装の場合

  1. ボタンを押す
  2. リスナーで Runtime Permission のチェック
  3. Permission の状態に応じて ViewModel に対して Intent を飛ばす

のように、View 側で Permission の管理をしちゃうのが良さそう。Runtime Permission 関連の API が Context に依存していてさらに画面上にダイアログなんかも出ちゃうので、このダイアログを State で管理をするとかやりたくないよね?って感じ。

ダイアログ、 Toast、 SnackBar

これに関してはまだよくわからない。 State に isShowDialog: Bool なフラグをもたせておいて、 True なら表示をすればいいのだけれど、じゃあいつ False になるんだろうか?Toast や SnackBar も同じ。これらの View が「閉じた」というイベントをトリガーにしてフラグを倒すのかな。SnackBar は簡単にできそうだけれどダイアログと Toast は大変そう。 Droidkaigi でも Toast に関しては「表示してからn秒後にフラグを倒す Intent を発行する」とか言ってて、やべえなって思った。ダイアログに関してはダイアログが閉じられるケースを全部網羅するの?まじで?って気持ちもある。

画面遷移に近いようなきもするけれど、こういう UI を出したいタイミングって非同期処理なりビジネスロジックの終了をトリガーに行うことが多いイメージ。なので「ボタンを押したらすぐ表示」というわけにはいかないよね。

大変そう。頑張ってフラグで管理をするのかな。