Remix がすごい & `remix-auth-twitter` を publish した

 

目次

Remix ついて

Remixは、あえて自分の言葉で表現するならば、超速のパフォーマンスが出るようチューニングされたモダンなWebサイト/アプリが、難しいことをしなくても出来上がってしまうフレームワークです。

まずは公式サイトのトップページをスクロールしていって、売りを一通り見てみることをお勧めします。

remix.run

Remixの特にすごいところ

  • Nested Routes*1
    • メニュー、リスト→詳細ビュー、モーダルなど、複数のオプションから一つにドリルダウンするようなUIパターンは多い。それを入れ子ディレクトリ構造とURL*2マッピングできるようにしたところが便利 & フレームワークにとって最適化のチャンスになっている
      • e.g. 例えば /users/na2hiro というURLにアクセスするとRemixは次の2つのルートを同時に描画し、結果を繋げて返す:
        • /routes/users.tsx はユーザ一一覧を左に、穴(Outletと呼ばれる)を右に描画。
        • /routes/users/$userId.tsx はuserId="na2hiro"であるようなユーザの詳細を描画。
      • c.f. Next.js では、 /users/[userId].tsx がユーザ一覧も詳細も全て表示しないといけない。 <Layout>のようなコンポーネントが必要になる。
  • loader (readするコード、GET APIとしても使われる) と action (writeするコード、POST APIとしても使われる)を書くと、いろいろなものが手に入る。例えば:
    • 速いSSR
    • Colocation: コンポーネントコード、表示に必要なデータ取得コード、データ送信先APIコードが一つのファイルに同居。
      • APIはどこにあるか、APIのURLはどうするかなど考えなくても良くなる。e.g. ユーザ詳細の変更コードは/users/$userId.tsx のactionに作れば良い。 
      • propsを子孫コンポーネントにpropagateする、とか考えなくてもいい場合が増える。
    • Revalidation: actionが行われるとデータが変更されたものとみなし、念の為に自動的にページ全体のloaderが呼び出されて再描画される。
      • 変更を呼び出したところ以外のコンポーネントにあるデータがstaleになる等と考えなくてもよい。
      • i.e. useSWR, React Query などのmutate機能などが吸収されている
      • i.e. reduxのようにデータをフロントエンドの一箇所で管理する必要も場合によっては薄れる。なぜならRemixがサーバからそれぞれのrouteに適宜送ってくれるから。
    • Race condition resolution: 
      • 連続するGETやPOSTが起こると先行するリクエストがキャンセルされ後者のものが採用される (<form>と同じ挙動)
      • race conditionの例:autocompleteのように1字打ち込まれるたびに検索をし直す場合、前に送ったリクエストの処理に時間がかかって最後に帰ってくると結果が古いものとなりおかしくなる。
    • JavaScriptが読み込まれる前にも(場合によっては完全に)動作する
      • GET/POST等のリクエストは<form>要素をラップした<Form>で宣言的に行うことが推奨されており、Remixは内部でfetchによるリクエストを行う。すごいのは、Formはformを描画するので、JSが無くてもなんとSPA上のfetchがformにフォールバックすることとなり、form submitがフルページ再読み込みとなり、動く。
      • 注意:ユーザはlocalhostに対してではなく、しばしば電車内のスマホから遠くのサーバにリクエストしている。
    • Caching: ブラウザのHTTP CacheをHTMLとAPIに利用できる。
      • c.f. useSWR, React Queryなど、ページを更新すると消えてしまうインメモリキャッシュより便利。
    • Vendor agnosticity: Node.js上で動くだけでなく、使っている依存によっては、Cloudflare Workersなどのedgeにもデプロイできるようになっていて、さらに爆速になる

すごいところを挙げ出したらキリがありません。

Remix Auth について

github.com

Remixが提供しているsessionを利用した、認証のためのコミュニティ製ライブラリで、認証方式や認証サービスをstrategyとして抽象化してあり、プラグイン形式でstrategyを誰でも実装できるようになっています。さらには、strategyライブラリのテンプレートが用意されており、作ったものを共有することが推奨されています。

Remix Auth Twitter について

今回このテンプレートを利用し、Twitter OAuth 1.0aに対応したstrategyを実装してライブラリとしてpublishしました。

github.com

これを作ることにしたのは、太古の昔にPHP+vanilla JSで書かれた将棋ったー*3をRemix+Reactで書き直す段階で、twitter認証のライブラリがないことに気付き、Remix Authのdiscussionでスレッドができて一ヶ月経とうとしていたのを見つけたためです。

金曜の夜にコーディングを始め、土曜の夜中にテストを大方書き終え*4publishしました

主な技術的困難は:

  • Node.jsの標準ライブラリに依存しないという制約
    • RemixはCloudflare Workersのようなedgeに対してもデプロイできるようになっており、そのようなアプリで使われることを考えると依存させたくない
  • Twitterの公式ドキュメントが間違いだらけ
    • 結局将棋ったーで使われている手元のPHPライブラリの発行するHTTPリクエストを見て正解を知った(ドキュメントではPOSTのはずがGETじゃないと動かない等)

Remix Auth Twitter Example について

`crypto-js` ライブラリ使ってて本当に動くのかという質問があったので、ライブラリ使用方法の例示のためにも、twitterログイン・ログアウトするだけのRemixアプリを作成し、Cloudflare Workersにデプロイしました。無事動いています🎉

https://remix-auth-twitter-example.na2hiro.workers.dev/

おわりに

Remix おすすめ!

www.youtube.com

マサラチャイを毎日のように淹れている (a.k.a. 最強のミルクパン)

きっかけのマサラチャイキット

それは、何の気なしに失効寸前のマイレージ*1をマサラチャイ体験キットに交換したのが始まりでした。

ここ2年ほどインド料理屋に頻繁に行っており、チーズナンやカレーを楽しんだ後にチャイを飲むことが多く、これまで家で飲むためにインスタントマサラチャイのようなものを買ってみたりはしたのですが、味が全然違っていて満足していませんでした。

届いたものは本格的なものでした。

mokshajapan.jp

内容物は次のようなものでした。

  • 数種類のホール(粉になっていない、そのままの)スパイス
  • それを手で砕くためのスパイスミル
  • アッサムCTC茶葉(Crush, tear, curl、つまり潰して破いて丸めた状態のもの)
  • それを量るためのティースプーン

今回これに従って淹れてみたところ、お店のようなチャイができました。ホールスパイスを砕くという部分がインスタントとの決定的違いということが一口で分かりました。

徒歩圏内のインド食材屋と、量産体制

定価4000円ほどのチャイキットがものの数日でなくなり、いざ買い足そうと近所のインド食材店に行ってみることにしました。こちらは以前から存在は知っていましたが、オフィスビルのような建物の2階でやや入りづらい感じ入ったことはありませんでした。入ってみると、スパイスがとても安い。成城石井の4分の1くらいの値段で売っています。たまたまYouTubeで見た埼玉のチャイ屋さんもこの店をオススメしていました。東京は便利な街だ。(以下はオンラインショップ)

www.mayabazaar.net

2000円もかからずに全スパイスを揃え、1ヶ月間以上チャイ飲み放題状態。(実際のところ牛乳代もスパイス代くらいかかっています)

f:id:na2hiro:20211225211609j:plain

インド食材店で買うチャイセット

また、スパイスを手で潰すのは疲れるので、ミキサーを使うことにしました。硬いものを砕くための硬い刃が付属していました。これでチャイの量産体制ができました。

絶対に(?)吹きこぼれない、焦げ付かないミルクパン

毎日作り続けていると、調理器具の不満がたまります。いくつか試してみて、次のような結果になりました。

f:id:na2hiro:20211220003244j:plain

Молоковарка: ロシアのミルクパン
  • 普通の鍋:時々吹きこぼれる。コップに注ぐときにこぼしまくる
  • Amazonで買ったミルクパン:油断するとすぐ吹きこぼれる。焦げ付いて皿洗いが大変
  • ロシア人御用達のмолоковарка:完璧

молоковарка(牛乳調理器)とは?こんな見た目です。

この鍋が特別なのは、層が二重になっており、鍋内部に水を入れて使う点です。火にかけると、鍋の中の牛乳やチョコレートなどの温める対象のものは、熱せられた水によって熱せられます。熱せられた水は循環して対象物を比較的まんべんなく温めるので焦げ付かないですし牛乳の場合は吹きこぼれません。また、水が沸騰した場合には、突起の部分が笛になっているので音でわかるというセーフガードつき。

f:id:na2hiro:20211225212530j:plain

内部に水を入れる部分と笛。縁が広がっていて注ぐときの切れ味もいい。

乳製品に親しみの深いロシアの人々にとっては当たり前ものもらしいです。

これを探すのは大変でした。ロシア語で探すと簡単にショップが見つかるのですが日本への発送が可能なサイトはなし。結局Amazon UKで購入し、価格2000円、送料4000円で合計6000円もかかりました。パッケージはポーランド語で書かれていました。

f:id:na2hiro:20211225212046j:plain

mleka = молоко (moloko) = 牛乳ということか

かれこれ2週間以上使っていますが非常にいい感じです。中に水を入れすぎた時は笛が鳴る時にお湯が吹きこぼれることがあるのですが、IHで火が消えるわけでもないので特に気にしないでやっています。

こんなに便利だしそんなに作るのが難しくもなさそうなものがなんで日本で売っていないのか、というのは、単純に日本人があまりミルクを熱さないからなんでしょうかね。

吹きこぼれに悩まされているチャイ同志(いるのか?)のために、買ったもののリンクを貼っておきます。

www.amazon.co.uk

今日の音楽

この記事を書いていた時に聴いていた音楽はこちらです。

プロコフィエフ ピアノ協奏曲第三番

www.youtube.com

*1:JALマイレージは結局一度シベリア航空の特典航空券に替えた以外は失効している気がします。

95連休を取った

ソフトウェアエンジニアが自主的な長期休暇を取った経過をまとめました。

95連休を取った状況

  • 1,2,3ヶ月間のまとまった無給休暇を取れるというコロナ禍で新設された制度を利用。特に承認などもなく申請したら通るような形だった。
  • 妻と同じ会社に勤めており、妻と同時に休暇を取った。休暇後は各々元のチームに戻り仕事に復帰できるという確信がある状態だった*1。実際、現在2人とも復帰した。
  • 休んだのは2021Q3(7,8,9月の3ヶ月間)
  • 蓄えは十二分にあり、ローンなどもなく、経済的心配はせずに休暇を過ごした。
  • 休暇の初頭に初回ワクチンの予約が取れていた。休暇40日目あたりが抗体の出来たであろうタイミングで、そこからは外出の範囲が広がる。

そもそもなぜ長期休暇を取ったのか

保育園に入園して以降20年以上、3ヶ月休む(=主となるやるべき事がない)という状況は一度もなかった*2。そんな体験を老後などではなく若い*3うちにしたら果たしてどうなるのか!?そういった期待が一番大きかったです。

仕事をするのがちょっと疲れてきたというのもあります。コロナでWFHが1年以上続いたせいか、少し頭が冴えないようなことが多く*4、GW程度かそれより長い休みは取りたかった。

また、これは理由というよりは給料を丸々失う事実を納得するための言い訳ですが、時間短縮となるドラム式洗濯機やロボット掃除機、料理宅配や家事代行サービスなど、すでにお金で時間を買うことは普通にやっています。その延長として、給料分払えば仕事の時間が全部浮くと考えたら、一回くらい給料ではなくて時間全振りにしてみても良いのでは。子供のいない共働きで一番お金の使い道がない今だから尚更のことです。

95連休中にやったこと

将棋ったー改修

まとまった時間が取れたためある程度大きな作業をこなすことが出来ました。

罪と罰を読了

感想はこちらに書きました。

bookmeter.com

1ヶ月に及ぶ東京→稚内自転車旅行

これについては別記事にします。取り急ぎ:

 

95連休中にやりそびれたこと

ロシアで生活する

旅行で数日過ごすといったのとは違う、1ヶ月単位で異文化の中で暮らす経験をしてみたいと思っていたのですが、95連休開始時点でのコロナ死者数が過去最悪になっていた*5ので却下。

f:id:na2hiro:20211123232507p:plain

ロシアでのコロナ死者数推移

知人と会いまくる

これまでの人生で人とのつながりをあまり大切に出来ていなかったことを反省して、いろいろなこれまでつながってきた知人と久々に会いつつ近況を聞きまくるなどできたら面白いなと考えていましたが、コロナが7月末開幕のオリンピックで一盛り上がりしたこともありタイミングを掴めませんでした。

長期休暇での心境の変化

1) 時間を取って心置きなくマサラチャイ*6を淹れるなどの心の余裕を日常生活に(労働日であっても)持てるようになった

これまでは、時間を使うからにはなにか成果に結びつくものでなくてはという強迫観念が日々の行動を形作っていました。労働日であれば、料理はなるべく短時間で作るもの、コーヒーは全自動エスプレッソマシンでボタンひとつで淹れてパソコンの前で飲むもの。そういった効率だけを追求した形に生活スタイルが凝り固まっていました。

長期休暇においては、日々の行動が評価されるべき対象から外れたために、そういった強迫観念がなくなり、心からその瞬間を楽しめるようになったと思います。

2) 日々の小さい事柄からでも得られる幸せを重ねていくこともまた人生だと気づいた

あなただったら、3ヶ月お金の心配なく今の仕事から離れて復帰も保証されているとしたら、何をしますか。この質問、突き詰めると「あなたは、人生で何をしたいですか」という問いに通ずるものだと思います。

「あなたは、人生で何をしたいですか」「長期の自由時間で何をしますか」「1ヶ月で死ぬとしたら何をしますか」。これらの時間スケールの異なる質問を考えてみると面白いです。例えば、「1ヶ月で死ぬ」場合に、「今やっている仕事を続ける」と答える人は少ないと思います。死ぬ前に行きたかったところに旅行に出るとか、美味しいものを食べるとかでしょうか*7。でもそれって、もうやっていてもいいですよね。生まれてこの方「死ぬ前」なのですから。

時間軸を長く取るほど長期的なリターンが望める投資を行うのは自然なことですが、では短期的な投資をゼロ付近まで削って(例えばチャイを楽しむ時間を削って)までやるべきことなのかというのは明白ではありません。人生がキャリア成長に対して非常に長いとしたら、とっととキャリア全振りにした後良いキャリアの状態でチャイを楽しむべきかもしれません。でも、人生は莫大に長いわけでもない*8し、何が起こるかわからない。少しはチャイに短期投資してもいいのかもしれません。

振り返って見て幸せだったと思える日々を過ごしたい。そう気づいた長期休暇でした。

人生いつ生きてるの?今でしょ。

3) コミュニティや人とのつながりは大切

学校・大学や職場のどれかには属し続けてきた人生では、日常的に顔を合わせる人というのが自然と出てきて、それが友人関係などのつながりになったりするのですが、「休み」の状態ではそういった所属というものがありません。自ら連絡をとったりコミュニティ活動をしていかないと人とのつながりは逓減していきます。また、これまでの自分がそういう所属の下で単純接触した人とのつながりばかりに依存しており、所属が変わった途端にこれまで密に繋がっていた人との繋がりが途切れるということが続いてきたと気づきました。人のつながりというのは人生の幸福感を高めてもくれます。これらを大切にしていこうという決意を持ちました。

休暇から復帰しての仕事の模様

休暇の終わりの頃にはもっと休暇を続けたいという思いがあった*9のですが、いざ働き始めてみると、拘束時間は短くないが、まあ悪くないかなという感じです。自分の能力が活かせる場というのはなかなか良いものです。会社の外に出てみると、将棋ったーやKifu for JSという公開されたプロダクトはあるものの、ビジネスをしているわけでもないですし、ソフトウェアやプログラミング関連のことがそのへんに転がっているわけではありません。*10一方、会社に出てくると大なり小なりやるべきことがいくらでもあり、物事を前に進めている感覚というのは大きいです。

仕事がちゃんと進められているかということについてですが、概ね順調と言えると思います。休んでいる間に進んだプロジェクトに関わる事柄などは同僚に頼りがちになりますが、基本的なチーム内での役割は変わっていないと思います。また、これまで労働時間が長すぎたという反省をし、短くするような工夫をしており、それが削るべきところを削っての短時間労働なのかそうでないのかはまだ今後の評価をもらってからの判断ということになります。

長期休暇おすすめ

全弊社員に同制度の活用をおすすめしたいですし、同様の制度が利用できる方はぜひ検討してみて下さい。また、仕事を少しの間隙もなく続けて定年まで過ごすのが当たり前という期待があるような社会の中、それが息苦しい人という人や、別になんとなく思い立った人にとっても、気軽に休んで気軽に復帰できるような社会になったらいいなと思いながら、なんとなく休んだご報告を締めたいと思います。

*1:既に同制度を使った後復帰している同僚がいたり、新入社員研修の先生側として3ヶ月間チームから離れて研修を行う制度が毎年あり、それで抜けるということが常態化しているため、社員にも抜けて戻ってくる人という存在は普通のものとなっている

*2:浪人・留年などもなくきっちり3月卒業4月入学/入社を繰り返してきた

*3:30にもなると、集中力などの脳の機能が学生時代などの20代前半とは違うというふうに気づいてきます。体力もまあ落ちてるとは思いますが、脳の衰えのほうがテクノロジーによる援助を受けづらいと思うので、より危機感が大きいです。

*4:雑談の頻度が激減したのが一因という話は初回の記事で述べましたが、他にも仕事とプライベートの境目が曖昧になり心理的負荷が高まっていたとも思います

*5:当時はデルタ株が流行っていた一方、国産ワクチンのスプートニクがデルタ株に効かない状態。また国民はマスクをせず、国産ワクチンを信用していないためワクチン接種率は低く、ワクチン接種証明が求められれば闇で買うことが横行するなど、日本では驚きのことがまかり通っています。

*6:失効寸前のJALマイルを、なんとなくインド料理屋で頼んで好きだなという理由でチャイセットに交換したら、ハマってしまい、インド食材店で買ったスパイス数種類を砕いて毎日のように作るようになった

*7:ここでは「どうせ死ぬなら危険なアクティビティをやってみる」という場合は除かせて下さい

*8:日本人男性の平均寿命は3万日弱

*9:同制度を利用した同僚の中にはおかわりをして半年続けて休んだ人がいるようですが、自分のときはその選択肢は明らかではありませんでした。自ら申し出たんだろうか?

*10:こう文章にしてみて、OSS: オープンソースソフトウェアに貢献するというのも一つの手かもしれないと思いました。次長期休暇を取るときは考えてみようかな。

ブログを書き始めようかな

TL; DR *1

おもしろ一発ネタではない、ある程度まとまったものを書いていくことが必要だと感じたので、これからブログを書いていこうと思います。

ブログを始める理由

1) コミュニティの中で生きるため(ソフトウェアエンジニアの)

ソフトウェアエンジニアとして労働し始めて6年経った今年、3ヶ月間のサバティカル的休暇を取ることにしました。この休暇については今後記事にしたいのですが、自分の生活や人生について見直すいい時間になりました。

自分の生活を見直す一環で、過去に自分が作ったり、作ろうとしていたソフトウェアプロジェクトの雑多なディレクトリを発掘してリストアップしました。行きあたりばったりのHaskellのstackで生成したスケルトンプロジェクトから、かつては一世を風靡した(当社比)量子将棋擁する将棋ったーまで、過去10年間に手を動かして出来たものがごちゃまぜになっています。今すぐ消せるガラクタも多いのですが、リストとしてまとめてみると、なかなか作り込んでいたりとか頑張ったのにそのまま放置されているものが多いということに気づきました。

完成させて、リリースして、アクティブユーザがいるようなプロダクトに持っていくだけがプログラミングのアウトプットではない。そこまでやらずとも、例えばなにか興味を持った試行をやってみて、うまく行ったり失敗したりした結果をまとめて公開するだけでも、十分価値を見出してくれる人はいるかもしれない。そもそも、ディレクトリに埋もれたままでは当の自分自身で参照すらできない。いくら過去に時間をかけていたのだとしても。そういう思いが強いです。

自分の成果物を周囲に見てもらうと自分の周囲が豊かになり自分にも跳ね返ってくる。人生は他人との共同作業だとも言えると思います。それが休暇での一つの気づきでした。

余談ですが、「ろくにコンテキストの説明もない誰かのgithubリポジトリ」が奇跡的に気づかれたケースであるsugyanさんの先週の記事はこちらです:

将棋プログラムの多くはC++で書かれていて 最近はRustも増えてきているのかな? しかし「詰将棋を解く」ことに特化しているものはあまり多くはなさそうだった。

なかでもRustで書かれているものはna2hiroさんによるものくらいしか無さそうで、 これを大いに参考にさせていただいた。

memo.sugyan.com

とにかくdf-pnという探索アルゴリズムの実装に詰まって頓挫状態で、やりかけの"保存"をしただけの状態でした。READMEで現状説明くらい簡単に書いておけばよかった…

2) コミュニティの中で生きるため(その他の自分が興味ある分野の)

そういったことは、ソフトウェアの文脈に限らずとも、コンテキストを共有した人たちとのコミュニケーションにも当てはまります。核家族生活で、人間関係が希薄になりがちな都市部の集合住宅での生活の中、サバティカル休暇で会社から離れてみると、うっかりしていると妻としか話さなかった日というのも珍しくなく、これではまずい、また働いていた頃は会社というコミュニティほぼ1本に頼りきりだったのだなと思わされました。

SNSとしては主にTwitterを10年以上やっているのですが、働き始めてからは頻度が急減し、不定期におもしろ一発ネタをいうbotになっていると言っても過言ではありません。それ自体はTwitterの使い方に即しているとは思いますしこういった表現自体には満足しているのですが、クラスタの中に入って呼応するみたいなことがなくなりました。例えばテレビ放映や将棋の中継を見て反応をする、あるいは同じ授業を受けてる人どうしで呼応するとかは学生時代は結構やっていたのですが。そういったことには独特の充実感がありました。

3) 言語を練って出力していかないと脳が衰えていくという実感

2020年春からのコロナの影響で完全にWork From Homeとなってから、どうも頭が冴えないと感じることが増えました。職場での仕事からWFHに切り替わった際には多くのことが一度に変わった*2ので、何が頭が冴えないことの原因なのかという切り分けはすぐには難しいですが、久々に職場の同期と会って何時間も話し込んだという日の夜はよく眠れて次の日もなんだか冴えている、ということが何回かあった経験から、頭を捻って言語を練りだしたような会話をするといいという経験則を導き出しました。

WFHでの唯一の会話チャンスであるビデオ会議では、参加者全員に語りかける形となってしまいなかなか雑談が生まれづらい一方、オフィスで働いていた頃は次のような豊かな雑談が存在しました。

  • コーヒーマシンのあたり*3で偶然出会った別のチームの同僚と雑談
  • 毎日オフィスのケータリング昼食で、あまり話したことのない同僚も含めて、多様なバックグラウンドを持った様々な国の人たちと雑談
  • 2-3週間に1回、職場の同期と業務後数時間卓球*4しながら雑談

職場はIndeed Japanという元々外資の会社で、同僚との会話は英語でなされます。そもそも英語が母語レベルでない*5自分からすると普段話さない人とただ話すだけでも言葉を解して返答するのにもある程度頭を使った連想が必要です。また、コンテキストをさほど共有していない外国人との雑談では、雑談のトピックやその背景などを1から察する必要があったりして、ただの雑談でもなかなか頑張っていたという覚えがあります。

雑談の代わりにブログでも頭が活性化するかというのが気になる一つの仮説です。

4) 書く練習のため

書く内容はともかくとして書くのが遅いという自覚がありますし、妻が自分の書いているところを見ての感想も「遅すぎ」だそうです。仕事でのチケットのコメント(5〜6文)に推敲を重ねて20分くらいかかることもあります。書いて送信してからもここがおかしいとすぐにeditを入れたり。それが1個人向けのメッセージとなると、また「その人がどう受け取るか」みたいなことを考え始めてしまい余計遅くなるということもあります。願わくば、書く量をこなしていくことで慣れて上手くなればと思っています。

どんなことを書いていくか

ひとまずは筆頭にした趣味で書いたソフトウェアの話、ここ最近の話でいうと最近取ったサバティカル休暇、いわゆる95連休での暮らしや気付きなどを書いていければと思います。他の趣味である料理や詰将棋の話なんかも書いていくかもしれません。

今日の音楽

この記事を書いた時に聴いていた音楽はこちらです*6*7*8

ショスタコーヴィチ チェロ協奏曲第二番

www.youtube.com

*1:"Too long; Don't read"の略。「長過ぎる、読むな」、転じて概要の意味

*2:例えば通勤がなくなった、同僚を目にしなくなった、フリードリンクがなくなった、…

*3:キッチンと呼ばれるところではフリードリンクやフリースナックが備え付けられていました

*4:入社直後数ヶ月は、それこそ毎日のように卓球をしていた。業務中に30分だっただろうか。いい会社だ。

*5:入社時に英語のレベルが水準以下だったのでセブ島に語学留学に行ったということがありますが、今はなんとかやっている程度です

*6:筆者はロシアの作曲家ショスタコーヴィチが好きです。筆者が2010年にTwitterを開始した時から使い続けているアイコンも、よく見るとショスタコーヴィチについてです。

*7:もちろん書くのがうまくない筆者は、これの演奏の何倍もの時間をかけて書いているのですが…

*8:音楽についてなにか書けるほど詳しくないので、音楽の記事は書かないと思います