水島雄太のブログ

個人的かつ雑多なブログです。

思い込みを排除すること

より合理的な判断を下すためには思い込みを排除する必要がある一方、行動するためにはある程度思い込みをしないとなかなか物事が進められないというところに物事を進める上での難しさがある。

 

本来思い込みを排除することと行動することは両立できるはずのことではあるので、モチベーションの維持と思い込みが結びついているところに根本的な問題を抱えているのでは、と予想している。

 

法人化予定

2020年の8月からフリーランスとして独立し、喜ばしいことに売上も増えてきたため、2021年の6月に法人化することにしました。

 

SRE、アプリケーション開発、エンジニア採用と手広くやっていますが、法人化以降は自社開発のスマホアプリに特化して事業をやっていきたいと思います。

 

なんだかんだ自社開発のスマホアプリで売上を立てるのは時間がかかることなので、現在の仕事と並行して開発していこうと思います。

flutterでのHot reload, Hot restart, Full restart の違い

flutterでのHot reload, Hot restart, Full restart の違い

Hot reload

  • コードの変更をVMにロードし、ウィジェットツリーを再構築する
  • アプリの状態は保持する
  • main()またはinitState()は再実行されない

Hot restart

  • コードの変更をVMにロードし、Flutterアプリを再起動する
  • アプリの状態は破棄される

Full restart

参考文献

Hot reload - Flutter

やりたいことをやらざるをえないことにするあるいはその逆

やりたいことをやらざるをえないことにするあるいはその逆

今までの自分の成功パターン、失敗パターンをまとめてみると、成功パターンは、やらざるを得ない事がやりたいこと(≒楽しいこと)あるいはやりたいことがやらざるを得ないことになっていることに気がついた。

やりたいことがやらざるを得ないことになるパターンというのはそれほど大きくないので、いかに真にやりたいことに対して強制力をもたせるか、ということになる。

薄っぺらいやりたいことだけだとただ強制力だけが伴ってひたすら苦痛を耐え忍ぶことになるし、苦痛を耐え忍ぶだけだと基本的に成長はあまり望めない。

試験勉強の追い込みをしているときにただひたすら勉強が苦痛なときとゾーンに入って勉強に集中できるときがあるがそれに近いのかもしれない。

MacBook Air を買った。

Apple Silicon の MacBook Air を買った。

そろそろM1対応もだいたい終わってきただろうと踏んだのと、色々 スマホやWebで作りたいサービスが湧いてきてアプリを作りたくなってきた、というのがある。

2019 年ぐらいまでは 私物の Mac を所持していたのだけど、当時は スマホアプリを作っているわけでもなかったし、Windows + WSL2 もしくは Ubuntu の開発で十分だろう、ということで2019年後ろぐらいに売却をしていた。

スマホアプリを作る上で、当然 iOS 対応も必要で、そうなると Mac が必須となる。

スマホアプリを作る上で当初は ReactNative も考えたが、今の Fluttterの勢いを見ると、数年後には Flutter が 特にスタートアップでは採用事例が増えると踏んで、Flutterを全面採用することにした。

とりあえず年2つアプリをリリースすることを目標に頑張っていきたいと思います。

外に出ることの重要性

東京近郊の花見スポットをバイクで巡るということをやってみたが、大変よい。

外に出るとそこには人がたくさんいる。人がたくさんいるということは、それだけそこに需要があるということだ。

ある人は絵を描いたり、写真を撮ったり、あるいはランニングをしたり。

とりあえず新しい発見が見つけられる限りは定期的に外に出るということを継続していきたいと思う。

スマホからTwitterを削除した

最近だらだらと Twitterを見ることが多く、惰性でやっておりそれほど楽しくない割には時間を使ってしまう感覚があったため、試しにスマホから削除してみた。

Twitter自体はPCのWebブラウザでちょくちょく見るのだが、ちょっとした時間にTwitterを見ることが無くなったので、ノイズが減り、以前よりQoLが上がったと思う。

スマホで最新のアプリを研究したりなど、身近にスマホを置いておくのはとても重要だと思うが、一方でスマホが無為に時間を使っているというのも事実なので、時間に対してメリット感じなくなったらちょっと遠いところに置いておくのも選択肢としてありだなと実感しました。

同じスマホを使うにしても、アプリを研究したりとか、ガチでそのアプリにはまったりとかもっと楽しいことに時間を使うほうが良い、ということを肝に銘じていきたいと思います。

下田まで湯治を兼ねたワーケーションをしてきた

最近眼精疲労や肩こり、首こりなどに悩まされており、元々の持病である腰痛と耳鳴りとあわさって少々辛くなってきたこと、ワーケーションに興味がありつつもなかなか実行できていなかったこと、うまい具合に月曜日に仕事の休みが取れなかったことがあり、22日月曜日を仕事に割り当てつつ2/21から2/23まで下田までワーケーションをしてきました。

折角休暇を取って居住地から離れたところに来ているのに、仕事をしてしまったらろくに疲れがとれないのではないかと、ワーケーションについては懐疑的な立場でした。

しかし実際に行ってみると、かなり良い景色を堪能できる仕事場を確保できたからか、思った以上に精神的にゆとりをもって快適に仕事に取り組むことが出来ました。

本来仕事でかかるストレスもワーケーションによって、むしろ景色を楽しみながら仕事を楽しむ余裕ができたような気がします。

コロナ禍でワーケーションという選択肢が取りやすくなってきつつある世の中だと思いますが、今後は積極的にワーケーションも選択肢の一つとして取り入れていこうと思います。

SVGを極める上で参考にすべき資料

はじめに

今年はSVGを極めることを目標としているので、SVGを極める上で必要な知識や理解を得るために必要な資料について記述する。

資料

SVGエッセンシャルズ 第二版

MDN SVG

developer.mozilla.org

SVG 1.1 仕様 (第2版) 日本語訳

SVG 1.1 仕様 (第2版) 日本語訳

github

SVG-Edit/svgedit

github.com

自分にとってのBetterな学習プロセス

はじめに

自分にとってBetterな学習プロセスについて記述します。

学習効率とは、理解の広さx深さ/時間 のことで、これを最大化する上で最も実行しやすいやり方について、Betterという表現を使わせてもらいました。 Bestな学習は必要以上に学習に負担を与え、必ずしも学習効率を上げるとは限らないという考えからです。

学習プロセス

アウトラインをざっくり読む

  • できるだけ公式のドキュメントを参照する
  • 公式のドキュメントにアウトラインやチュートリアルがない場合は必ずしも、公式ドキュメントを追わなくても良く、最も理解しやすいと感じたドキュメントを参照する
  • アウトラインはできるだけ理解しながら読むのが良いが、理解が難しい場合は一旦飛ばして、学習を後回しにする
    • その際、TODOとして何かしらのチェックは入れておく
  • アウトラインからの参照は必要以上に多くしないようにする
    • 5分以上脱線する事柄は学習を後回しにする

手を動かす(モノを作る)

  • ざっくりと手を動かす
    • プログラミングならチュートリアルを行ったり、簡易な実装を行う。数学なら問題演習を解く。
    • 理解している事柄と理解していない事柄について明確に分けておく
      • 理解せずに動いたものについては、忘れないようにTODOとしてチェックを入れておく
    • 必要以上に作り込みすぎない
      • あくまでも理解する上でのアウトプットなので、必要以上にこらない

アウトラインを精読する

  • 実装や問題演習が終わったら、再度ドキュメントを読み直す。
  • 今度は理解していない箇所が無いように精読する。
  • わからない箇所はわかるまで読み直すか人に聞く。

理解した事柄についてまとめて、ドキュメントとして公開する

  • 理解した事柄について、qiitaや hatena blogなどで、ドキュメントを公開する
  • 公開するドキュメントはできるだけ齟齬や間違いなどは無いように意識する
    • あまり間違いを気にしすぎるのも良くないので、公開する上で気をつけること、と意識する

さいごに

人によっては、最初のドキュメントを読む段階ですべて理解することを意識したり、とりあえず実装する過程を省略するかもしれないが、自分の場合モチベーション維持の観点で失敗しやすかった。

上記はあくまで自分のBetterな学習プロセスであり、Bestな学習プロセスではないことを留意する必要がある。

2018年4月から2020年2月までに読んだ本

はじめに

2018年4月以降、どのような書籍を読んだのか全く記録していなかったため、 2018年4月から2020年2月までに読んだ本をリスト化する。

読んだ本

リストに追加する条件は以下の通り

  • 内容の8割以上を読破している
  • 書籍だがマンガや写真集は含まれない

2018年上期

2018下期

2019上期

2020上期

まとめ

全体的な傾向として、エンジニアリングの本をまり読めておらず、また絶対的な読書量が不足していると感じられた。 また、読書に対してまとめたり、得たことに対するアウトプットをほぼしていない、ということがわかった。

少なくとも1ヶ月に1冊程度はエンジニアリングに関する書籍を熟読した上で理解をまとめていくように心がけたい。

先延ばしグセを改善する

はじめに

つい先延ばしをしてしまう、というのは大なり小なり誰しもがもっている性質だと思います。

大多数の人は、締切で先延ばしを回避します。 少なくとも締切で、長期的には先延ばしをするデメリットが先延ばしをするメリットを上回るからです。

しかし、ADHDの性質が強い人は、短期的な利益を追求する傾向があることから、なかなか先延ばしを改善することができません。

ここでは、そのような傾向が強い人がどのように先延ばしグセを改善するか、ということについて記述します。

先延ばしをする理由とその改善方法

考える余裕がない

ワーキングメモリが逼迫しており、考える余裕がないパターンです。

正確に言うと、考える余裕がないことで、問題を分割することに思考を割けないパターンとも言えます。

考える余裕がないタスクとして分解できていない という因果関係が成立しますが、 タスクとして分解できていない からといって、考える余裕がない わけではないので、別事象として扱っています。

考える余裕が無い場合は、潔く休息をとるしかないでしょう。

タスクとして分解できていない

やる内容が抽象的でタスクとして切り出せていないパターンです。

疲れているわけではないが、タスクとして切り出すのが面倒で、先延ばしをすることがあります。

このパターンの場合は分解タスク自体に億劫さを感じているので、10分などの短いスパンのポモドーロ・テクニックで、分解タスクに対する心理的障壁を減らしましょう。

興味が沸かない

興味が沸かないが、やらなければならないタスクに対して、先延ばしをするパターンです。

興味を持てないことに対してストレスを感じやすい性質を持っていると、このパターンに陥りやすいと思います。

直接興味が沸かない場合でも、関連する領域について自分でオーナーシップを持って調べたり何かしらモノを作ってみると、興味が喚起されることがあります。

難易度が高く感じられる

難易度が高くて達成までに時間がかかりそうと思うパターンです。

そもそもの難易度が高すぎる場合は、適切な難易度に設定し直す必要があります。 難易度が高いと感じているものは、じつはモデル化がちゃんとできていない場合が多いので、 理解していることと理解していないことを整理して、理解していないことを正確に学習したり、モデリングをしっかりやる。

まとめ

上記のことを実践すれば先延ばしグセは大なり小なり改善できるのではないかと思います。 ただ先延ばしをする時は、思考自体を面倒臭がっている事が多いので、実行するのは容易ではありません。 そのため、出来るだけ上記のことを機械的に実行できるようにパターン化すると、改善しやすいのではないかと思います。

先延ばしの兆候が出始めたときに確認すること

  • 疲れている?
    • 休む
  • 難しい?
    • モデル化できていない?
      • 調査、モデル化
  • 面倒くさい?
    • 興味がわかない?
      • 近い周辺領域を調査したりモノを作る
      • 何も考えずに手を動かす
    • タスクに分解できていない?
      • 10分ポモドーロでタスク分解する

フロー状態に入るときの条件

はじめに

フロー状態に入る決まった条件があるが、あまり言語化しておらず、再現性に難があった。 フロー状態に入る条件を言語化することで、フロー状態の再現性を高くし、能率を上げるのが本エントリーの目的です

フロー状態に入る条件

  • その作業を30分以上継続している
    • その作業に取りかかるコストと相関関係はあまりない
  • その作業の結果得られる報酬や状態をイメージできている
  • 成果物が新規性の高いものである
  • 夜または早朝である
  • そのタスクるいは別の重要なやらなければならないタスクの締め切りが差し迫っていることが多い
    • 締め切りのストレスの逃避行動として発露するパターンが多い
  • 成果物はアニメーションとして動作するものが多い
  • 時間さえかければ実現できる、という自信を持っている
  • 成果物を明確にイメージできている
    • 実際に詳細までイメージできている必要はなく、アバウトながら全体像が描けていればOK

意図的にフロー状態を発生させる方法

  • 作業に新規性・独創性・希少性を盛り込み、成果物で得られる報酬を想像する
    • 成果物を見て周囲が驚く様子を想像できるまでイメージする
      • 驚く様子を明確に想像できるまで新規性を盛り込む
      • どのようなものに対してワクワク出来るか
        • 動きがあるもの
        • 希少性が高いこと
          • 数学や物理学、アルゴリズムを駆使するもの
          • ニーズを感じること
          • 独創性があること
        • 自分の頭で考えたこと
          • 自分でアルゴリズムを考えたりそれをw実装するのはフロー状態を得やすいが、他人が考えたロジックを理解して実装することはフロー状態を得にくい

コマンド本体の実行パスを出力するコマンド一覧とその機能の比較

はじめに

実行したいコマンドの実行パスを知りたいときに whichwhereis を違いをよく知らずに使っており、そのことをふとした瞬間で恥じてしまったため、違いをまとめます。

macOS 10.14.6 に最初から入っているコマンドを対象にしています。

コマンド本体の実行パスを出力するコマンド一覧

whereis

NAME
     whereis -- locate programs

...
DESCRIPTION
     The whereis utility checks the standard binary directories for the speci-
     fied programs, printing out the paths of any it finds.

     The path searched is the string returned by the sysctl(8) utility for the
     ``user.cs_path'' string.
  • sysctl user.cs_path で出力されるパスが検索対象になる
    • macOS のデフォルト設定だと /usr/bin:/bin:/usr/sbin:/sbin
    • PATH で設定されたパスは検索対象にならない

which

NAME
     which -- locate a program file in the user's path

...

DESCRIPTION
     The which utility takes a list of command names and searches the path for
     each executable file that would be run had these commands actually been
     invoked.

     The following options are available:

     -a      List all instances of executables found (instead of just the
             first one of each).

     -s      No output, just return 0 if all of the executables are found, or
             1 if some were not found.

     Some shells may provide a builtin which command which is similar or iden-
     tical to this utility.  Consult the builtin(1) manual page.
  • PATH で設定された優先順位で実行パスを検索する
  • 実行パスをリスト形式で出力する
  • -a で すべての実行パスを出力(このオプションがなければ最初の実行パスしか出力されない
  • -s で何も出力せず、終了ステータスのみ返す
  • builtin which と似ているか、あるいはどちらかのシノニムになっている
    • このあたりはおそらく環境依存
  • 元々はPerl
    • Wolfram Schneide 作
  • 現在のversion は Daniel Papasian がCで書き直した

where

DESCRIPTION
     Shell builtin commands are commands that can be executed within the run-
     ning shell's process.  Note that, in the case of csh(1) builtin commands,
     the command is executed in a subshell if it occurs as any component of a
     pipeline except the last.
  • コマンドオプションは見当たらない
    • -s などは使えるが違いがよくわからない
  • whichと違いデフォルトですべての実行パスを優先度順に表示する
  • シェルのビルトインコマンド
    • シェルを実行パス検索順に表示されるのでシェルから実行する場合はこれの出力が一番正確

type

DESCRIPTION
     Shell builtin commands are commands that can be executed within the run-
     ning shell's process.  Note that, in the case of csh(1) builtin commands,
     the command is executed in a subshell if it occurs as any component of a
     pipeline except the last.
  • whichのシノニム

参考文献

Dplayにはまっている

最近dPlayにハマっています。

dPlayとは、ディスカバリーチャンネルが運営しているオンデマンド番組配信サービスのことです。

いずれはサブスクリプションモデルで課金が発生すると思いますが、2019年にリリースされたばかりということで、記事執筆時点では、すべての番組を無料で試聴する事ができます。

ディスカバリーチャンネルでは様々な科学番組を配信しており、特に私の最近のお気に入りは、宇宙に関する番組です。

例えば、宇宙の初期において存在した原子は中性水素の原始核と単体の中性子しかなかったそうで、現在地球上に種々の原子が存在しているのは、過去に恒星での原子核合成や超新星爆発での原子核合成が行われて隕石として降り注いだからだそうです。

今人類が使っている元素が遥か昔、遥か彼方の宇宙から飛来してきたと思うと、今自分が直面している悩みなど小さなものだと、矮小化できるのがとても良いです。

今後も定期的、あるいは何か悩み事ができるたびに試聴していこうと思います。

エンジンオイルを交換した

はじめに

2019/12/2 に 愛車である CB400SB のエンジンオイルを交換したので、その経緯ややり方などを忘れないうちにメモしておく。

エンジンオイル交換の経緯

愛車は、2018/12/15 に購入し、2019/01/25 に納車された。 エンジンオイルは走行距離が短くても半年、または1年で交換するのが良いとされている。

ホンダのCB400SF/SBのサービスマニュアルでは、1年に1回とあったたため、サービスマニュアルに合わせる形で、1年を目安にエンジンオイルを交換しようとしていた。 これがが今回この時期にエンジンオイルを交換した理由だ。

エンジンオイル交換で使った器具/交換品

  • 脱脂洗浄スプレー
  • 30Nmが出せるトルクスレンチ
  • 17mm レンチソケット
  • エンジンオイル(ウルトラG1)
  • オイルジョッキ(1L)
  • ソケットレンチ
  • ドレンボルトガスケット
  • オイルうけ

エンジンオイル交換

暖機運転

エンジンオイルは粘性のある液体であることから、熱を加えることでオイルの切れが良くなり、オイル抜きをしやすくなる。 暖機運転の時間はそれほど長くなくてもよく、走行時間も合わせて2分ほど暖機運転することで、人肌程度にエンジンオイルを温めることが出来た。 (人肌の温度であることは、廃棄のタイミングで廃油を触ることで確認した)

オイル抜き

オイル抜きはドレンボルトを緩める方向にトルクを加えるが、トルクスレンチは基本的に締める用途に用いられる。 緩めることに使うことで精度が悪くなったりなど、弊害があるようだ。

そのため、ボルトを緩めるための専用のソケットレンチを購入した。

ドレンボルトに対してはソケットレンチで大きめのトルクをかけることで、緩めることが出来た。 そこそこ大きな力で緩めるため、勢い余って手に廃油がかかってしまったりと、うまくやるにはそれなりのコツが必要な作業だった。

サービスマニュアルには、オイルが完全に抜けきってから交換すること、と書かれているが、完全に抜けきるまで(ドレンボルトから、オイルがポタポタと落ちなくなるまで)、24時間以上かかることもあるらしく、そこまで悠長に待っていることが出来なかったため、ドレンボルトを抜いてから10分ほど経た時点で、ドレンボルトを締める作業に入ることにした。

ドレンボルト締め

購入したトルクスレンチは設定したトルクよりも大きなトルクがかかると、カチッと音がするのだが、その感覚がわからず規定トルクより大幅に強く締めてしまった。

多少きつく締める分には問題ないかもしれないが、規定トルクよりかなり大きなトルクをかけてしまった可能性が高いと判断したため、一度ドレンボルトを緩めて、ガスケットも交換して、再度締め直すことにした。

しかし、規定トルクよりかなり強く締めてしまったことで、ガスケットが大きく潰れてしまい、ドレンボルトに固着してまった。 ペンチで固着したガスケットを取り除こうと試みるも、なかなか外すことが出来なかったため、最寄りのバイク用品店でドレンボルトを調達することにした。

最寄りのバイク用品店では、CB400SF/SBで使用できるキジマのマグネット式ワイヤーロックドレンボルトがあり、無事に調達は出来た。

再度強く締めすぎないように慎重に低いトルク設定値から順番に締めていくことで、無事規定トルクに近い値でドレンボルトを締めることが出来た。

何事も初めはリスクの小さいところから初め、徐々にリスクを大きくすることが重要、という学びがあった。

エンジンオイル注入

サービスマニュアルでは、オイルフィルターは含めず、単体の交換では3.0Lのエンジンオイルが必要と記載されていた。 エンジンオイルは、少なめに注いでから後に足すことは簡単だが、多めに入れすぎてしまうと、一度ドレンボルトを緩める必要があるため、多く入れすぎるとリカバリーのコストが大きくなってしまう。

そのため、前回の失敗も踏まえ、初めは少なめにエンジンオイルを注ぎ、オイルレベル窓で少しずつ量を確認しながら、注いでいく方針をとることにした。 少なめに入れたつもりだったが、その時点で丁度オイルレベル窓の High と Low の中間値に来ていたため、結果的に上記の判断は正解だったように思う。

ところで、エンジンオイルレベル窓の確認は水平な場所でバイクを水平にして確認する必要があるが、これは一人だととてもやりにくい。 オイルレベル窓はかなりバイクの下の方にあり、かがんだ状態では、バイクをうまく支えるのが難しいからだ。

結局、オイルレベル窓の確認は家族に手伝ってもらった。

廃油処理

廃油処理は予め、近くのガソリンスタンド数カ所に電話でエンジンオイルの引取りをしているか確認をとっていた。 一番家から近いガソリンスタンドで、廃油処理を行っているということで、オイルを抜いた際の受けとして使っていた漬物用の5Lプラスチック容器を持っていき、無事無料でエンジンオイルを廃棄することが出来た。

空気圧チェックと空気入れ

エンジンオイルを交換した後、1年近く空気圧チェックをしていないということで、空気圧チェックをすることにした。 初めは専用の空気圧ゲージを使おうとしたが、使い勝手が悪く、最近自転車用に買ったエアーコンプレッサーに空気圧計が注いており、空気圧が規定値より足りないことは確実視していたため、エアーコンプレッサーで空気圧測定も兼ねつつ、空気を入れることにした。 一人乗りの既定値は250kpa(フロント) だったが、測定時点では140kpaと100kpa以上も落ちていたことがわかった。 手で触る文には140kpaでも大きな違いはあまり感じることが出来なかったが、このような既定値との乖離は計測しないと認識出来ないということがあるため、定期的に計測するというのは非常に重要という学びがあった。

購入したエアーコンプレッサーは、大きな音を出すというデメリットはありつつも、5000円弱の値段で購入することが出来、空気圧チェックと設定した空気圧まで自動で加圧してくれることから、とても利便性が高かった。

空気圧計付きの足踏み式空気入れでも3000円以上するものが多いので、たった1500円ほどプラスするだけで、これだけの利便性が手に入るのは正直予想外だった。

もっと早めに、エアーコンプレッサーを購入しても良かったかもしれない。

まとめ

  • リスクの低い事柄から初め徐々にリスクを高くしていのがセオリー
  • 日々のメンテンナスが超重要
  • エアーコンプレッサーは超便利

スプラッシュボム持ちブキとダイナモローラーより射程が長いブキ一覧

はじめに

スプラッシュボム持ちブキとダイナモローラーより射程が長いブキ一覧を覚えることで、チーム編成に応じたダイナモローラーの立ち回りを強化するのが目的です

スプラッシュボム持ちブキ一覧

シューター系

  • スプラシューターコラボ/オクタシューターレプリカ
  • わかばシューター
  • ボトルガイザーフォイル
  • プライムシューターベッチュー
  • デュアルスイーパーカスタム

チャージャー系

  • スプラスコープ
  • スプラチャージャー/ヒーローチャージャーレプリカ

ブラスター系

  • ノヴァブラスター
  • クラッシュブラスター

ローラー系

  • スプラローラーベッチュー
  • ダイナモローラーテスラ

フデ系

  • パブロ

スロッシャー系

スピナー系

無し

シェルター系

  • スパイガジェットソレーラ

ダイナモローラーより攻撃射程が長いブキ一覧

縦振り

ダイナモより射程がわずかに短い

  • ソイチューバー
  • 14式竹筒銃
  • ヴァリアブルローラー
  • Rブラスターエリート

ほぼ同射程

  • ジェットスイーパー
  • バレルスピナー
  • エクスプロッシャー

ダイナモより射程が長い

  • スプラチャージャー
  • スプラスコープ
  • リッター
  • 4Kスコープ
  • ハイドラント
  • クーゲルシュライバー

横振り

縦振りでは勝っているが、横振りでは負けているブキ

  • Rブラスターエリート
  • ソイチューバー
  • 14式竹筒銃
  • ヴァリアブルローラー

最後に

出典:

【スプラトゥーン2】射程の長い武器ランキング|ゲームエイト

スプラトゥーン2の全ブキの射程距離・攻撃力ランキングの一覧表 - スプラトゥーン2イカの巻