水島雄太のブログ

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

マイクロサービスアーキテクチャを読んだ

概要

現在SREとしてマイクロサービスやDevOpsに関する仕事をしている割には、マイクロサービスについてまとまった書籍を読んでいないことに気づいた。

何か体系的に学べそうな書籍が何か無いかと調べると、オライリーのマイクロサービスアーキテクチャが割と評判が良かった。

読書を進めると、思っていた以上に興味深いトピックがあり、今後の学習計画の参考にするためと内容の定着化を図るため、ここにメモとしてまとめます。

マイクロサービスアーキテクチャ

マイクロサービスアーキテクチャはそれ単体で発生したのではなく、DDDやCQRS・イベントソーシング、Rx、テスト、継続的デリバリーなど、近年の設計・開発手法などと共に醸成されてきたサービス設計思想である。 例えば、DDDでの境界付けられたコンテキストはマイクロサービスのサービス間の境界と等価であるといえるし、CQRS・イベントソーシングといった考え方はサービスの結合を疎にするための、設計手法とも言える。 また、マイクロサービスでは複数のサービスを連続して呼び出すことが多いが、これはRxという形で呼び出しの詳細を抽象化できる。 マイクロサービスでは、複数のサービスが個別にビルド・デプロイを行うことから、それらの自動化が必要であり、必然的に継続的デリバリーを実践しなければならない。

このようにマイクロサービスアーキテクチャは他の設計・開発手法と密接にリンクしていることから、それらについてもより深く学ぶ意欲が出来た。

またマイクロサービスアーキテクチャを読んでより理解が深まった概念として、サーキットブレイカーや分散トレーシングがあげられる。

仕事でサーキットブレイカーや分散トレーシングの話が出てくるが、自分の中でどのような経緯でサーキットブレイカーや分散トレーシングが必要になってきたのか、そのコンテキストを知らなかった。

サーキットブレイカーはサービス間連携で、一つの機能が使えないときにそのサービスを切り離すことで、サービスを縮退稼働させたり、大量のキューや待ちが発生しないように必ず必要になるものだし、分散トレーシングもマイクロサービスによって一つのストーリーが、複数のサービスに分割されることで、各サービスでどのような部分がボトルネックになっているのかを把握しやすくするために必要となるものだ。

また、マイクロサービスはコンウェイの法則にも従っており、組織構造とサービスの分割と粒度を合わせることになる。 DDDの境界付けられたコンテキストをコンウェイの法則に従って構築すると、マイクロサービスになるというのが一つの設計手法に対する別解という趣があり、大変興味深かった。

他にも細かい感想は色々あるが、マイクロサービスアーキテクチャを読んで、特になるほどと思った箇所は、以上といったところ。

RxやCQRS・ESについては、自分があまり深く理解してないところもあるので、個別に学習したい。

バイクのメーターステーの交換とテンヤタチウオ

メーターステーの交換

先日愛車であるNC750Xをパーキングブレーキを入れ忘れたことにより倒してしまい、倒れるだけならエンジンガードもあるし大した傷にもならないのだが、横に電柱があり、もろにウィンドスクリーン、パーキングブレーキレバーに傷が付き、メーターステイが歪んでしまった。

ウィンドスクリーンについてはGIVIの社外ロングスクリーンに既に交換していたが、メーターステイはカウルやメーターの取り外しなどで時間がかかることから、作業を後回しにしていた。

さすがにこれ以上後回しにするとやらなくなってしまうとと持ったことから、この土曜日で作業を完了させた。

正午前から作業したのだが、作業終了は午後四時半ごろまでかかってしまい、かなり疲弊してしまった。

時間がかかったところとしては、カウルの取り付け/取り外しで、カウルのクリップがなかなか思い通りにはまらなくて何度もやり直す羽目になってしまった。

メーターステーは歪んでいるだけかと思っていたら、ナットをマウントしている樹脂の部分が完全に折れていたため、表面上は問題なさそうに見えても、負荷がかかったところはちゃんと点検・整備するのが重要だと感じた。

ツールボックスが小さく、必要な工具を全部積むことができず、トルクスレンチなどを作業場まで持っていくのが面倒くさく、結局ナットの感覚で締めてしまったので、今度からそのような横着をしないように大きめなツールバッグを準備したほうが良さそうだ。

外したカウルを置く場所がなくて、そのまま駐車場に置いてしまっていたが、あまり良くないので作業で取り外したものを置くようのシートも用意しておいたほうが良さそうだ。

今回の作業でカウルを取り外してコネクトを取り外すことに抵抗感が無くなったので、今度はパーキングブレーキレバーの交換、ドライブレコーダの取り付けもやってみようと思う。

まとめ

  • ツールバッグを用意する
  • 作業用シートを用意する
  • 負荷がかかったところは表面上問題なさそうに見えるところもちゃんと点検・整備する

テンヤタチウオ

日曜日はテンヤタチウオに行ってきた。 タチウオは簡単に釣れると同僚から聞いていたが、それはどうもテンビンでの話なようだ。

少なくとも、私が初めて体験したテンヤタチウオは想像以上にテクニカルだった。

テンヤタチウオは餌に食いついてきてそのまま向こう合わせで釣るのは難しく、あたりがあった際に合わせを入れることで引っ掛ける釣りなようだ。

この辺りはフグのカットウ釣りに似ているのかもしれない。

誘いは基本的には、小刻みにバイブレーションさせつつゆっくりとリールを半回転〜一回転させて止める、を繰り返す。

アワセはふわっと来たときは即合わせで良いと聞いていたが、何回かふわっと来た時にアワセても乗らなかったので、もう少しタイミングについては自分の中で消化が必要。

この日は結局一本釣れたのだが、その時はある程度食われるのをじっくり待ってから大きな引きがあった時に大きくアワセたことでかかった。 リールを巻く時に何回か抜けたような感触があったので焦ったが、タチウオはゆっくり巻いているとふわっとした時にバレるらしくできるだけ早く巻いて取り込むのが重要らしい。

取り込んだタチウオは口ではなく眼のあたりを貫通していたので、ひっかける感覚が重要なのだろう。

その日は結局4回ほどあたりがあって、1本だったので、もう少し成功体験を積みたかったところだが、釣れないよりはマシなので、今回はよしとしよう。

まとめ

  • テンヤタチウオは引っ掛ける感覚が重要
  • 取り込みは早く巻いてできるだけ迅速に

imagemagick で アルファチャンネルを削除する

何が起きたか

Flutter で iOS アプリを 作成し、Validate した際にエラーが発生した

解決法

アイコンに使用している画像からアルファチャンネルを削除する。 アルファチャンネルを削除するやり方としては色々あるが、ここでは ImageMagick を使う。

convert icon.png -alpha off ios_icon.png

タイラバの座学復習

概要

今週末に相模湾でタイラバ船を出す予定であり、先日のエギングでの教訓から、下調べを入念にし、理論に基づいて行動することが結果的に釣果に結びつく事が多いと結論づけた。 そのため、今回のタイラバはいつものように漫然とするのではなく、仮説・検証に基づいた釣り理論を組み立てることを意識する予定である。

その仮説・検証の際に必要となる座学について、ここで一度まとめてみようと思う。

魚探編

基本的に低周波: 50kHz、高周波: 200kHz で探るのがセオリー。 魚探には通常、Aスコープというものがあり、これは現在のエコーの強さを垂直に表現したものである。

魚探で探る際に、船を流す速度が早すぎると船の航行によるノイズが目立ち、遅すぎると広範囲を探ることが難しくなることから、適切な船を流す速度が求められる。

経験的には、2ノット程度が、小さな反応を見落としにくく、反応を見つけた際にもすぐに停船できるスピードとのこと。

ポイント編

基本的には、かけあがり、砂地や砂れき帯に小さな根が点在しているようなところにマダイがいることが多い。

また、タイが生息している水深は、50mを基準に浅場、深場を探っていく。

基本的には、水温が低くなる時期には比較的水温が安定している深い場所を好む。

そのため夏は浅場、冬は深場を攻めるのがセオリー。

しかし、マダイが好んで捕食するイワシなどのベイトフィッシュが接岸している時は、水温が低くても浅場にいることが多い。

ウルメイワシなどのベイトの大群に遭遇した場合は、海底付近を狙うのではなく、そのベイト反応が出ているタナ付近を重点的に狙うのが有効。 その場合は、ベイトフィッシュの遊泳層をゆっくりタイラバが通過するように演出するのが重要。

キューバダイビングでマダイの捕食行動を確認すると、常にベイトフィッシュを追い回しているのではなく、追った後は少し離れて、ベイトフィッシュ達に安心感を与え、再び襲いかかる…を繰り返す。 その状況を船上に居ながらにして確認するのは困難だが、一つの目安として有効なのは魚群反応の密度の均一性のチェックだ。

魚群反応が一様な濃度だった場合は天敵から襲われる心配がなく、安心してのんびり泳いでいる状況。

逆に反応の密度が濃い部分と淡い部分があり、不均一な場合には天敵の存在により逃げ回っている状況にあると推測できる。

ルアー編

マッチ・ザ・ベイト」という用語があり、その時、魚が捕食しているエサと同じサイズ、同じ形、同じ色のルアーを使用する・・・という意味。

たとえば、イワシの群れにタイが寄る(いわゆるイワシパターン)の場合には、イワシの光り方に似た金のオモリやスカートを使用するのが有効。

SUPに乗ってきた

同僚が四万十川でSUPに乗ってきてユーザー体験が良かったので三浦でも乗ってみたい、ということでSUP体験に誘われた。 以前からSUPに乗ろうと思いつつなかなか乗れていなかったところで誘われたので、二つ返事でSUPに乗ることが決まった。

シットオンのシーカヤックには乗ったことがあるので、SUPも同じようなものだろうと思っていた。 しかし、シットオンのシーカヤックはよほどのことが無い限りは自重でバランスを崩して海投げ出されることはないのだが、SUPは割とカジュアルにバランスを崩すので、より容易に海に投げ出される。

最初はバランスを取るのが難しく、長時間SUPに乗り続けるのは無理なのではないかと、将来に悲観をしていたのだが、意外と慣れるもので、最初の数分で一度海に投げ出されてからは、バランスを崩すこともなく、比較的楽に漕ぐことが出来た。

とは言いつつも、大きな波が来るとバランスが崩れることが多々あったので、波が穏やかでないとなかなか長時間乗り続けるのは難しいし、一度沖に流されると岸に戻るのが難しい容易に遭難してしまう脆弱な乗り物だと感じた。

以前からSUPに興味があった理由としては、現時点で唯一バイクに積載が出来て手軽に沖に出れて釣りができる乗り物だからだ。 穏やかな海であればSUPしながら釣りもできると思いつつも、悪天候には極端に弱いことから、春〜秋にかけて海が穏やかなときにのみ運用できる、と思っていたほうが良いだろう。

SUPを体験したのは油壺だったが、油壺は入り江になっており、波が穏やかであることが多いので、油壷で運用するならば不安は少ないほうだろう。

バイクに積載する場合はほぼSUPしか積載できないのでかなり軽量なタックルにならざるを得ないが、SUPのついでに釣りをする、ぐらいの軽い気持ちの釣りなら運用できるだろうし、魚が釣れなくてもSUPで満足して帰ることが出来るというメリットは個人的にかなり良いのではないかと思った。

インストラクター曰く、安いインフレータブルSUPは破れやすいので最低でも10万以上のインフレータブルを買っておいたほうが良いらしいが、10万程度ならバイクやクルマに比べればかなり安いし、命に関わる部分でもあるので、ある程度良いものを購入したほうが良いというのは確かだろう。

SUPがとても欲しくなってしまった。

30秒でわかった気になる営業の基本

今まで営業をなし崩し的にやってきておりあまり営業の基本について体系的に学んだことが無いことと、仕事において営業の占める割合が大きくなってきたこともあって、営業の基本 この1冊ですべてわかる という本を 読んでみた。

その上で、この本を以下のように要約した。

30秒でわかった気になる営業の基本

  • 営業とは、お客様の利益を支援し、正当な対価をいただく仕事
  • BtoC営業は感覚的なセンス、BtoB営業は組織的な力がより重要
  • 営業プロセスを分解し、理解することが重要
  • 短期的ではなく長期的な顧客の評価がより重要
  • 販促は関連会社・部署との連携が重要
  • 営業はマーケティングが立てた戦略に従って戦術的な営業をするべき
  • 目標を達成するために必要なことを逆算し、行動していく
  • 営業生産性を上げるとは、付加価値を増やす、もしくは資産を減らすことのいずれか
  • 営業に適正はない。正しく営業活動をすれば必ず結果が出せる。

30秒でわかった気になるGPG

特徴

使用五箇条

  • 暗号化には,受信者の公開鍵を使用
  • 複合化には、受信者の秘密鍵を使用
  • 署名には、送信者の秘密鍵を使用
  • 検証には、送信者の公開鍵を使用
  • 秘密鍵を使用するときはパスフレーズが必要

秘密鍵の運用3か条

参考

1分でわかるPGP - 村川猛彦

メバリングでカサゴが釣れた

初めてアジング・メバリングの仕掛けで魚を釣る

去年アジングをやろうとアジング用の竿とリール、仕掛けを購入して、何度かアジングに行ったのだが、横須賀のうみかぜ公園で一回だけアタリがあっただけで、それ以外は反応さえない釣行が続き、アジングをやめてしまった。

それが今回、別の用事のついでに出来るだけ軽量・簡単な仕掛けで気軽に短時間釣行したいと思い、それに合致するのがアジングタックルであったので、ホコリにかぶっていたアジングタックルが今回日の目をみることになった。(現地に到着したときに、アジング竿だと思って持ってきていた竿が船用のベイトリールで絶望することになるのだが。幸いモバイル用だったこともあって、竿を継ぐときに180度回転させるのどの工夫をすることで、キャスティングはなんとかできるようになった)

干潮から1時間後のちょうど釣れ始める時間に底のあたりを攻めていると、何やらブルブルとあたりがった。

今回の釣行では、竿を間違えてもっていたことや、別の用事のついでの釣行ということもあり、本気で釣る気はあまり無かったが、アタリがあったことで超絶テンションが上がる。

その後、何回か投げて、底を意識して、アタリがあったら早めに合わせることを意識して、次のアタリでようやくアジング・メバリング仕掛けで初めて魚を釣ることに成功した。

本命はまだだが、この仕掛でもちゃんと魚が釣れるということが実証されて、自分の中でこの釣りに対する自信が出てきたので、今回ついでとはいえ釣行に行ってよかったように思う。

今回使った釣り場は今度引っ越し予定の家から徒歩で来れる距離だし、今後もお世話になりそうだ。

これからの日常での釣りの楽しみを予感させる、結果的に大変良い釣行になったように思う。

限定解除技能審査に合格した

なんとか限定解除技能審査に合格しました。

体調不良と緊張から、S字クランクで少し脱輪して修正したり、方向転換でミラー位置を修正したあとに戻し忘れたりと、ちょくちょくミスがありましたが、最終的に85点で合格することが出来ました。

実はAT限定の普通免許を取得する際に一度仮免に落ちているんですが(一応このとき以外で運転免許関連の試験で落ちた経験はなし)、その時もS字クランクで脱輪してそのまま修正できないことが原因だったので、あまり成長していないというか、空間把握能力はなかなか鍛えることが出来ない、ということを感じました。

何はともあれ、これでマニュアル車に乗ることが可能になったので、少し落ち着いたらマニュアル車を購入しようと思います。

限定解除教習2限目・3限目・4限目

限定解除教習2限目・3限目・4限目

今週は限定解除の2限目・3限目・4限目(みきわめ)を受けてきたのでそれぞれの教習内容と復習項目についてまとめる。

限定解除教習2限目

この教習では、主にL字クランク・S字クランク・坂道発進を行った。

L字クランク・S字クランクはATの仮免とほぼ同じだが、あまり空間把握能力は高くないので、感覚でやろうとするとあまりうまくいかない。 前輪が少し出たところでハンドルを切り始める、など空間把握とは別の所で判断するとうまくいく。

坂道発進はATよりは難易度は高いが、アクセルをいれて半クラシャシーが少し持ち上がるところで、ハンドブレーキを解除するだけなので、特に問題はなし。

限定解除教習3限目

この教習では、方向転換を中心に練習した。

方向転換は一度幅寄せをしてからでないと出られない事が多かったが、一回の幅寄せでは特に減点になることもないので、このあたりは気にしなくても良いらしい。

教官から半クラにしてからアクセルを入れる癖があるので、アクセルを入れてから半クラをいれるように指導された

限定解除教習4限目(みきわめ)

最初はシートの調整に失敗したせいと速度を出しすぎたせいか、一度脱輪してしまったが、その他は特に問題は発生せず。

修了検定も特に問題はないでしょう、とお墨付きをもらえたので、修了検定でも落ち着いて教習内容をこなせばひとまず大丈夫だろう。

まとめ

  • アクセルを入れてから半クラを意識する
  • 半クラの状態でブレーキを踏むくせがあるので、断続クラッチで速度調節することを意識する
  • L字クランク・S字クランクで速度を出しすぎない

普通AT免許限定解除教習1限目に行ってきた

午前休をもらって、近くの教習所まで 普通AT免許限定解除教習に行ってきました。 2月に入校手続きをしてから2ヶ月以上待たされましたが、ようやくの実技教習です。

すでに大型自動二輪MT免許を持っているし、今はNC750X DCT で ATのバイクですが、以前は CB400SB という MTのバイクにも1年以上乗っていた。 それに、以前MTシフトコントローラを買ってドライビングシミュレーターを買っていたことから、MTの自動車も余裕かと思っていたが、意外と慣れるまでに時間を要した。

バイクではわりとスパッとシフトチェンジしていたが、クルマだと1速から2速へのシフトチェンジをスパッと行うとノッキングしがちで、バイクよりも優しくクラッチを繋げていく感覚が必要だということがわかった。

また、1速、2速では先にクラッチを切ってから、ブレーキを踏むことを教わったが、バイクだとどちらかというとブレーキが先で、出来るだけエンブレを効かせて、停止直前にクラッチをきる、というのを習うので、これもバイクと違うところだと思う。

また、アクセルを踵をつけて踏むくせがついているようで、これについて教官から何度も指導を受けた。

アクセルを踵をつけて踏む癖については、どのようなデメリットがあるのかイマイチよくわからなかったが、とはいえ教習所でのやりかたは一度型に沿った運転を学ぶという意味でも重要だと思うので、少なくとも教習中はそのくせを直して、卒業検定に挑もうと思う。

まとめ

  • 1速 -> 2速のシフトチェンジはバイクよりも優しくクラッチを繋ぐことを意識する
  • 低速では先にクラッチを切ってから、ブレーキを踏む
  • アクセルは踵を浮かせる

思い込みを排除すること

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

 

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

 

法人化予定

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が上がったと思う。

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

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