丁寧に手を抜く

頑張らない努力

【無計画】チャリでだらだら行く秋の京都【働きたくない】

あーだるい。何もしたくない。そうだ、京都行こう。 大阪に引っ越してきてまず嬉しかったのは、気軽に京都に行けることだ。

という訳で阪急電車に飛び乗り、40分ほど揺られて京都に行った。

でも歩きたくない。まずはレンタサイクルをゲットだ。

f:id:craftzdog:20181109210309j:plain

www.thegooddayvelo.com

訪れたのは「The GOOD DAY VELO BIKES & COFFEE KYOTO」。店頭に設置してある自転車がすでにかっこいい。 コーヒースタンドも兼ねているようだ。 一日1,400円のSIMPLE VELOという車種を借りた。 笑顔が素敵な店主。

f:id:craftzdog:20181109210714j:plain

完全ペーパーレスで、手続きはiPadで済ませる。 Adobe Acrobat Readerに表示されたPDFフォームを埋めて申し込み。 メールで鍵の番号とガイドが送られてくる。よき。 一点だけ注文するなら、HTMLフォームだと更に入力しやすくて良かった。顧客データベ(ry

さて、とりあえず鴨川に向かうとする。 京都はいつのまにか自転車レーンが整備されていて、とても走りやすかった。

あーーーーーーーー、いい。 20分ぐらい川をぼーっと眺めた。 なんか脳の神経細胞が修復されている感じがした。 これ、毎日やりたいわ。京大生はうらやましいな。

f:id:craftzdog:20181109211229j:plain

めっちゃ天気いい。 鞍馬の方の山々も澄み渡って眺められる。 貴船の川床料理がまた食べたいな。

哲学の道が大好きなのでそっち方面に向かうことにした。 そや、10年以上ぶりに銀閣寺に立ち寄ってみよう。

f:id:craftzdog:20181109212357j:plain

あー、めっちゃ銀閣寺。変わりませんね。

f:id:craftzdog:20181109211744j:plain

紅葉は色づき始めという感じ。下旬頃がたぶん見頃だろう。

f:id:craftzdog:20181109212548j:plain

ものによってはいい感じに赤かった。

f:id:craftzdog:20181109212651j:plain

いい眺めだ。

f:id:craftzdog:20181109212839j:plain

そして哲学の道をゆっくりと南へ下る。

途中にある南禅寺はまた紅葉が色づいてから来ることにした。南禅寺、超好き。

f:id:craftzdog:20181109213031j:plain

南禅寺を通り過ぎていたときに偶然見つけた、小川の流れる小道。 調べてみると「扇ダム放水路」という名前らしい。 猫じゃらしがキラキラしていた。穴場。おすすめ。

f:id:craftzdog:20181109213904j:plain

ミーハーなのでブルーボトルコーヒーに来ました。 関西初だそう。 なぜこんな壁際のアングルで撮ったのかは謎。 オシャレなボーイズ&ガールズがたくさん。 もとい、外国人が半分ぐらい。

f:id:craftzdog:20181109214122j:plain

古民家にコンサートの演出でよく使われてそうな照明。 組み合わせが面白い。

f:id:craftzdog:20181109214315j:plain

ブレンドコーヒーを一杯。 流行りとか抜きにして美味いと思った。 甘くて香り高い。秋のイメージにピッタリである。 たぶん甘い栗のイメージ。

f:id:craftzdog:20181109214653j:plain

象印。洛東グループのタクシー。きゃわ。

無計画にふらっと訪れた京都、充分楽しめた。 何も考えなくても許される街。 また来るぜ!


  • 使用カメラ: Leica X Typ113

iPad Pro 12.9 inch買った。お絵かき・作曲・写真がこれまで以上に捗りそう

どうもTAKUYAです。

発表時点では買うつもりの無かった新しいiPad Proだけど、いろんなレビューを見ていたら欲しくなって買ってしまった。Apple心斎橋で奇跡的に店頭受け取りが出来たのでダッシュで受け取りに行った。

今までは初代iPad Pro 12.9 inchを使っていて、Apple Pencilでブログの挿絵を描いたりゲームしたりといったことに使っていた。 その使い心地は文句なく、購入してから2年経っているのが信じられないくらい現役で役に立っている。 それでも買い替えを決意したのは、この記事を読んだのがきっかけだった:

www.dtmstation.com

USB-Cの可能性ハンパないぞと。 AKAI MPDとiPadをバスパワーで繋げてカジュアルに作曲できたらめっちゃ楽しいやん。 iMacに繋いでももちろん出来るんだけど、なんかiMacは仕事用って感じでなかなか気が抜けないんよね。 iPadならソファにだらだらくつろぎながらパッドをパシパシ出来てとても良さそう。

f:id:craftzdog:20181108212731j:plain

そしてApple Pencilはかなり使い勝手が良くなったと思う。 初代は無くしてしまわないように普段は引き出しにしまっていた。 そうすると取り出すのが面倒で使わなくなるし、いざ使おうというときにバッテリーがゼロになっていたりしてとても不便だった。 第二世代でそれらの問題が一挙に解決したのではないか。 iPad Proとセットで持ち歩けるし、いつでも充電マックス。 ミーティングにも良さそう。

f:id:craftzdog:20181108212551j:plain

早速AmazonでUSB-Cハブを購入した。SD Cardも読めるようになるので、カメラとの連携も捗りそう。

今はFlashAirを使っているんだけど、接続して読み込むまでの手順が煩雑だし、RAWデータはめちゃくちゃ時間がかかるし、カメラのバッテリーも食う。 USB-C経由なら出先でLeicaで撮った写真をカフェなどでサクっと現像してシェア出来るようになる。 まぁ、それは以前のiPadiPhoneでも出来たんだけど、これを機に解決したい。

f:id:craftzdog:20181108212535j:plain

新しくなったiPad用キーボードは買わなかった。 初代ではSmart Keyboardを使っていたけど、正直言って微妙。 キーボード自体が微妙なのではなく、iOSの日本語入力が微妙といった方が適切。 自分のキーボード入力が速すぎて、変換が追いつかなくてカーソルが変な場所に移動したり変換候補がずっと出続けるといったような現象がしばしば発生していた。 かといってゆっくり打つのはまるでアクセルを踏みながらブレーキを踏むようなもんで、大変気持ち悪い。 なので長い文章を打つ用途にはあまり使わなくなってしまった。 Macbookがアップデートされたら、そちらをブログ用に買おうかと思案中。

f:id:craftzdog:20181108215923j:plain

さっそくProcreate + New Apple Pencilでキレイなイヌさんを描いてみた。よい。

光が丘は個人開発にオススメの街

先日、8年住んだ光が丘から大阪に引っ越した。 8年も住むとさすがに思い出深くて、寂しさを覚えた。 とてもいい街なので少し紹介したい。

f:id:craftzdog:20181101190622j:plain

写真: 住んでいた部屋

光が丘は東京都練馬区の北端に位置するベッドタウン都営大江戸線の始発駅。

当初ヤフーに新卒で働くために上京して、当時のオフィスである東京ミッドタウンに通いやすいという理由で光が丘を選んだ。

住んでみた感想はとにかく住みやすい。 駅近くにはIMAというデカいショッピングモールがあって、なんでも揃っている。 スーパーはもちろん、無印やユニクロも入っているので生活する上では全てそこで済んでしまう。 ドトールサンマルクといったカフェから、大戸屋からケンタッキーやらうどん屋などなど外食にも事欠かない。 警察署や消防署もあるので治安的にも安心感がある。 子連れの家族が多く住んでいて、子供をたくさん見かける。 まさにベッドタウンという感じだ。

f:id:craftzdog:20181101190527j:plain

写真: 駅近くには団地が立ち並ぶ。昭和を感じる。

特筆すべきは駅からすぐ近くにある光が丘公園。 結構大きくて、ジョギングコースは一周3キロ強ある。 近くに緑があると四季の変化も感じられてとても落ち着く。

f:id:craftzdog:20181101190454j:plain

写真: 光が丘公園の並木道。四季折々の表情を感じられる。

この街が個人開発に向いている大きな理由は、余計なことを気にしなくていい点にある。集中するには最高の環境。 生活物資はすべて駅前で済む。 煮詰まったら公園をぐるぐる散歩。 都心のように遊ぶ場所が無いので目移りしなくて済む。 個人開発だけに限らず、モノづくりに打ち込みたい人にオススメしたい。

f:id:craftzdog:20181101191017j:plain

写真: 毎年咲き乱れるコスモスが見どころ。

デメリットを挙げるなら、どこに行くにも最低30分〜1時間はかかるという点。 品川まで1時間もかかるのが地味に不便だった。 あと吉祥寺や高円寺のようなオシャレさとか文化は無い。 だからちょっと退屈する。 都営大江戸線は狭くてうるさい。 それぐらいかな。

f:id:craftzdog:20181101191126j:plain

写真: 休日はよく催し物で賑わっている。

子育てには最高だと思う。 プロダクトを育てるのも。 そんな光が丘、いかがでしょう?

脱ステ脱保湿で、ステロイドを塗っていた時より肌がキレイになってきた

f:id:craftzdog:20180820151019j:plain

どうもTAKUYAです。

脱ステ脱保湿シリーズ第3回。俺のアトピー症状のその後やいかに!

  1. 2018-08-03 アトピー治療に専念している
    • 脱ステ・脱保湿に至った経緯など
    • 練馬は大泉学園にある藤澤皮膚科に通い始めた話
  2. 2018-08-20 脱ステ脱保湿のアトピー治療でいい感じに治ってきた
    • 主に理論を関連書籍などに基づいて自分なりに解説
    • 顔のリバウンド症状を写真と共に紹介

前回から早1ヶ月半ぐらい経った。 そして薬をやめてちょうど3ヶ月経った。 区切りが良いので症状の変化をまとめたい。 参考になれば幸い。

滲出液は完全に止まってかなり過ごしやすくなった

結論から言うとめちゃくちゃ順調に回復している。 あらためて記録として撮っている写真を見返してみたが、ピーク時の症状はほんとうに凄まじくて、よくここまで回復したなという感じ。 人間が本来持つ治癒力に驚かされた。

滲出液はもう全然出なくなった。 シーツやタオルを黄色く染めることも無くなった。 ソファを汚したくないので常にバスタオルを敷いて座っていた。 掻きむしっても滲出液は出なくなった。 その代わり血が点々と滲むようになったが、先生曰くこれは回復の印とのこと。 これは体感的にもそう思う。 血が滲んだ部分はすぐにかさぶたになって治る。

落屑もかなり落ち着いた。 以前は掻くたびに大量の皮膚が剥がれ落ちて散らかっていた。 目に見えない粒子レベルでも沢山皮膚が舞っているらしく、空気清浄機のハウスダストセンサーが常に反応する。 床や机、小物などあらゆるものにその皮膚の粉が付着して、数日でまるで一ヶ月間放置したかのごとく埃がたまる。掃除が大変。というかキリがない。 お陰で使わないものは引き出しにしまう習慣ができた。 頭の落屑はフケと誤解されるので辛かったが乗り越えた。 落ち着いたと言ってもまだまだ細かい落屑が出る。 落屑の量がもう半分ぐらいになってくれれば掃除も幾分楽になるんだが、それも時間の問題だろう。

左脚がむくんで大変だった。 たしか1〜2週間ぐらいで落ち着いたと思う。 右の脇が細菌に感染して腫れたので抗生剤を出してもらって対処した。 これも1週間ぐらいで落ち着いた。 その際、膿がドバドバ出てびっくりした。 膿は白血球の死骸らしいけど、緑色のマヨネーズみたいで驚愕だった。 牛の乳を絞るがごとくギュっとつまむと出てくるので面白い。

夜もだいぶ眠れるようになった。 基本的に夜は痒くて痛くて眠れない。 暗い部屋でボーっとただ耐え忍ぶしか方法はない。 なぜか落ち着くので、無言でコーヒーを淹れる動画をYouTubeでひたすら見ていた。 カフェが好きなので、そういう食器の音とかコーヒーをコポコポと注ぐ音が癒やされるのかもしれない。 ベッドで寝ると蒸れて痒くなるので、最近は床で寝ている。

そうやって山あり谷ありの症状を耐えに耐え抜いて、徐々に炎症は沈静化された。 今では、調子のいい時は朝から近所のカフェに行ってPCを広げて作業できるまでになった。 そのうちカフェ巡りも再開できるだろう。 つらい時期にもかかわらず支えになってくれた人には感謝しかない。

血みどろだった脚がきれいに

文字だけだとわかりにくいと思うんで、脚のふくらはぎの症状の変化を紹介したい。 自分自身の写真だけど正直見ていて辛いw

30日目の血は何もしてないのに流れ出した。特に掻き壊したわけではない。 なので、体の内側から炎症が発生してこうなったと推測される。 デトックスを極めると流血するのかもしれない。よく耐えた。俺、優勝。

続いて、腕。 脱ステ・脱保湿を始める前の症状はこんな感じで、大きめの紅斑がポツポツとあった:

f:id:craftzdog:20181003134754j:plain

ご覧の通り紅斑は無くなり、ステロイドを塗っていた頃よりも皮膚が強くなって綺麗になった。 あれだけいくら薬を塗りたくっても治らなかったのに。感動である。

このようにピーク時のリバウンド症状は想像以上に凄惨なものだった。 顔の症状と併せて見ると、自分のピークは30日目〜40日目あたりだったようだ。

今から脱ステ・脱保湿しようと思ってる人をちょっとビビらせてしまったかもしれない。 でも当時の自分は「やべぇな俺www」ぐらいで、たとえ流血しても「あーネタになるわw写真撮っとこw」と思っていたし、この状態でスーパーにもコンビニにも行ったしジョギングにも毎日出かけていた。 ここで「なんで自分だけこんな目に・・」みたいに鬱に入ってしまうと危険だと思う。 毎日変化する症状の中で、良くなった部分を見つけて「よし!一歩前進したぜ!」と褒めてやろう。 病気は気から。 無理にポジティブになれとは言わない。 自分を否定さえしなければいいのだ。

アトピーを無視して健康に振る舞う

リバウンドを長引かせず出来るだけ早く乗り越えるには、前回も書いた通りとにかく糖質制限と運動を徹底することだ。徹底だ。二回言ったぞ。 そして仕事も可能な限り通常通りやる。

顔の症状が出ていても気にせず人前に出る。

f:id:craftzdog:20181003142416p:plain

WantedlyにてReact Nativeの勉強会に登壇した。

症状が辛いからといって楽しいことまで避けてしまうと、気持ちもどんどん落ち込んでしまう。 だらかたとえ周りの目が気になっても気にせずやりたいことをやった。

低糖質のお菓子作りにハマった

糖質制限だと甘いものが食べられなくなる。 でもどうしても甘いものが食べたい。 そういう時はラカントを使ってお菓子を作った。 ラカントは、糖質が体内に吸収されず排出される特性をもつ天然由来の甘味料。 血糖値に影響を与えないので糖尿病の人などにもよく使われる。

f:id:craftzdog:20181003143604j:plain

このラカントを使ってチーズケーキを作ったり、ココアのおからケーキを作ったりした。 手間はかかるけど、めちゃくちゃ美味い! まさか自分がお菓子作りにハマるとは思わなかった。 分量を変えてみたりといった試行錯誤が楽しい。

f:id:craftzdog:20181003144057j:plain

豆腐ティラミス。んまんま。

低刺激で通気性のいい下着

症状が辛い時に最も気になるのは肌着だ。 少しでもチクチクすると痒みにつながる。

自分でもアマゾンで買ったりしていろいろな下着を試した。 通気性を謳うものはたいてい化学繊維なのでチクチクするからダメだった。 一番いいのは綿100%素材のものだ。 でもボクサーパンツはゴムの部分が気持ち悪い。

そして今履いているのは、ガーゼ製のステテコみたいなパンツ。

これが一番良かった。高いけど。おすすめ。

Tシャツはヘインズ一択!ヘインズの着心地の良さは群を抜いているので、これ以外は着ません。

f:id:craftzdog:20181003150538j:plain

参考までに。

痒くてたまらん時の対処法

自分の意志に反して掻く手が止まらない時に強制的に止めるにはどうすればいいか。 いくつか発見したので紹介する。

フォアヘッド・タッピング

タフツ大学の心理学者スーザン・ロバーツが編み出した方法。 具体的な方法は以下の通り:

  1. 5本指を広げて、自分のおでこに置く
  2. 5本の指で、1秒毎におでこを軽く叩く

これを痒みが気にならなくなるまで続ける。 完全とはいかなくとも結構おさまるのが実感できるはず。

このテクニックが効くのは、人間の脳が限られた処理能力しか持たないからだそう。

スクワットする

掻いてるとイライラしてくる。イライラすると自律神経の交感神経が優位になる。 交感神経が優位になると更に痒くなる。

この悪循環を止めるのが筋弛緩法。 かゆーい!と思ったらすぐスクワット30回。 夜寝てる時もやる。笑

たぶん一日合計すると200回近くやってる気がする。 お陰で足腰が強くなりました。

瞑想する

自分が強い痒みを感じるときって、たいてい頭の中がいろんな思考でいっぱいの時。 余計な考えをいったん「棚上げ」して、今に意識を集中させると、不思議と痒みもマシになる。 瞑想することで思考の棚上げを効率的に行える。 自分の中の執着を手放す。 別に今そのことを考えなくてもいいじゃんってね。

ゆっくり、結果を焦らず取り組む

というわけで症状の見た目は劇的に良くなったものの、痒みは依然として強い。 今は季節の変わり目ということもあって体に負担がかかっているからか、しんどい。 この痒みがあと少しでもマシになってくれたらかなり行動範囲を広げられるんだが。

とはいえ、それも今まで通り粛々と糖質制限と運動を続けていれば治まっていくだろう。 そんなに焦ることはない。 ゆっくりやっていこう。 なぜならアトピーは放っとけば勝手に治るのだから。 焦ると痒くなるし。

また進捗があれば書きたい。

RPGを英語でプレイすると楽しい上にめっちゃ勉強になる

どうもTAKUYAです。

自分は英語の読み書きは普段からよくするのであんまし問題ないんだけど、日常会話は全くといってダメだ。 だって普段しないし。 文章と会話で使う語彙や表現は異なる。 それに耳がついてこない。 なんとか日常会話の英語を自分の生活に取り込みたい。

学びたいことと興味と紐付ける

英会話が学びたいのなら英会話サービスを使えばいいのかもしれない。 でも毎日はさすがに無理だし、なにより自分は勉強が目的だと何事も続かない。 例えばプログラミングを学ぶためにセミナーに通うとか、今だと最近流行りのオンライン学習サービスを利用したりとか。 自分はそういうのは面白くなくて続かない。 いわゆる「勉強」が嫌いなのだ。

だからいつも新しいことを学ぶ際は、興味のあるものと紐づける。 Raspberry PiとGo言語が学びたければ、部屋の空気をセンシングする装置を作ったりとか。 逆に学習サイトを使ってる人はよく続くなぁと感心する。 それだけのモチベーションがあれば今すぐにでも何か実際的な問題を学びながら解決できそうなのに。 人それぞれだな。

iOS版「Life Is Strange」で勉強する

f:id:craftzdog:20181002153156p:plain

話が逸れたけど、最近、英語の日常会話を普段取り入れるいい方法を見つけた。 それは「Life Is Strange」だ。

iOSでも遊べるようになったので、言語設定を英語にしてiPad Proでプレイし始めたんだけどめっちゃ面白い。その上、英語の勉強にもなる。 主人公は18歳になったばかりの女の子で、学校のクラスメートとか親友のクロエとの日常会話が沢山繰り広げられる。 それを理解しないとゲームは楽しめないし進めるのも難しい。 でも7割ぐらい理解すればだいたい雰囲気でわかる。

もし分からない単語が出てきたら、以下のようにゲームを立ち上げたまま辞書を引いて調べている:

f:id:craftzdog:20181002153218p:plain

マルチタスクめっちゃ便利。 毎日息抜きにちょいちょいプレイしてる。

その他のおすすめのゲーム

過去にやったやつだとこの辺が面白かった:

Superbrothers

f:id:craftzdog:20181002155227p:plain

レトロなドット調のゲーム。 マップが美しい。 RPGによくある古文調の英語が楽しめるが、日常では全く役に立たない。

Lumino City

f:id:craftzdog:20181002155238j:plain

Lumino City

Lumino City

  • State of Play Games
  • ゲーム
  • ¥600

ステージやキャラクターがすべて折り紙のペーパークラフトアニメーションという狂ったゲーム。 セリフの中に多くのヒントが隠されている。


海外ドラマや映画は興味がわかなくて辛いという人は、海外のゲームを英語のままやってみてはいかがだろうか。

iPhoneケースで経年変化を楽しむ

f:id:craftzdog:20180923162310j:plain

自分の好きなコンセプトに「経年変化」が挙げられる。英語ではPatina(パティーナ)と呼ぶ。

デジタルの世界ではなかなか味わいにくい要素だ。 ビットはいつだって0か1しか表現しないからだ。 それでも、使い込むことで手に馴染む感覚や、蓄積されたデータがもたらす新たな発見、時間をかけてカスタマイズした設定も、一つの経年変化と呼べるだろう。 なぜなら、それらは一人ひとり違う結果をもたらすからだ。 自分の作っているノートアプリも、経年変化が味わえるアプリの一つだと思っている。

ところで、新しく買ったiPhone XSはゴールドを選んだんだけど、正直いってあまりときめかなかった。 色味が思ったより落ち着いていてピンクがかっている。あまり好みではない。これなら白か黒を選べばよかった。 あと、テーブルに置いた状態で操作すると、背面の出っ張ったカメラが隙間を作って、タップするたびにガタガタ鳴って揺れる。 この2つの不満点を解決すべくケースを買うことにした。

選んだのはApple謹製のレザーケース。 色はサドルブラウンを選んだ。

www.apple.com

レザーだから、使い込んでいくうちに色味が変わって味が出る。 スマホのケースにレザーを選んだのは初めてなので、その経年変化が楽しみでしょうがない。

Oliurというロンドンのデザイナーが、同じケースを8ヶ月使い込んだ結果をYouTubeで紹介していた。 これがかなりかっこいい。傷すら味になるのがレザーの良さか。

www.youtube.com

最低でも1年は使うから、変化を見るためにも記録として今の状態を写真で残しておこうと思う。

f:id:craftzdog:20180923164730j:plain

エッジに埃が溜まりやすいかも

下の写真をご覧になると分かるが、ケースの高さがiPhoneのサイズよりも大きめに作られているので、画面を包み込むように少しはみ出ている。

f:id:craftzdog:20180923164742j:plain

f:id:craftzdog:20180923164816j:plain

この出っ張りは落とした時に画面を守ってくれそうな利点がある反面、少し使った感じではこの隙間に埃がたまりやすい。 なので、定期的にはずして掃除してやる必要がありそうだ。

10万以上もする高級品だから、大事に使いたいと思う。 8ヶ月後が楽しみだ。

iPhone XSはスマホ付きカメラだ

どうもTAKUYAです。

今日、11万円もするカメラが届いた。iPhone XSっていう名前の。

これがめっちゃ薄型で、撮った写真を確認する用の画面はなんとedge-to-edgeの全面タッチパネルで、贅沢にもOLEDが使われている。

さっそく手近なものを撮ってみた:

いいボケ感。この被写界深度は撮った後でも調整できる。前代未聞。もうちょっとボカしたかったなぁなんて事が無くなる。

なんでそんな事ができるかと言うと、カメラなのにもの凄い高性能のA12 BionicっていうCPUを搭載していて、独自のAI技術によって被写体と背景を識別しているからだそうだ。カメラのためにそこまでやるか。

雨だし夜だけど、さっそく公園に出かけてちょっと撮ってきた。

結構暗かったのにノイズも少ない。街灯の色が白飛びせずに、はっきり分かる。

撮ってその場でインスタみたいなフィルタがかけられる。パソコン要らない。

街灯に照らされて金色に輝く地面。

現実で見た感動をより確かに伝えられる。 素晴らしいカメラだ。


冗談はこの辺にしておいて、今日届いたiPhone XSのカメラを試したというお話でした。

カメラの凄さについてはアップルのキーノートでも10分弱かけて熱弁していた。

このレベルまで来たら本当にカメラ市場も大きく侵食するだろう。先日以下のようにツイートした:

実際使ってみて、自分はもうコンデジ買わなくていいやと思えた。

久しぶりにデジタルデバイスで感動した。

やはりスマホは楽しい。

Raspberry Piとgo言語で部屋のコンディションを記録してグラフ化した

自分のプロダクトばかり作っていると技術の幅も狭まってしまうので、定期的に趣味がてら題材を見つけて普段使わない技術に触れている。

自分にとってベストな部屋のコンディションが知りたい

今回は兼ねてからやりたかった、自分の部屋の温度や湿度などのコンディションを数分ごとに記録してグラフで可視化すること。 体調と空気の質は関連が深い。 気圧が低いと頭痛を起こす人もいるし、ジメジメしていると汗が気になって仕方がないという人もいるだろう。 そういう関係性を客観的に調べられたら、自分にとって最もパフォーマンスが出る条件がわかる。 まずはともあれ記録をとってグラフ化するところから始めようというわけだ。

使用機材

f:id:craftzdog:20180213103545j:plain

まだ届いていないけど、CO2センサーをAliExpressで買ったので、それも追々組み込む予定。

Go言語でセンサーデータを取得してCloud Firestoreに格納する

Go言語は前々から気になっていた言語。 やはりチュートリアルをやっただけではしっくりこないので、こういう実用的な題材で組むと一気に理解が進む。

Cloud Firestoreも気になっていたGoogleクラウド向けデータベース。 PouchDBみたいにオフライン同期に対応している点が面白い。 ちょっと複雑なクエリやComposite Indexingにも対応している。 まだBeta段階のようだけど、完成度は申し分なく、問題なく使える。

今回のプロジェクトを通して、この2つの技術と仲良くなりたい。

センサーデータの取得

ANAVIのセンサーキットにはサンプル集GitHubで公開されている。 これをそのまんま使って、実行結果をGolangによる簡単な文字列処理を経由してデータを取り出す。 例えばBMP180センサーのデータは以下のように取得する:

package sensors
// Temperature and Pressure sensor

import (
    "log"
    "os/exec"
  "strings"
  "strconv"
)


func GetTempAndPressure() (temperature float64, pressure float64, err error) {
    out, err := exec.Command("/home/pi/anavi-examples/sensors/BMP180/c/BMP180").Output()
    if err != nil {
        log.Fatal(err)
    }

  s := string(out[:len(out)])
  lines := strings.Split(s, "\n")
  lineTemp := lines[1]
  linePress := lines[2]

  tempStr := strings.Split(lineTemp, ": ")[1]
  temperature, err = strconv.ParseFloat(tempStr[0:len(tempStr)-2], 32)
  pressStr := strings.Split(linePress, ": ")[1]
  pressure, err = strconv.ParseFloat(pressStr[0:len(pressStr)-4], 32)

  return
}

Firestoreへの格納

各センサーの取得スクリプトが書けたら、以下のようなmainスクリプトを書いてFirestoreに記録する:

package main

import (
  "./sensors"
  "log"
  "time"
  "context"
  firebase "firebase.google.com/go"
  "google.golang.org/api/option"
)

type RoomData struct {
  temperature float64
  pressure float64
  humidity float64
  light float64
}

func recordData (roomData *RoomData) {
  ctx := context.Background()
  opt := option.WithCredentialsFile("<YOUR-SERVICE-ACCOUNT-KEY.json>")
  app, err := firebase.NewApp(ctx, nil, opt)
  client, err := app.Firestore(ctx)
  if err != nil {
    log.Fatal(err)
  }
  collection := client.Collection("conditions")

  _, _, err = collection.Add(ctx, map[string]interface{}{
    "createdAt": time.Now(),
    "humidity":  roomData.humidity,
    "light":  roomData.light,
    "pressure": roomData.pressure,
    "temperature": roomData.temperature,
  })
  if err != nil {
    log.Fatalf("Failed adding alovelace: %v", err)
  }
}

func main () {
  log.Println("Start capturing my room confitions")

  temperature1, humidity, _ := sensors.GetTempAndHumid()
  log.Printf("Temperature:  %f C\n", temperature1)
  log.Printf("Humidity:     %f %%rh\n", humidity)

  light, _ := sensors.GetLight()
  log.Printf("Light:        %f Lux\n", light)

  temperature2, pressure, _ := sensors.GetTempAndPressure()
  log.Printf("Temperature:  %f C\n", temperature2)
  log.Printf("Pressure:     %f %%rh\n", pressure)

  data := RoomData{
    temperature: temperature1,
    pressure: pressure,
    humidity: humidity,
    light: light,
  }

  recordData(&data)
  log.Println("Finished recording data!")
}

あとは3分ごとにこいつを実行するようにcronで設定すれば完成。 Firebaseのコンソールからデータが正しく記録されていることを確認する:

f:id:craftzdog:20180904154019p:plain

グラフ描画webフロントエンドを作る

デスクトップとモバイルのChromeで動けばよしとする。 最近はアロー関数が動くのでメソッドチェーンが書きやすい。 シンプルなプログラムなのでbabelもwebpackも使わず、Vanilla JSで行く。

ひとまず完成図がこちら:

f:id:craftzdog:20180904154436p:plain

とてもいいんじゃないでしょうか!

グラフはhighcharts.jsを使用。 Mixpanelとかでも使われているグラフ描画ライブラリ。 とても簡単にハイクオリティなグラフが書けるのでオススメ。 非商用利用なら無料。

ソースは以下のような感じ:

HTML:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
    <title>Craftzdog&apos;s Room Conditions</title>

    <script src="lib/highcharts.js"></script>
    <script src="lib/dark-unica.js"></script>
    <script src="lib/moment.min.js"></script>
    <script src="lib/moment-timezone-with-data-2012-2022.min.js"></script>

    <script src="lib/firebase-app.js"></script>
    <script src="lib/firebase-auth.js"></script>
    <script src="lib/firebase-firestore.js"></script>

    <link rel="stylesheet" href="lib/semantic.min.css" />
    <link rel="stylesheet" href="lib/semantic-icon.css" />
    <link rel="stylesheet" href="./app.css" />
  </head>
  <body>

    <div class="ui container">
      <h1 class="align center">My Room Conditions <i class="home icon"></i></h1>
      <div class="ui stackable grid">
        <div id="temperature" class="eight wide column" style="width:100%; height:400px;"></div>
        <div id="humidity" class="eight wide column" style="width:100%; height:400px;"></div>
        <div id="pressure" class="eight wide column" style="width:100%; height:400px;"></div>
        <div id="light" class="eight wide column" style="width:100%; height:400px;"></div>
      </div>
    </div>

    <script src="./app.js"></script>
    <script>
      retrieveData().then(data => {
        renderChart(data)
      })
    </script>
  </body>
</html>

JS:

// Initialize Firebase
var config = {
  apiKey: '****',
  authDomain: '***.firebaseapp.com',
  databaseURL: 'https://***.firebaseio.com',
  projectId: '***',
  storageBucket: '***.appspot.com',
  messagingSenderId: '***'
}
firebase.initializeApp(config)
var db = firebase.firestore()
const settings = { timestampsInSnapshots: true }
db.settings(settings)
db.enablePersistence().catch(function(err) {
  if (err.code == 'failed-precondition') {
  } else if (err.code == 'unimplemented') {
  }
  console.error('Failed to enable persistence:', err)
})

window.retrieveData = function() {
  var conditions = db.collection('conditions')
  return conditions
    .orderBy('createdAt', 'desc')
    .limit(300)
    .get()
    .then(querySnapshot => {
      var items = []
      querySnapshot.forEach(doc => {
        items.push(doc.data())
      })
      items = items.map(item => {
        return Object.assign({}, item, {
          temperature: item.temperature - 1.4,
          humidity: item.humidity + 8.2
        })
      })
      return items.reverse()
    })
}

window.renderChart = function(items) {
  const lastItem = items[items.length - 1]

  const basicOptions = {
    time: {
      timezone: 'Asia/Tokyo'
    },
    xAxis: {
      type: 'datetime'
    },

    legend: {
      layout: 'vertical',
      align: 'right',
      verticalAlign: 'middle'
    },

    plotOptions: {
      series: {
        label: {
          connectorAllowed: false
        },
        pointStart: 2010
      }
    },

    responsive: {
      rules: [
        {
          condition: {
            maxWidth: 500
          },
          chartOptions: {
            legend: {
              layout: 'horizontal',
              align: 'center',
              verticalAlign: 'bottom'
            }
          }
        }
      ]
    },

    theme: {
      chart: {
        backgroundColor: {
          linearGradient: { x1: 0, x2: 1, y1: 0, y2: 1 },
          stops: [[0, '#2a2a2b'], [1, '#2a2a2b']]
        }
      }
    }
  }

  Highcharts.theme.chart.backgroundColor = {
    linearGradient: { x1: 0, x2: 1, y1: 0, y2: 1 },
    stops: [[0, '#2a2a2b'], [1, '#2a2a2b']]
  }
  Highcharts.setOptions(Highcharts.theme)

  Highcharts.chart(
    'temperature',
    Object.assign({}, basicOptions, {
      title: {
        useHTML: true,
        text:
          '<i class="thermometer icon"></i> Temperature: ' +
          lastItem.temperature.toString().substr(0, 4) +
          ' ℃'
      },
      yAxis: {
        title: {
          text: '℃'
        }
      },
      series: [
        {
          showInLegend: false,
          name: 'Temperature',
          data: items.map(item => [
            item.createdAt.seconds * 1000,
            item.temperature
          ])
        }
      ]
    })
  )

  Highcharts.chart(
    'humidity',
    Object.assign({}, basicOptions, {
      title: {
        useHTML: true,
        text:
          '<i class="tint icon"></i> Humidity: ' +
          lastItem.humidity.toString().substr(0, 4) +
          ' %rh'
      },
      yAxis: {
        title: {
          text: '%rh'
        }
      },
      series: [
        {
          showInLegend: false,
          name: 'Humidity',
          data: items.map(item => [
            item.createdAt.seconds * 1000,
            item.humidity
          ])
        }
      ]
    })
  )

  Highcharts.chart(
    'pressure',
    Object.assign({}, basicOptions, {
      title: {
        useHTML: true,
        text:
          '<i class="sun icon"></i> Pressure: ' +
          Math.round(lastItem.pressure) +
          ' hPa'
      },
      yAxis: {
        title: {
          text: 'hPa'
        }
      },
      series: [
        {
          showInLegend: false,
          name: 'Pressure',
          data: items.map(item => [
            item.createdAt.seconds * 1000,
            item.pressure
          ])
        }
      ]
    })
  )

  Highcharts.chart(
    'light',
    Object.assign({}, basicOptions, {
      title: {
        useHTML: true,
        text: '<i class="lightbulb icon"></i> Light: ' + lastItem.light + ' lux'
      },
      yAxis: {
        title: {
          text: 'Lux'
        }
      },
      series: [
        {
          showInLegend: false,
          name: 'Light',
          data: items.map(item => [item.createdAt.seconds * 1000, item.light])
        }
      ]
    })
  )
}

Future Work

今後はこれらのデータをもとにして、

  • 一日の平均、max、minの表示
  • 体調が良かった日、悪かった日の記録
  • アラート機能 (気圧が低すぎるとか)

などを追加していきたい。

脱ステ脱保湿のアトピー治療でいい感じに治ってきた

f:id:craftzdog:20180820151019j:plain

どうもTAKUYAです。前回のアトピー治療の話からしばらく経ったので近況を報告したいと思う。

前回のあらすじ:

  • 仕事のストレスが原因だと思っていたけどどうやら違う
  • 本を読んで、自分は「ステロイド依存性皮膚症」である事を知る
  • ステロイドが対症療法でしかないどころか、むしろ体の免疫を弱めていることが判明
  • アトピーはそもそも自然に治る病気だから、何もしないのが一番
  • ステロイド・脱保湿の自然療法を始める
  • 薬と保湿をやめたことによって起こるリバウンド症状がとても辛いが、がんばって耐える
  • 藤澤重樹先生の生活指導に従って出来るだけ早く治るように努める

脱ステ脱保湿を始めてから2ヶ月弱が経った。 結論から言うと、辛いリバウンド症状のピークは越えた。 今は徐々に症状が治まりつつある状態。 倦怠感もほとんど無くなり、仕事への集中力も少しずつ戻ってきた。 何より寒気が無くなったので、クーラーの効いた電車や室内にいてもガタガタ震えなくて済むようになったのが嬉しい。

症状の変化の例

症状が悪化しているのか回復しているのかを客観的に評価できるように、数日ごとに各部位の写真を撮って記録した。 その結果、リバウンド症状とはどのように発生してどのように落ち着いていくのかが分かる貴重なデータが取れた。

ここでは顔を例にとって紹介したいと思う。恥ずかしいけど、誰かの参考になれば幸いだ。ちょいグロなので大丈夫な人だけ以下のリンクを開いてほしい。

各写真の下には、脱ステ脱保湿を始めてからの日数が示してある。

  • 6〜8日目: 口の周りがとても荒れて口が開けないほどに痛くなった。ほとんど吸うようにしてご飯を食べていた。
  • 10〜16日目: カサカサになり皮がめくれて白くなる症状が顔全体に広がる。これをフレーク現象という。16日目がピーク。先生は「いい感じだねぇ〜」と仰っていた。そう、これは治るためには必要不可欠な「過程」であり、悪化ではないのだ。見た目はひどいものだが、皮膚は必死に再生しようとしている証拠なのだ。喜ぶべき変化。
  • 18〜28日目: フレークが徐々に減る
  • 〜47日目: 赤みが少しずつおさまる。

そして現在、まだ口の周りに少しフレークが残って、痒みもあるが、プロトピック軟膏などの薬や保湿を一切しなくても肌の状態を保てるようになった。嬉しい。

人によっては腫れたりするみたいだけど自分は幸いそんなことは無かった。

顔は代謝速度が速いからなのか、一番最初に症状が落ち着いた。 まだ他の部位は炎症が残っている。でも滲出液はほぼ出なくなって乾いたし、あとは痒みに耐えつつゆっくり回復を待つのみだと思われる。

リバウンド症状の程度や長さは、ステロイドの強さや処方期間によるとされている。 先生によると、自分は治るのが結構早いらしい。 確かに、ネットの脱ステ体験ブログなどを読んでみると、ピークを越えるのに最低3ヶ月は要している。 おそらく、以降で書く生活改善施策を徹底してやったからだと思う。 ただ脱ステ脱保湿を闇雲にやっているだけでは、時間を無為に過ごすことになるから注意が必要。

リバウンド症状で自分のステロイドホルモンを蘇らせる

ここで、なぜリバウンド症状が起こるのか説明しておきたい。

ステロイドとはホルモンの一種で副腎または表皮細胞から分泌されるもの。 環境の変化に応じて必要な量を適切に分泌して体の免疫や血糖、血圧などのバランスを保っている。 ステロイド剤を皮膚に塗ると体内に吸収されて一ヶ月かけて体から抜けていく。毎日塗っていると常に体内にステロイド剤が体の中に溜まることになる。 すると、自分の本来のステロイドホルモンがさぼってしまって、自己調節力が衰える。

このような状態でステロイド剤をやめると、ステロイド剤が一ヶ月かけて徐々に抜けていく一方で、ホルモンの自己調節力が弱っているので当分の間ステロイド不足が続く。 それがリバウンド症状を引き起こす。

ステロイドホルモンはその状態の「間違い」に気づき、徐々に自己調節力を取り戻していく。 自然療法は、サボってしまったステロイドホルモンの本来の働きを取り戻す療法なのだ。 上記の例で紹介したように、多少時間はかかるものの、自分でステロイドを分泌できるようになったら、外用も内服もする必要はなくなる。

脱保湿も同じ原理で、外から保湿するもんだから本来の保湿能力がサボってしまう。 ただでさえ元から乾燥肌なのに、自分の保湿能力を甘やかすことによって事態をより悪化させているのだ。 こんな話がある。日本は高温多湿なのに対してヨーロッパはカラッとしているので、移住したばかりのころは肌がとても乾燥する。 でも保湿クリームなどに頼らずそのまま過ごしていると、肌が適応して潤ってくるのだという。 自分の本来の保湿能力を取り戻すために脱保湿が重要。

また、保湿することによってリバウンド症状を長引かせてしまう。 痒いけど、出来るだけ皮膚を乾燥させて代謝を促進させる必要がある。 見た目が悪いからといってマスクや手袋などで隠すと反って保湿になってしまうから、何もつけないで堂々と外に出よう。 あなたはあなたのままで充分素晴らしい存在なのだから何も隠す必要はない。

リバウンド症状を乗り越えるための生活習慣

藤澤先生の生活指導は、辛いリバウンド症状をできるだけ軽くして、早く終わらせる効果がある。 もらった資料や指示を要約してここに紹介したい。

糖質制限とケトン体生活で抗炎症化

一日の摂取糖質量を 40g 以下に抑える。かなり厳しめの糖質制限だが、徹底しなければならない。 お米、小麦をはじめ、砂糖、イモ類など糖質の多い食べ物を取り除いていく。 できればスーパーの惣菜などは買わずに自炊する。 おいしく制限するにはMEC食がおすすめ。MEC食とは、ミート・エッグ・チーズを中心とした食生活のことで、渡辺信幸医師が提唱している。 いくつか書籍が出ているのですぐに始められる。

肉食やせ! ―肉、卵、チーズをたっぷり食べるMEC食レシピ111

肉食やせ! ―肉、卵、チーズをたっぷり食べるMEC食レシピ111

なぜ糖質制限が大事なのかというと、糖質を取ることによる血糖値スパイクが炎症を引き起こすからだ。 つまり、糖質を摂ると血糖値が急激に上がり、それを抑えるために膵臓からインシュリンが過剰分泌される。 すると体内に大量に活性酸素(細菌感染などによって起こる炎症やアレルギー性炎症反応を促進する酸化力のある酸素)が産生されて、様々な血管へのダメージを与える。 糖質制限によってこの血糖値スパイクによる活性酸素の産生を軽減させる。

人の主なエネルギー源は糖だけではなく、脂質由来のケトン体というものがある。 例えば赤ちゃんはケトン体を主なエネルギー源として生きている。 人類が農耕を始める以前、狩猟採集をしていた時代はこのケトン体を主なエネルギーとして生きてきたと言われている。 ケトン体は、ブドウ糖と同じく血液脳関門を通過して、副作用や毒性がなく、抗炎症、抗老化、抗糖化、抗酸化、抗がん化作用がある。 心筋や神経が保護され、抗不安作用で精神が安定する。

ケトン体についての詳しい話は以下の書籍で学ぶことが出来る。

糖質制限によって体内のケトン体を増やして、活性酸素を減らして抗炎症作用を享受する。 これが辛いリバウンド症状を和らげてくれるというわけだ。

糖質制限(ケトン体効果)をナメてはいけない。 別の患者さんの話で、いい感じに症状が抑えられてきた時に、間違えて甘栗を大量に食べてしまったらしい。 すると数日後に症状がぶり返して、大変なことになったそうだ。 それぐらい効果がでかい。

運動!運動!運動!

汗をかいてとにかく新陳代謝を上げる。 ただでさえ運動不足で鈍った体を鍛えて、基礎代謝を上げる。 そうすれば皮膚の新陳代謝スピードも上がり、回復が早まる。

自分は出来る限り毎日6キロジョギングして、3キロウォーキングしている。 雨で外に出られない時は、座布団の上で足踏みを30分間している。 EDMとか適当に流しながらやるとテンションが上がって続けやすい。

アスリートにアトピー無し

体をあまり洗わない

毎日お風呂に入り、体をゴシゴシ洗うのは良くない。 身体を守ってくれる常在細菌を洗い流してしまうからだ。 ただでさえ乾燥肌なアトピー患者は、そもそも汗をかいたってすぐに乾いてサラサラになるし、別に臭ったりもしない。汚れにくい体質なのだ。 自分の汗・垢・皮脂をもっと大切にして、皮膚バリアを保つ必要がある。

チベットの人は一ヶ月に一度しか風呂に入らないが、アトピーはゼロだそうだ。 毎日風呂に入らなければならないというのは、ただの先入観にすぎない。

先生はタモリ式入浴法を推奨している:

この入浴法は、ただ湯船にぬるめのお湯をためて10分間半身浴するだけ、というもの。 それだけで汚れの80%は取れるとタモリ氏は言っていて、医学的にも理にかなっていると評価されているらしい。

自分は結局症状がひどい時は一切風呂に入らずに過ごした。 流石にジョギングで汗をかいて気持ち悪いと感じた時はシャワーでサッと流すだけにとどめた。 それだけで十分スッキリしたし、体臭も気にならなかった。

とにかく自分の皮膚バリアを取り戻すことに集中することが大事。

自律神経を整える

イライラしたり焦ったり緊張したり、何かしらストレスを感じると痒くなる経験がある人は多いだろう。 これは、ストレスを感じると自律神経の交感神経が優位に傾くため。 自律神経が体に及ぼす影響はとても大きく、現代人は何かと交感神経に過剰に傾きすぎる傾向がある。 それがどのように痒みにつながるかというと、次の通り。

白血球は、血液中をめぐって異物から体を守っているが、細かく分類すると 顆粒球、リンパ球、マクロファージの3つの免疫細胞がある。 このうち、顆粒球は異物を取り込み、みずからが持つ分解酵素活性酸素によって処理する。 顆粒球の数と体内に侵入してくる細菌のバランスがいいときは何も問題はないが、あまり細菌がないのに、交感神経が過剰に優位になることで顆粒球が増えすぎてしまうと、健康維持に必要な常在菌まで殺してしまい、かえって免疫力を下げることになる。 また、使われない顆粒球が残ってしまうことも問題。 顆粒球の寿命は二~三日と短いうえ、顆粒球は死ぬときに、持っていた「活性酸素」をばらまいて細胞を傷つけてしまうから。

以上の理由から、交感神経と副交感神経のバランスを保つことが大事。 その最も効果的な方法は、焦らずおちついて「ゆっくり動作」を心がけること。 時間にも余裕を持って行動して、食事はゆっくりよく噛んで摂る。 呼吸は深くゆっくりと。猫背をやめて姿勢を正すだけで胸が開いて呼吸が深くなる。 そして早寝早起きのリズムを保つ。

自律神経に関する体への影響や、どうすれば副交感神経を優位に保てるかは、小林弘幸氏の以下の書籍が参考になった:

なぜ、「これ」は健康にいいのか?

なぜ、「これ」は健康にいいのか?

普通に健康になるという事

リバウンド症状はとにかく辛い。生きた心地がしない。 孤独だし、周りの理解やサポートが必要。

  • 強い倦怠感の中、立ち上がってスーパーに買物に行くことができたなら、最大限に自分を褒めてやろう。
  • 汗をかくと体中が痒くなるけど、ジョギングに行けたら、「おつかれ自分!」と労ってやろう。
  • フレークが発生したら「自分の体が治ろうとしている!」と前向きにとらえて、フレークが収まってきたら「自分の体すごい!」と褒めてやろう。

痒みは大人であっても我慢できるものではない。藤澤先生は掻くなと言わない。 何度も掻き壊してしまっても、皮膚は不思議と徐々に強くなっていく。

そうやって少しずつ変化する体と向き合っていくうちに、ピークは乗り越えられる。

自分もまだ普通の生活が送れるようになった訳ではないけど、ゴールが見えてきたのでかなり気が楽になった。 久々に母親と電話したら、「あんた、明るくなったな」と言われた。 たぶん毎日運動しているお陰だと思う。 7kgも痩せて体脂肪率は5%。もともと痩せ型だったので、学生時代の体型に戻った。 この治療を通じて、アトピーだけでなく精神も肉体も健康に生まれ変わっているのを感じている。

夜ぐっすり寝て、朝ちゃんと起きられる事。 そんな普通の健康な生活が、当たり前じゃないという事。 俺は取り戻すぞ。

アトピー治療に専念している

ひじょーに個人的な内容。 持病のアトピー完治に向けて、脱ステロイド・脱保湿の自然療法に挑戦していて、今日で35日目。 徐々にだけどリバウンド症状を乗り越えて回復しつつある。

ステロイドが悪夢の根源

以前、30連休を宣言して取った:

blog.craftz.dog

この休みの裏目的は、持病のアトピー性皮膚炎を完治させることだった。

徐々に悪化傾向にあること、少し追い込みをかけると容易に悪化すること、強い薬を処方されていること、その薬を塗る負担、通院の負担、全てがもう我慢出来ないレベルに達しようとしていた。

それまで、自分のアトピーの主な原因は「仕事のストレス」なんじゃないかと思い込んできた。

もともと中学生ぐらいから顔が赤く腫れて痒い症状はあった。 でも全身に渡って湿疹が出来たのは、8年前に就職して上京してしばらく経った時が初めてだった。 そして近所の皮膚科に行って、ステロイドを出してもらい、一旦は落ち着くものの、外用を中止するとまたぶり返すということが起きるようになった。 それからはずっとステロイドが手放せなくなり、症状は徐々に徐々に悪化して薬の強度も増していくことになるのだった。 いくら塗っても治らない。焦りと不安を感じた。しまいには飲み薬の最強級ステロイドまで出されるようになった。 通院先の先生も「ストレスですね。仕事を休めば治りますよ」と言っていた。

30連休では、とにかくストレスを取り除くことに努めた。 色んな本を読んでは試して、一定の効果が得られた(これはまた別でネタにしたい)。 そうしてリラックスした日々を送れていたはずなのだけど、肝心のアトピーの症状は一向に良くならないではないか。 20日目ぐらいを迎えたあたりで、自分は本質的になにか間違えているんじゃないかと思い始めて、いろいろアトピーの治療法について調べ始めた。 すると色々と驚愕なことがわかった。 以下の書籍が特に参考になった:

9割の医者が知らない 正しいアトピーの治し方

9割の医者が知らない 正しいアトピーの治し方

これによれば自分のような成人型アトピーの正体は、「ステロイド依存性皮膚症」ということだ。

ステロイド依存性皮膚症は、ステロイドがあって初めて皮膚がまがりなりにも機能するが、それがなければ普通には機能できない状態 - 阪南中央病院皮膚科部長 佐藤 健二 医師

自分はステロイドを長期間塗布してきたことによって、皮膚のバリア機能が弱まり、その結果炎症に悩まされてきたのだった。本末転倒だ。 詳しい原理的な説明は同書籍に譲るとして、いかにステロイドが意味のない対処であるかが読めば分かる。

ステロイド・脱保湿に踏み切る

ステロイドがダメならどうすれば良いかというと、答えは「何もしない」だった。 アトピーというのは本来、自然治癒するものなのだ。 だから何も薬を塗らないし、保湿もしない。 そして体が本来持っている免疫力やバリア機能を取り戻して、炎症を少しずつ治していく。

ただし、長期間ステロイドを使い続けた人が突然中止すると、激烈に皮膚症状が悪化するリバウンド症状が待っている。 これが成人アトピー患者が乗り越えなければならない最も大きな試練。 肌がゾンビ化するし、正気を失うレベルの痒さだし、辛すぎて挫折する人も一定数いる。 とても忍耐と根性の要る治療法だ。

今後ステロイドには希望が微塵も見えないので、ここは覚悟を決めて脱ステロイド・脱保湿に挑戦することに決めた。 これが 6月28日 のことだった。

藤澤重樹先生の病院に通う

実はさっきの書籍の著者・藤澤重樹 先生のやっておられる藤澤皮膚科は練馬区大泉学園前にある。 なんという幸運…電車で4,50分で行ける距離にあった。 中には名古屋など遠方から通っている人もいるという。 さっそく診察を受けてみることにした。

予約制ではないので待ち時間がすごかった。

一連の事情を説明すると開口一番、「うーん、(脱ステ始めるのが)遅い!」と一喝された。笑

前の医者は薬を出すことしか考えてくれなかった事などいろいろ悩みを打ち明け、話を聞いてもらった。

そして、リバウンド症状を最小限に抑えつつ出来るだけ短期間で終わらせるための生活習慣の指導を受けた。 意外だったのは、糖質制限すること。糖質が炎症の大きな原因になっているらしい。 ブドウ糖ではなくケトン体を主なエネルギー源として生活していくことになる。 そして毎日運動して新陳代謝を上げること。

話の最中にいろいろプリントを渡された。口頭での説明を省くための資料のようだ。 この病院はインフォームド・コンセントを掲げているので、その一環なのだろう。 資料はとてもわかり易く、たまに読み返している。

動けない日々をなんとか乗り越えた

この一ヶ月は生きた心地がしなかった。まだ終わってないが。

徐々に悪化する症状。

顔が今まで見たこともないようなゾンビみたいになるし。

体液が滲み出て汚いし。

自律神経が一時的に狂うので、強い倦怠感と寒気に襲われる。

立ち上がると貧血症状が起こったり。

それでも生活するためにスーパーへ出かけて食材を買う。 他人に怪訝な目で見られても無視だ。 気にする必要はない。 俺は今必死で生きている。

毎日ジョギングを 3〜6 km。 ウォーキングを更に3 km。

糖質制限と毎日の運動で、体重と体脂肪率が以下のように激減した:

  • 体重: 62.2kg → 56.2kg (-6kg)
  • 体脂肪率: 12.9% → 5.2% (-7.7%)

腹の肉が全く無くなった。

f:id:craftzdog:20180803151849j:plain

そんな中、アプリの更新も一度だけ出来たし、ブログも一本書けた。

今回は仕事は休まない。むしろ、動けそうなら作業をする。その方が気も紛れていい。

自炊をがんばる

糖質制限はまじで効果がある。でも惣菜や加工品はたいてい砂糖が入っているから避けなければならない。だから自炊をがんばることになる。

以下のレシピ本がとても参考になった:

ケトン体でやせる&健康になる!味付け冷凍ストック・レシピ。 (マガジンハウスムック)

ケトン体でやせる&健康になる!味付け冷凍ストック・レシピ。 (マガジンハウスムック)

肉や魚にあらかじめ下味をつけて冷凍保存しておく手法は目からウロコだった。

実際に作ったご飯:

f:id:craftzdog:20180803152438j:plain

豆腐チャンプルー

f:id:craftzdog:20180803152456j:plain

シーザーサラダ (油揚げをトースターでカリカリに焼くことでクルトンの代用にするアイデアは脱帽もの)

f:id:craftzdog:20180803152617j:plain

BLTエッグ

こんな感じで、おいしく糖質制限が出来ている。まぁ、料理がちょい手間だけど治療のためだから文句言ってられない。

これらはここ数日つくったもの。だいぶ倦怠感が減ってきたかもしれない。

アトピーが治ったらまじで生産性が二倍になる

薬を塗る時間、通院の手間が今後なくなることを考えると、相当な無駄が省ける。 薬なしでも生活できるから、気軽に長期の旅行にも出られるようになる。

そうなった時の自分には、おそらくこれまでとは全く違う世界が広がっていると思う。 たったの数ヶ月我慢するだけで、文字通り人生が変わる。 こんなコスパのいい投資は無い。 だからやりきりたいと思う。

先生によればあと一ヶ月ぐらいでリバウンド症状は治まるだろうとのこと。 「信じます!」と言うと、先生は「信じるっつても、勝手に治るもんだからねぇ〜」と苦笑していた。 なんとも人を前向きにさせてくれる人柄の先生だなと思った。

ffmpegで動画を綺麗なgifに変換するコツ

先日、gifで動くモックアップ動画を作ってツイッターに投稿した。

英語でも同様のツイートをしたら以下のような質問が来た。

意訳: 「まじヌルヌル動くやん、どうやってんの?俺も前試してんけど無理やってんわー」

という訳でこちらにもティップスをシェアしたい。彼には既に伝えたので安心してほしい。

無料ツールのffmpegを使う

ffmpegというのは有名なフリーの動画変換CLIツール。一度知ったら手放せない。 macだったらhomebrewでインストールできる:

brew install ffmpeg

もっとも基本的な使い方は以下の通り:

ffmpeg -i input.mp4 output.gif

input.mp4output.gif に変換している。簡単や。

パラメータの調整が必要

しかし問題は、適切なパラメータを指定してやらないと綺麗に変換されないということだ。

以下は特に何も最適化せずに動画を変換した場合のアウトプット:

ffmpeg -i input.mov -lavfi "fps=12,scale=900:-1:flags=lanczos" -t 5 -y output.gif

f:id:craftzdog:20180713174417g:plain

  • fps=12, width=900, length=5s, size=445KB

なんかブツブツのパターンが見える。使えないこともないけどなんか違和感がある。

パレットを最適化する

gifは256色しか表示できない。なので、動画内で使われている色をあらかじめ計算してパレットを生成する。

ffmpeg -i input.mov -vf "palettegen" -y palette.png

これで palette.png というファイルが出来た。 このパレットファイルを使用して生成してみると・・

ffmpeg -i input.mov -i palette.png -lavfi "fps=12,scale=900:-1:flags=lanczos [x]; [x][1:v] paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" -y output.gif

f:id:craftzdog:20180713175101g:plain

  • fps=12, width=900, length=5s, size=1.3MB

スムース! あとはお好みのfps(フレームレート)やサイズを指定すればOK。 なぜファイルサイズが倍以上に増えたのかは、gifの仕様に詳しくないので分からない。

コマンド内で指定している謎の各パラメータはおまじないなので気にしなくてもOK。もしもっと凝った事がしたいなら、以下で紹介している参考元記事をどうぞ。

参考記事

ミルチャ・カントル展で「透明な主張」を読み取る @ 銀座エルメス

エルメスの建物なんてそうそう入らないのでとてもいい機会だ。

f:id:craftzdog:20180621194729j:plain

かっこいいオブジェがお出迎え。建物の外壁全面が、昭和な建物によく使われている格子状ガラスで作られている。すごい。

f:id:craftzdog:20180621194901j:plain

f:id:craftzdog:20180621194906j:plain

中から写すとこんな感じで、異空間な雰囲気がすてき。エフェクト無しです。

f:id:craftzdog:20180621195709j:plain

近くで撮ると、外の風景がぐにゃっと歪んで面白い。エルメスは時空の歪みの中に存在する。

さて、本題のミルチャ・カントル展はというと、展示物は2つ。

まずひとつ目は沢山の鉄製風鈴のようなものを吊るした作品。

f:id:craftzdog:20180621195128j:plain

実は入り口のドアとワイヤーで繋がっていて、ドアを開くと風鈴が揺れて音が一斉に鳴るという仕組み。

f:id:craftzdog:20180621195133j:plain

最初は気付かないで入るので、二度美味しい。

f:id:craftzdog:20180621195307j:plain

二つ目は映像。透明のプラカードを掲げて更新する様子がずっと映し出される。

f:id:craftzdog:20180621195408j:plain

謎すぎて意味がわからないけど、そこが良いなと思えた。

まるで「声なき声」を可視化したようなメッセージ性を感じた。

声の大きい者が目立ってばかりの時代を逆説的に批判するかのような。

f:id:craftzdog:20180621195614j:plain

三者三様の表情で立っているのが面白い。

スタッフの応対がエルメスすぎて緊張した。最高級や。


しかし銀座は少し歩くだけでユニークな建物に出会えて面白い。

f:id:craftzdog:20180621200005j:plain

f:id:craftzdog:20180621200011j:plain

f:id:craftzdog:20180621200015j:plain

f:id:craftzdog:20180621200022j:plain

よい散歩でした。


MENTA作者の入江さんと個人開発談義をしたら色々と気付きがあった

f:id:craftzdog:20180617110246p:plain

どうもTAKUYAです。 自分のように個人開発で実際にマネタイズをしている人は少ない。 入江さんは、自分と同じフリーランスで、最近受託を完全にやめて自分のサービスだけで食おうとしている人。 スキルセットも似ていて、デザインも自分でやる。 最近ローンチしたMENTAというスキルシェアリングのサービスも、デザインがしっかりしていて完成度が高い。 ちょうど入江さんが福岡から東京に来るとツイートしていたのでお茶に誘って、個人開発談義をしてきた。

うろ覚えではあるけど、印象に残った話を議事録形式でシェアしたい(本人許可取得済)。

入江さんの話

  • 受託開発の話
    • 顧問契約で毎月定額形式で契約して、工数を絞って長期的に関わると、新規プロジェクトでも関わりやすい
    • 自分のブログで受託の仕事を手伝ってくれる人を募集した
    • 人を雇うときは、いきなりガッツリ依頼するのではなく、例えば月単価二万円など小規模な単位で始めて、相性や能力を測る。よさそうならガッツリ依頼するとリスクも避けれるし、面倒な評価をしなくて済む
      • タスクリストを投げておいて、好きな時間にやってもらう
      • 報酬相応の働きをしてもらえればOK
      • 相手もそれは意識してやってくれる
    • 取り掛かり金(手付け金)を貰うと、キャッシュフローが健全化して良い
      • 意外と企業さんはそれを嫌がらないので有効
  • 入江開発室を有料で開いてみたら意外と沢山の入会があった
    • サラリーマンやフリーランスをしつつ自作サービスでマネタイズしたい人は沢山いる
    • そういう人たちに自分のサービスの企画からローンチ、集客の一部始終を見せることで刺激になり真似したくなるようなコミュニティを作ろうとしている
    • 別に有名じゃなくてもニーズがあればメンバーは集まる
  • MENTAの話
    • サイトのイラストは素材サイトで購入
    • メンターがリリース時に100人以上集められた理由
      • 事前に限定公開して、ローンチ後に受付を締め切ると宣言した(限定セール効果を狙った)
      • 有名どころの人に個別に声をかけて営業した
        • 相手に合わせた具体的なプランも併せて提案して興味を引く
    • ローンチ後はメンターが各自で宣伝活動をしてくれたので広まった
    • 目下の課題はメンティー(教えられる側/購入側)を集めること。そのための機能改善が必要
    • ローンチから10日ぐらいで既に売上40万、手数料が20%なので利益は8万円(おいしい)
      • 月数万円の単価の高いものがある
    • StripeはconnectというAPIで、銀行振込を自動化できるから便利
      • Pay.jpとかでは出来ない
      • 最近はJCBにもベータで対応していて素晴らしい (ただし円建てのみ)
  • 受託開発をやめてみた話
    • 自分のサービス開発に集中できるので効率は大幅に上がった
    • スイッチングコストが減るのはやっぱりでかい

TAKUYAの話

  • Inkdropの話
    • 海外ユーザの英語でのサポートが辛いのは最初だけ、使う言い回しが限られているのですぐに慣れる
    • Inkdropは一人で作っていることをウリにしているので、まだしばらくは一人でやっていく
  • React Nativeの話
    • RNはjsでアプリが組めるが、ハイクオリティなものを作ろうと思えば結局ネイティブの知識と経験が要る
      • 例えばjsはシングルスレッドなので、バックグラウンドで重い処理などをさせられない
      • バイナリの取り扱いがまだまだ弱い
    • 未だにCJK入力のバグがあったりして、まだまだ安定しない
    • RN自体のアップグレードがいつも地獄。何かしら問題が起きる。RNを採用する際は心中する覚悟で
  • Flutterはちょっと期待している
    • React Nativeと違い、UIにフォーカスしているところが面白い
    • UIKitみたいなハイクオリティなコンポーネント群が標準で提供されると強い
  • 今は個人開発者に置い風が吹いている
    • 一昔前は課金システムを組むことすら大変だった
    • 様々な開発ツール群が出揃って開発コストが格段に減って、一人でも余裕でサービスが組めるようになった
  • なぜ多くの人は「サービス開発したい」と口だけで終わってしまうのか?
    • 作りたいものがそもそもない
    • 「会社をやめたい」とか「楽してお金が稼ぎたい」という逃げのモチベーションで動いている。人を喜ばせるのとは別の方向を向いている
    • 手を動かさず本を読んでいる間は夢が夢のままでいられるので傷つかなくて済む
    • QiitaではContributionが1でもあれば上位15%。つまり手を動かさない人が基本は大半
  • 思いつくサービスのアイデアが「B-to-C」寄りで、広く浅いターゲットを狙ってしまう人々について
    • 自分からわざわざレッドオーシャンに飛び込んでしまう病
    • 承認欲求が邪魔をしている
      • 自分のアイデアを認めてほしい、否定されるのが怖い
      • 人気者になりたいという気持ちが前に出ている
    • 自信がない、傷つくのが怖い
      • できるだけ失敗したくない、無難な方に逃げている
  • MENTAへのアドバイス
    • メンターの人のポートフォリオが見たい
      • どんな実績を持つ人なのかもっと詳しく知りたい
      • 情報は定型化してシンプルに分かりやすくするのが大事
      • LinkedInが参考になる、でももっとシンプルにした方がいい
    • ブログと連携すると良いと思う
      • メンターが最近はどんな活動を実際にしているのかが見えると良い
      • アクティブさの可視化が重要
      • RSSとかで取ってくる

個人開発界の狩野派を作ろうとしている入江氏

話してみて感じたのは、自分と入江さんはバックグラウンドやスキルセットが似ている一方で、サービスづくりのアプローチは対照的だという事。 自分はとにかくコミュニケーションコストを削ぎ落とし集中する環境を作って、なんでも自分でこなしてアウトプットを最大化する戦略を取っている。 それに対して、入江さんは人を巻き込み能力を組み合わせて、自分は得意分野に集中することでアウトプットを最大化する戦略。

例えば受託のやりかたにもその違いが如実に現れている。 自分は以前書いた案件の効果的な見積もり方のように、効率性・緊急性・専門性・有効性の観点でいかに自分のパフォーマンスを市場にマッチさせて単価を最大化するかというアプローチ。つまりスケールアップ方式。 入江さんは、手が足りなくなったら適宜人材を募集して仕事を割り振って手を広げるアプローチ。つまりスケールアウト方式。 手付金をもらったり顧問契約をしてキャッシュフローをうまく流動化させていて、リスク回避の仕方もうまい。つまりマネジメントの能力が高い。 人を動かすのがうまいので、MENTAのようなサービスが自然と出てくるのは頷ける。

入江開発室の発想は更にユニークだと思う。 これは入江流の個人開発者を量産させる、いわばかつての画家集団の狩野派ならぬ入江派を作ろうとしているのではないかと思った。 つまり一つの「正解」を示して、それに弟子たちを追従させ、作った作品を流派として認めていくやり方。 それはとても日本的なやり方だし、将来性が高いと思う。 昨今のインターネットサロン文化も同じく狩野派に通ずるものがあると感じている。 入江さんはそのあたりの流れをいち早く汲み取って活動しているので、今後に期待。 デベロッパーって職人気質な人が多いので、こういうコミュニティを率先して作る人達は重宝されるだろう。

自分はマネジメントが特に弱いし、そこが伸びしろだとも思っている。 スケールアップ戦略はシングルコアの周波数と同様に限界がある。やはり最もスケールするのはマルチコアのスケールアウト方式だろう。 今後Inkdropが人を巻き込んで行くにあたって色々とヒントを得られて良かった。 入江さんありがとうございます。また喋りましょう。

30連休7日目の所感とヨッピー流たこ焼きが美味いという話

縦書きレイアウト版はこちら

30日間の休業を宣言してから、はや1週間が過ぎた。 自分は今、個人開発で作ったアプリの利益でだいぶ食えるようになったので、以下のように休みを宣言してゆっくりしている。

blog.craftz.dog

アプリのユーザフォーラムに "The author is on a 30-day vacation now" と書いたら、みんな気を遣ってくれてほとんど問い合わせが無くなった。連絡の際には冒頭に "Sorry for disturbing you" と断りを入れて下さるほど。理解に感謝。 上記記事のブコメで「サポート対応やバグ対応するのは "休み" とは言わない」という指摘があったけど、アプリは入念なベータテストを経てリリースしたので安定しているし、サポートはユーザさんのご理解のお陰で最低限に抑えられていて、とてもゆっくりできている。ありがたい。 休み中のユーザ増加や売上の変化についてはまた改めて書こうと思ってるけど、現状これといった悪影響は見られず、変わらず新規ユーザも課金ユーザも伸びている。継続課金バンザイである。苦労した甲斐があった。

というわけで、今のところいい感じにダラダラできている。昨日はついうっかりvimを開いてしまい、働いてしまったのでお休みノーカンとした。vimを封印しよう。

この一週間はとにかく何もしないようにした。どこにも出かけない。ひたすら寝て、散歩する。 それを続けたお陰か、ずっと体に溜まっていた慢性的な疲れが取れつつある。 体が軽いし、気持ちも晴れやかで、バイタリティーがどんどん充填されていくのを感じる。

こういう休み方ってなかなかできない。 中途半端に7日間とか14日間とかの長さで休みを取ると、根が貧乏性なもんだから、なんとか有意義に過ごそうとしていろいろ予定を詰め込んでしまう。 例えば旅行って楽しいけど、緊張するし、いろいろ調べたりするから体力を使う。 30日間あると、無計画に心置きなく何もしないことに集中できる。 アトピーによる肌荒れも少し治ってきた。

梅雨に入り、雨の音を聞きながらゆっくりと公園を散歩するのは楽しい。 先日京都で座禅体験した時に学んだことを実践している。 普段PCの作業で視覚的な刺激と思考思索に偏った生活を送っていたから、脳を休めて、普段あまり使っていなかった五感を再起動してその偏りを整える。 自律神経は緊張状態が続いて交感神経の方ばかり優位になっていたのが、ゆったりとリラックスして副交感神経の方へと傾く。 そして積もりに積もったストレスが外へ流れていく。

具体的な予定といえば唯一、飲み会があった。 久々に人と喋るのでテンションが上がって喋りすぎた。 あと最近、初めて会う人が既に俺の事を知っていることが増えた。 週休7日で働きたいのブログを読んで下さって知った方や、拙作アプリのユーザさんだったりする。ちょっと恥ずかしい。 でも個人開発の話で盛り上がれるので楽しい。

そんなこんなで、この調子で引き続きダラダラしていきたい。


自分は大阪出身なので、当然たこ焼きは小学生の頃から家族でたまに作って楽しんでいた。 たこ焼きは、冷凍のやつをソースも付けずに平らげるぐらい好きだ。出汁の味だけでイケる。 大阪は大概どこの駅前にもたこ焼き屋があるもんなんだけど、東京にはなくていつも欲求不満に苛まれていた。 ちなみに梅田に来たら「はなだこ」、難波なら「甲賀流」がおすすめ。

最近、ヨッピー氏が書いた美味いたこ焼きの焼き方の記事が話題になっていた:

r.gnavi.co.jp

これは真似せざるを得ないので、参考にして早速作ってみたら、自分史上最高に美味いたこ焼きが出来た。

f:id:craftzdog:20180615155733j:plain

ふわとろ。求めていた食感だ・・!

やってみて気づいた点を書いておく:

  • 電気式のたこ焼き器は火力が足りない
  • コンロの火力は最大で。遠慮してはならない
  • 「粉100g / 出汁400cc」だとビシャビシャになって崩れるので、「粉100g / 出汁350cc」ぐらいでいい
  • 速さ is 全て

電気式のやつしか持ってなかったんだけど、鉄板だけ外してコンロの上に載せたら問題なく使えた。

f:id:craftzdog:20180615165529j:plain

もしかしてコンロ用の方が熱効率が良くて、出汁400ccでもうまく焼けるのかな?

とりま一人たこパめっちゃ楽しい。おすすめ。