'sqr'atch-note

ちりはつもれど ちりぬるを

『APIを作りながら進むGo中級者への道』読んだ

techbookfest.org

  • 同人誌だと1000円くらいのイメージだから、本書は2500円もするので、初見ではちょっとびっくりする。とはいえ、本書は500ページを超える大作だし、内容も素晴らしく、値段以上の価値はあると思う
    • 試し読みもあるので、どういう内容か雰囲気をつかめる
    • Go言語の基礎文法を学んで、簡単なWebアプリケーションを作ってみた後に、次はどうすれば良いのか悩んでる場合に非常におすすめ
  • 本書は、ブログサイトのWebアプリケーションを作っていく
    • まずナイーブな実装を行い、それがなぜ駄目なのか、どうリファクタリングしていくかを丁寧に説明してくれているので、初心者にとって非常にありがたい
    • 出版される場合だと、誌面の都合上で言葉を削り、説明をある程度簡略化する必要があると思われるので、ちょっとニュアンスが掴みづらくなるケースもあると思われるが、本書はかなり丁寧に説明してくれている印象がある
    • 機能を拡張してリファクタリングしつつ、最終的には、変更に強いデザインパターンの一つであるクリーンアーキテクチャに従ったコードベースを作り上げていく
      • ただし、本書ではクリーンアーキテクチャについては、詳しく説明はされていないので、もっとクリーンアーキテクチャについて知りたいとなったら、『ちょうぜつソフトウェア』を参照すると良いと思う
  • 他の本書レビューを見ると、本書で使っているgorilla/muxがアーカイブ化されているという記述があり、その時はアーカイブ化されているならgo-chi/chiを使えばいいやと思って特に気にしなかった
    • しかし、最近だとメンテナーが見つかってアーカイブ化解除されているような雰囲気がする(あまり調べていない)
    • とはいえ、gorilla/muxとgo-chi/chiのどちらも標準ライブラリのnet/httpとの互換性があるので、別にどっちを使っても変わらないのがGolangの良さ
  • 去年の同じ頃、クリーンアーキテクチャに関して、言葉は知ってるという程度で『詳解Go言語Webアプリケーション開発』を読んで、実際よく理解できず、その次にもう少し理解しようと『ちょうぜつソフトウェア』を読んだり、Udemyの動画も見て勉強してきたが、やっぱり十分に理解したという感覚は得られなかったものの、今回改めて本書でクリーンアーキテクチャに従ったコードを書いてみて、ようやく理解できたように思う
    • Golangの文法は分かったし、ライブラリを使って、ちょっとしたプログラミングは出来るものの、何かが足りない気がする、というタイミングで本書を読んで、どう書けばより良いコードになるかの設計の考え方が分かったので、そういう意味でタイトル通りの良書だなという感想を抱いた
    • 次はWebAPIの設計について勉強してこうかなーって思っている

全ステ野良カンスト達成!

  • 9/1(日)のドンブラコシフトで野良カンストを達成して、ようやく全ステージで”でんせつ999”となった
  • 2022年12月から野良カンストを目指してサーモンランだけをやり続けていたのにも関わらず、2年近くもかかってしまった。正直、こんなに時間がかかるとは夢にも思っていなかった
    • 現時点でスプラトゥーン3の総プレイ時間は1340時間。2022年12月までに450時間プレイしていたので、900時間近くサーモンランだけをやっていたことになる
    • それを考えるとだいぶサーモンランのセンスないねって感じはするけど、これだけやっても全然飽きが来なかったのは、サーモンランというゲームがそれだけ魅力的だったということ。しらんけど
  • 今回のドンブラコ編成は、プロモデラーMG、シャープマーカー、モップリン、リッター4Kという編成
    • シューターが2枚に加えて、雑魚シャケに無類の強さを誇るモップリン、そして使い方が難しいリッター4k。個人的には、リッター4kがRペンだったら理想的かなーって思った
      • リッター4kは、射程が長いものの、チャージ長い&1発のみだけなので、使い方がなかなか難しい。なので、割と動きやすそうな編成だったけど、野良カンストいけるか不安はあった
      • もし、リッター4kではなくRペンなら、1回フルチャージで1発240ダメを5発撃てるので使い勝手が良く、HP500のオオモノを処理して、さらに2発残ってるので1回のフルチャで2匹のオオモノを倒すこともできる。さらに、意外にも射程が長いので、それなりに遠くから処理を行えるのがよかった。
      • ただ、対雑魚シャケが圧倒的に弱いため、他に雑魚シャケ処理が強いブキが編成にいるとRペンも動きやすくなる。今回の編成で言えば、モップリンがまさにそれだった
  • 全ステ野良カンストをしてぼくのサーモンランも一区切りがつき、そしてビッグランも9/7(土)を最後にもう開催され無さそうなので、少し寂しい

ドンブラコ7/27シフト

  • ドンブラコ、今回も野良カンストに至らず・・・・!
  • 今回のブキ編成は、「LACT-450、スプラローラー、ドライブワイパー、バレルスピナー」
    • ステージが難破船ドンブラコとしては、正直なところ全体としてブキが弱めな印象
  • なんとか数をこなして、900まで評価を上げたものの、シフト終了。全体的に納品ノルマ達成できず失敗という回が多かった気がする。ブキが弱めだったから、シフト前は全滅終了が多いかと思ってたけど、実際はそんなでもなかった。
  • とはいえ、小回りがきいてDPSの高い外回りが出来るブキが無いので、正直きつかった。満潮がありがたくて、通常ウェーブが非常につらかった
  • いつもドンブラコに強い編成が来て欲しいなって思っているけど、バイトに慣れすぎたためか、強い編成だとどうしても作業感が出てしまって、平均よりもちょっと弱めくらいの編成の方が楽しめるのかもと今回思った。が、いい加減ドンブラコの野良カンストを達成したいので、作業になってしまってもいいから、強い編成が来て欲しいなと強く思う
    • 7/28から始まったトキシラズは「パブロ、バケツ、モップリン、96ガロン」っていう対雑魚シャケ、対オオモノシャケに強い編成だと思うし、こういう編成がなぜかドンブラコだけ来ない。どうにも作為的なものを感じる・・・
  • 満潮時に、コンテナ前通路にナベブタが左右両方に付いてしまうとやっぱりしんどい。かつ、そのタイミングで左右からヘビが来てしまうとほんとに無理で。なお悪いことに、ヘビの付いたアルバイターが、ヘビを伸ばしてくれず(船首に移動してヘビをまっすぐにして変な挙動をさせない動き)、とぐろをまいて周りのアルバイターが立ち回りしにくくなるという。
    • こういうときに、対処できるスキルを身につけたい。というか、そういう状況に陥らないような立ち回りが必要・・・。難しい

ドンブラコ7/13シフト

  • プロモデラー、ボトル、ダイナモ、ハイドラ構成
  • 重量級ブキが2枚入っており、動きやすいシューターが2枚という構成
  • パッと見たとき、野良カンスト常連向けのエンドコンテンツ的シフトだと思った。ステージがドンブラコという凶悪ステージなのに、重量級ブキが2枚も入っていては、動きづらい上に納品足りず非常につらいだろうと思われるから。ハイドラしか入っていない編成でも気持ち納品多めで意識していないと納品数が足りず失敗するということがまま起こり得る
  • いざバイトしてみて思ったとおり非常に厳しいシフトだったけど、ちゃんとダイナモとハイドラが使える人であれば、その火力をもってオオモノ処理が非常にサクサクいくので、想像していたほどにはしんどくは無かったように思う
    • が、重量級ブキが1枚でも落ちると、そして通常時に遠くで味方が落ちたときには非常に厳しかった。一方で、満潮時はやりやすかった気がする
    • 満潮の狭い船上で圧倒的火力がいて、処理が上手くいくとここまで動きやすくなるんだという発見。カゴ金網前にナベブタが止まると、雑魚シャケ処理が大変で先に進めず、オオモノ処理が滞ってカオスになるというケースが割と多いんだけど、今回はダイナモがいるので雑魚シャケをものともせず処理でき早めのナベブタ処理が出来てたように思う。ドンブラコで、クマローラー配布されたら楽しいかもと思った
  • オカシラ戦は非常に楽しかった
    • とりあえず、ハイドラがフルチャージでずっと殴っていれば良く、それ以外のブキがオオモノ処理とザコシャケ処理をして居れば、かなり余裕で討伐できた(タイムアウト失敗は無く、全勝だった)

Mac使う理由?

sosukesuzuki.dev

  • MacBook Proはクソ高いので、プログラミング環境のために使うとを考えると、わざわざ買う理由は無いと思う
    • いや実はプログラミング環境においてもmacOSの優位性が何かあるのかもしれない・・・
    • ぼくがMBPを使ってる理由は、iPhoneiPadを使っていて、ラップトップもApple製品にした方が利便性が高まるから、という理由がいちばん大きい(加えて、US配列を使いたいという理由もある)
      • ラップトップを使っている理由は、家の中でソファに横になったりして使ったり、テレビを見ながらPCを使ったりする場面が多いので、デスクトップPCではなく、ラップトップの方が便利だから
      • デスクトップPCを母艦にして、性能の低いラップトップをシンクライアントとして使うということも考えたことがあるが、そこまでしてデスクトップPCを使いたい思いも強くないため、現状のスタイルになっている
  • 今時のmacOSの優位性って何だろうか
    • WindowsにWSLがあり、Linux環境がシームレスに使えるようになった今、MBPを開発環境として使う優位性は、ほとんど無いのではと思う
    • 開発環境として使うだけであれば、MacBook比でより安く、より大きなメモリが使えるWindowsノートの方がコスパは良いように思う
    • DTPDTMは今でもmacOSが良いのかどうか知らない。RAWの現像もどうなのか知らない
      • ちょっとだけ調べた限りでは、アップルシリコンの処理速度でIntelより有利なケースはあるようだ
      • そういうクリエイティブな作業ならメモリを大量に使える方が有利なはずで、大量のメモリが安く使えるWindowsに軍配が上がるように思う
      • ただ、ソフトウェアはmacOSの方が使いやすかったりなどのWindowsに代えがたい理由もあるかも
  • ぼくのケースで言えば、macOSを使わざるを得ないからMBPを買った、という完全にベンダーロックイン状態であるため、好ましくない状況ではある
  • まあ、MacBookは最初の一台を買うのには費用が多くかかるものの、リセールバリューが高く、売却時にも購入価格の50%以上を回収できるという利点はある

LinuCレベル2まで取得した

  • Linuxを触るようにかれこれ10年くらい経つけど、未だに自分の知識に自信が持てなかったので、知識を確認するためLinuC取得してみようと思い、受験した
    • LinuCとLPICがあるので、どちらを取得するか検討した結果、ぼくはLinuCを選択した
    • LPI内部で内紛があって、分離して新しくできたのがLinuCという認識で、LPICが昔からあるし、たいした違いは無いだろうと思い、LPICの方をping-tで解いていたものの、問題の内容が非常に古くさい印象を受けて、LinuCの試験範囲と問題を解いてみたら、後発であるためか内容が比較的新しいような印象を受けたから
  • レベル2までパスして抱いた感想は、結局ぼくが思っていたようなLinuxの知識は得られなかったなということ
    • でも、Linuxを触りたての1〜2年くらいの人が受験する分には非常に良いだろうと思いはした
    • Linuxの基礎知識を体系的にタイパ良く身につけられるし
    • 特にレベル1は、Linuxの基礎が詰まってるので、取って損は無いと思う
    • レベル2は、時間があったら取得を目指してみたらいいんじゃないのかな、というくらい
      • Apache/nginx、BIND、SquidPostfixなどのミドルウェアが出題されるけど、正直最大公約数的な内容なので、これを知ってるからと言ってメリットがあるようには思えない。このレベルの内容を知っていたとしても、実務においては"浅すぎて"使えないし
  • レベルごとに2回試験を受けなくちゃいけなくて、1回の費用が1万6千円するので、なかなか気軽に出せる金額では無いが、ping-tの問題を繰り返して解いて行けば合格は出来るので、難しい試験では無い気はする
    • ちなみに、ping-tの問題の丸暗記では解けないような、独特な言い回しの判断を求める文章題が出されるが、正直試験をパスするだけを考えれば、そんな問題は捨てても、ping-tで出題されるコマンドのオプションなどをしっかり覚えていれば大丈夫な暗記問題がほとんどなので合格はする
    • Linux初心者の場合は、ping-tのコマ門(コマンド問題)を6割くらい取れるくらい練習すると、暗記問題は安定して解けるようになると思う(ping-tで選択肢式の問題だけをやってると、再認さえ出来れば解けてしまい、覚えてるような感覚になっちゃうけど、暗記問題がちゃんと解けるためには再生出来る必要があるため)
  • 去年11月16日から勉強をして12月にLinuCレベル1を取得。今年の早々にLinuCレベル2も取得しておこうと思ったが、1月と2月はAtCoderばかりに時間を割いてしまい、全然対策が出来ず先延ばしになってしまった。2〜3月も何やかや忙しく、結局LinuCレベル2の対策が始められたのは4月で、5月2日に201を取得し、6月1日に202まで取り切れた
    • 去年11月からやってたので、結構長くかかってしまった気がするけど、実質的に合計4ヶ月でレベル2まで取得できた様子
  • 今後の予定は、LinuCレベル3の302を取ろうかと思っている

『TCP/IP&ネットワークコマンド入門』読んだ

TCP/IPプロトコルスタックの4層をPart1〜Part4に分けて、コマンドを入力し手を動かし目で見て理解していくという構成になっている入門書。コマンドベースで手を動かしながら各層の動きを見ながら理解していけるので、初心者にも取っつきやすいのでは無いか。

  • 理論が要点を押さえてコンパクトにまとまっており、理論を確認するために手を動かしコマンドを入力してパケットキャプチャを使って目で見て確認するという構成で、理論と実践のバランスがとても良くて、入門書として非常に良いと思った。人にお勧めしたい。
    • 各Partの扉絵に内容のガイドが書いてあり、今から何をするのかと分かりやすいと思う。
    • (本文p97)
    • そして、文章が読みやすく、図表も多用されている上に、図には吹き出しでコメントも入っており、本文の作りが丁寧。
  • 少しネットワークコマンドで操作したことがあるくらいの人は、結構楽しく読めるのでは無いかと思った。
  • 入門書にありがちなのは本当に基礎的な話しかしておらず、まあ確かに入門書だけど次に繋がりづらい入門書だという場合があるけど、本書は新しめのQUIC、HTTP/3に加えて、発展的内容としてNetwork Namespaceを使ったネットワークの確認方法も書かれており、良かった。
    • キーワードが抑えられているだけでなく、パケットが正常に流れている状態を観察するだけでは無く、パケロスを発生させてみて観察する箇所もあり良い。
  • 本書を読んだ後、もっとTCP/IPについて知りたいと思ったら『TCP/IPネットワークコンピューティング入門』がおすすめ。
    • また、TCPに特化して詳しく知りたいという場合は『TCP技術入門』がおすすめ。こっちはTCPの機能のうち特に輻輳制御について詳しく書かれている。輻輳制御はTCPの肝の機能であるため、輻輳制御アルゴリズムをちゃんと理解しておけば、TCPを分かってると言っても良いのではないかなと個人的には思っている。