📰 Topics

今年最後のWeekly Reportはそれに相応しい内容と分量になりました。
Svelte、Wasm、Vercelのアウトプットだけでなくインプットもあります。
年末年始は学習にも力を入れたいですね。

Table of Contents

書いたこと

【ブログ】Svelteとffmpeg.wasmでメディア変換サイトを作ってみた

Svelteデビューしたので記事を書きました。

前からGUIとターミナル(ffmpeg)行ったり来たりが面倒だったので、ブラウザだけで完結できるような変換ツールを作りました。
変換後はIntelliJ IDEAにコピーしたり、Slackへ投稿することが多いため、ブラウザ下部のダウンロードファイルから直接ドラッグ&ドロップできて捗ります😊

詳細は記事をご覧ください。

【TypeScript】リリースノート v3.6

TypeScript v3.6のリリースノートをまとめ終わりました。

【GitHub Actions Cookbook】Use env vars

環境変数を設定するパターンを追加しました。

【GitHub Actions Cookbook】Parallelized

並列処理をコントロールするパターンを追加しました。

Windowsでsedを使ってファイル上書きする方法

人によって環境が違ったり、引数の位置によって意味合いが変わったりデリケートなので。

読んだこと/聴いたこと

Zettelkastenで作成するノートの種類についてまとめ

Zettelkasten(ツェッテルカステン)はドイツの社会学者が生み出したノート作成方法です。
それについて紹介された記事。

ドキュメントを作成するときに普段考えていることに似ていると感じました。
異なるのは..私はディレクトリによるノートの構造化にも意味はあると考えているところ。
閲覧者への表現はタグがベストだと思っていますが、管理の側にとってはディレクトリ構造にも価値があると考えています。

そう、開発におけるソースコードのpackage構成みたいなものでしょうか。

【書評】やる気が上がる8つのスイッチ

やる気について用語をふまえて理論的に説明されています。
証明マインドと成長マインド、獲得フォーカスと回避フォーカスという言葉は初めて知りました。

私の場合、根は証明マインドです。意図的に成長マインドを促すようにしています。
今書いているWeekly Reportはその典型的な活動ですね。
1週間の成果を見える化するため、嫌でも成長を感じます✨

獲得フォーカスと回避フォーカスは場面に分けて使い分けています。
もちろん性格的な面による得手不得手は大きいと思いますが..。
そこそこ使い分けられるのは、もしかすると自分の特殊能力なのかも..なんて👅

【書評】最高の体調

今度は体調について論理的に説明された書評。

ここで注目するのは、肥満やコレステロール、といった「身体の不調」と、不安や孤独といった「心の不調」が体の中では同じ「炎症」という現象につながっている、ということです。

この考え方面白いなと思いました。心の病とは言ったものですね。
SNSやSlackのおかげで以前感じることのあった孤独はかなり和らいだかなと。

ストレスは「未来に思い描いている事と現在の自分の立ち位置が遠ければ遠いほど強くかかる」そうです。

将来のことを考えるとコレに陥りますよね..。
何も考えないのは難しいですが、必要以上に考えないようにしています。

とくに『〇〇なら△△であるべき』という考え方は危険ですね。自分を大切に。

また古代のヒトは回りの集落5人程度のコミュニティーで生きてきたので、5人を超える人間と関わり合いながら生きていくことはそれだけでストレスに繋がります。もともと人間の脳は、見知らぬ他人とうまく人間関係を作れるように設計されていないのです。脳科学的にもヒトの認知リソースは1回につき5人前後としか親密な人間関係を築けない、となっています。

5人以上の会食やMTG大嫌いなのですが、こう言ってもらえると救われた気になりますw

瞑想というのは「自己観察」のことです。 まず目を閉じて呼吸のような特定の対象に意識を向けることで集中力を磨き上げます。次に、その集中力を使って自分の内面をひたすら眺めて、「いま自分は退屈を感じている」「頭がかゆいと思っている」といった自分の思考と感情の変化にリアルタイムで気づく作業を何万回と繰り返していきます。 そうしていくとやがて自分の中に「いかなる現象も刻一刻とうつろうフィクションに過ぎない」という確信が生まれ、どのような欲望にも感情にも巻き込まれなくなり、人生の苦しみは消えていくのです。この状態を「悟り」と言います。

これよく分かります..。
集中力が切れたときやイライラしたときには3分くらい瞑想しています。

瞑想については、手塚治虫さんのブッダで描写されていた『無の感じ方』を参考にしていました。
『最後には自分自身を消し去ることで無の極地に至れる』というものです。

【書評】言葉を減らせば文章はわかりやすくなる

無駄な言葉を削れば、伝えたい内容を伝えやすくなるというもの。

私もドキュメントや依頼文言を書くときは非常に意識しています。
これらは事実を正確に伝えることが大事だと思っているからです。

一方、ブログやエッセイを書く場合、その限りではありません。
なぜなら、それらには思い手の気持ちが含まれており、それが目的にもなっているからです。
引き込まれるブログは大抵独特の言い回しを使われていることが多いですね。

..と思いながら読んでいたら最後に書いてありました👍

もちろん文章を書く上で読みやすさは大事です。余計な表現や冗長なものは削ったほうがスッキリします。ですが、文章を面白くするには読むテンポや抑揚も大切だと思います。 何事も大事なのはバランスで、報告書でも無い限りは文の個性も大切に扱いたい、というのが今回の私の結論でした(ちなみにこの文は頭につけていた「つまり、」を削除しました。)。

【書評】机に向かってすぐに集中する技術

仕事でもプライベートでも最も大切なことだと思っています。集中するスキル。

できる限り強い力を一点に集中させたいのであれば、逆説的ですが、「力を入れすぎない」ことがコツになります。

私は集中する前に『精神統一して顔全体に力を入れる』ようにしていたので目から鱗でした。 あらためて、明鏡止水の心と無駄の無い身体の動きを意識したいと思いました。

また私達が理解しないといけないのは「作業を始めることでモチベーションができる」ということです。 目の前の小さいタスクを気分が乗っても乗らなくてもとりあえずやり始める。そうするとできた頃には「もう少しやりたい」という気持ちが芽生え、結果的に目標に近づいていく、という順序が良いのですね。そのためにも上のようなルーティンを使ってすぐに集中できる環境を整えて、まずは手をつけていくことからはじめましょう。

これも大事ですよね。
Togowlは『とりあえず作業を始められること』を強く意識して開発しています。

やりたいことがない人のためのキャリア形成論

やりたいことやキャリアイメージがない人のために書かれた記事です。

こういうのって精神論のアドバイスが多いんですよね。
『5年、10年、20年後を意識してブレイクダウンしていこう!』みたいな。
それができれば苦労しないよと。

しかし、この記事は違います。
未来を予測するのではなく『出来事』や『機会』といった過去を分析しています。
特に『私生活に踏み込む』のセクションが好きです。GTDからの流れは必見。

私のキャリアは10年弱ですが、今度見直して記事にしてみたいと思いました。

テックリードになって気をつけていること

かなり詳細に書かれていて参考になります。
肩書きこそないですが、やっていることは世のテックリードと一緒だと思っているので答え合わせがてら読みました。

ほとんど同意ですが、一部だけ考え方が違う点があったので軽くご紹介します。

設計タスクをテックリードの考えを当てるクイズゲームにしない 正解までの筋道が詳細レベルまでテックリードが思い描けるなら、テックリードが設計すべきです メンバーに委譲させて(放り投げて)、自分の考えと違うから設計し直しを命じるのは、ヘルシーじゃないと思います パットやれるなら自分でやり、できない部分をメンバーに委譲して助け合うのが自然な形だと思います

ヘルシーさでは同感しつつ、設計力を育成したい場合は例外かなと。
その場合は多少誘導的なクイズになっても致し方と思っています。
たまに、想定を超える回答で勉強させてもらうこともありますし。

GitHub Issuesを個人用のTodo管理アプリとして使っている

GitHub Actionsの機能をフル活用してTodo管理アプリにするお話。

GitHub Issue系タスク管理は今までも山ほど見てきており、無理矢理タスク管理しているだけで管理しづらそうだなーと思っていました。
しかし、GitHub Actionsを使うとここまで色々できるものなのですね。

Todoist/Toggl/Togowlでタスク/時間管理をしているため移行するつもりはありませんが、GitHubを使ったタスク管理がマッチする人もそれなりにいそうだと感じました。

試したこと

【IDEA】Zen Mode

IntelliJ IDEAのZen Modeを試してみました。

存在は前から知っていて、ずっとネタだと思っていたのですが..
ふとしたキッカケがあって試してみたところ『これは悪くない』と。

そのキッカケは『WQHDモニタだと入力エディタが中央に配置されず集中できない』というもの。

そこでZen Modeのことを思い出し、使ってみたら上手いことマッチしたわけです。
ウィンドウを調整しなくても、中央に表示されるのがいいですね😊

Zen Mode以外にも集中できそうなモードがあります。

モード 説明
Distraction Free Mode Zen Modeよりは表示情報が多い
Presentation Mode フォントサイズUP + 行番号表示

文字が小さいディスプレイだとPresentation Modeの方が集中できるかもしれませんね。
フォントサイズUPはかなり快適です😊

1点、ホワイトスペースが可視化されなくなる問題がありました。
直し方が分からなかったので直接xmlを編集して解決しました。

options/editor.xml

<application>
  <component name="EditorSettings">
    <!-- ↓追加 -->
    <option name="IS_WHITESPACES_SHOWN" value="true" />

IndexedDB

Webで使える管理データベースのIndexedDBを試しました。
ローカルストレージと違って5MBの容量制限がないのがポイント。

そのままでは少し使いにくかったので、idbというライブラリを使いました。
Promiseサポートやトランザクションを挟む単純処理のWrapperが使えます。

調べたこと

RustのORMapper

RustでSQLiteを使うにあたり、いいORMapperがないか軽く調べました。
dieselというライブラリがスターも多くて良さそうです。

試してみた記事を見ても、他言語同様に直感的な印象。

年末に実際いじってみたいと思います。

VercelでデプロイしたHugoサイトのコードがハイライトされない

デフォルトだとHugo v0.59が使われるためです。
code fencesによるHighlightingはv0.60からのため効いていませんでした。

vercel.jsonにHUGO_VERSIONを指定したら解決しました。

{
  "build": {
    "env": {
      "HUGO_VERSION": "0.79.1"
    }
  }
}

Scoopでインストールしたdigが使えない

digはドメイン情報に関する情報を取得するツールです。
scoop install digでdigをインストールすることはできますが、実行しても無反応でした。

ずっと原因が分からず放置していましたが、灯台もと暗しでした。
scoop install dig実行後の標準出力に答えが..。

Notes
-----
The dig package has been deprecated, and will be removed in the future.
Please use the bind package instead.
'dig' suggests installing 'extras/vcredist2012'.

bindをインストールしろ..とのことで。

scoop install bind

これでdigが使えるようになりました👍

整備したこと

ブログ/サイトをNetlifyからVercelへ移行

SvelteでFLOWERを開発しているときにVercelの存在を知りました。

今までは主にNetlifyを使っていましたが、以下の理由でVercelに移行しました。

  • レイテンシが小さい
    • Vercelは東京リージョンがあり、Netlifyにはないため
    • Netlifyは120msほどかかる通信がVercelだと50msくらいになる
  • 画像リソースの読込速度が速い
    • 2~6倍くらい速い
    • 理由は分からない..リソース用のエッジサーバーがある?
  • 設定がシンプルで好み
    • Netlifyも感動するほど使いやすかったが、それを凌駕する
  • デフォルトでマルチブランチデプロイ対応
    • Netlifyもできそうだが設定がいるはず

VercelとNetlifyの比較です。

キャッシュあり

キャッシュなし(スーパーリロード)

今週のリリース

Owlelia v0.22.0~v0.24.0

yearMonthの追加

DateTime.of("2020-10-10").yearMonthで20201010を取得できます。
年月でグルーピングやソートするときに便利。

utilsの追加

新たにutilsを追加しました。
取り急ぎ、roundのみ実装しています。

round(34.5678, 2)
  // -> 34.56

utilsはv1.0までの過程で非公開にするかもしれません。
stringやnumberを継承したvoを作成して、そちらに一通りの処理を実装するかもしれないからです。

replaceYear, replaceMonth, replaceDayの追加

年、月、日のいずれかのみを置き換えた新しいインスタンスを作ります。
その月の1日にしたいときなど便利です。

DateTime.of("2020-01-15 10:00:00").replaceDay(1)
  // -> 2020-01-01T10:00:00

その他

明鏡止水

タスクのスピードを上げるためにPC操作速度の向上は避けられません。
主観ではリアルで会う人にほぼ負けない自信があります。

一方で、操作にはまだまだ無駄が多いと考えています。
分かりやすいところで言えば、タイプミスによる文章の修正など。
そこで、今週からは正確性、最善、最短といったスピード以外の部分を意識して作業していこうと決心しました。

ただ決心するだけであれば今まで何度もしています。するだけならば。
数日経つと短期的な作業速度の低下を感じ、いつも元に戻ってしまうのです。

これは当然です。
今までは思考の速度..考える前に身体が動くように訓練してきたわけなので。
ほとんどの操作は身体に染みこんでいます。悪い癖も含めて。

そこで、決心を忘れないよう..逃げ出さないよう..証を立てることにしました。
それこそが『明鏡止水』という言葉です。

スピードの邪念に侵されてしまったときは、この言葉を思い出していきたいですね😄

Quizletの単語数

本日時点での単語数は144(+4)です。
増加が鈍くなってきましたが進捗あればこそです。