Techいつもコードのことばかり考えている人のために。初版、たぶん読んだはずだけど、全然覚えていないので第2版を購入。JavaScriptには慣れていないけど、特に読む上で支障は無かったです。分厚い本なので、最初から読むとけっこう挫折してしまうかも...特に大部分はリファクタリング作業のカタログ集なので、頭から読むにはちょっと適していない構成です。ある程度リファクタリング的な作業を経験した人であれば過去にやったことの有る作業を拾い上げて、自分の暗黙知を形式知にしていく読み方がお勧めですね。リファクタリングを経験したことが無い人だったら、迷わず第10章から読むことをお勧めします。複雑で難解なコードは、複雑な条件式(ifとかswitchとか)が入り組んでいることが多いので、それをシンプルに読みやすく書き下す方法が有る、ということを学ぶためにもこの章の「条件記述の分解」「条件記述の統合」「ガード節による入れ子の条件記述の置き換え」はとても学びが多いですね。あと、「アサーションの導入」も最初に学んだ方がいい事項と言えるでしょう。「ポリモーフィズムによる条件記述の置き換え」は、複雑なコードを単機能に分解するには有益ですが、ちょっと改修範囲が大きくなりすぎますしね。第10章以外は、導入するには影響範囲もそれなりに大きいものが多いので、関数に閉じて適用できる第10章がお勧めです。小さいところから始めましょう。あとは第3章の「コードの不吉な臭い」、続く第4章の「テストの構築」と続けて読むと理解が深まると思いました。ダメなコードを指して、なぜダメなのか?ということを理解するのが大事ですね。先人たちが必ずしも正しいわけではなく、たまたまそうなっただけなのに、それを鵜呑みにするのは良くなくて、歴史的な経緯に敬意を払いつつ、ダメなコードはダメ、という姿勢でいきたいですね。「コレクションクラスのカプセル化」は、昨今のプログラミング言語におけるコレクションライブラリが非常に高機能になっている中、割とシンプルなコレクションクラスを想定して書かれているような印象でした。すべての操作をカプセル化することはできないですが、主に参照のために用意されているさまざまなメソッドを、単にコピーを返す、という方法だけで良いかは結構議論が分かれる気がします。読み進めておいて、必要になった時、自分の経験と一致するようなトピックがあるときなどに読むと良いですね。2020若干ウォーターフォールとアジャイルの対立を煽り過ぎだな、と感じる前半戦(別にアジャイルにしたからといって成功するわけでもないし)と、散発的なテーマが並ぶ後半戦、なぜかやたらと詳細なテスト関係...と、正直これを読み込んだからといって新しい発見があるというより、冒頭のツイートでも書いたように、色々なテーマが詰まっているので、読書会などで自分の経験とか考えをまとめるきっかけにすると良いな、と思いました。3日間くらいかけてメモを取りながら読んだところ、さまざまな過去の経験がよみがえってきたので、メモを取りながら疑問点とか、過去の振り返りを書き出しながら読むのがお勧めです。It!」を読んだ副題にある通り「プログラマのためのアーキテクティング入門」ということで、どうやってシステムのアーキテクチャを設計していくか?という課題に対して向き合うための方法を示してくれる本です。いえ、所謂アーキテクチャカタログ集ではないので、即効性の有る内容ではなく、ゼロベースでアーキテクチャを決めていくための思考のステップを示してくれる内容なので、具体的なアーキテクチャにつながる技術要素は、ここに示された内容を元に情報収集し、判断し、決めていくしかないですね。設計の選択肢を評価するアクティビティ特に1章から4章まではマインドセット的な内容も多く、アーキテクチャ設計のステップを知りたい人はまずは5章の「アーキテクチャ上重要な要求を掘り下げる」から読むと良いでしょう。「制約」や「品質特性」など、必須の重要キーワードが出てきます。6章〜7章がまさに具体的なアーキテクチャを決めていくステップになっているので、最初は5章〜7章までをじっくり読むことをお勧めします。8章から13章は、それをより良くするための手順や、視点ですし、14章以降はより具体的な手法になっています。このあたりは必要に応じて拾い読みすると良いですね。アーキテクチャをタンジブルにするこの本を通じて「アーキテクチャをタンジブルにする」という印象的なキーワードが出てきます。「タンジブル(tangible)」は”触れられるようにする”という意味ですが、必ずしもアーキテクチャを図示することを意味していません。アーキテクチャをタンジブルにする」には以下のように書かれています。アーキテクチャを図に描く、アーキテクチャをコードの中で生き生きと表現する、構造や品質特性を体験できるようなプロトタイプを構築する、アーキテクチャの一部がどう機能するかを示す簡単なモデルを作成する、関連するメタファーを作成する、システムの制御フローの一部を身振りで伝える、などだ。ドキュメンテーションだけが方法ではなく、色々な手段が有ることを示しているのが良いですね。16章にはそのための具体的な手法が紹介されています。おわりに繰り返しますが、この本はアーキテクチャカタログではないので、これを読めばすぐにアーキテクチャデザインができるわけではないですし、特定のアーキテクチャを想定したものでもないので、技術的な情報収集はゼロからやっていく必要が有ります。いにしえの”LAMP”とか、”まずはRails”、という時代ではなくなり、色々な選択肢が無限に有る中、ゼロベースで考える場面が多くなってきた現代ではこのような”思考のガイドライン”がますます重要になってきたと思います。すべてのアーキテクチャ上の決定を細部までこの本に合わせてやっていると、今度は時間が足りなくなるような気もしますが、アーキテクチャ上の重要な意思決定を行う際には、このような原理原則に立ち返る瞬間はきっと必要だと思いました。アーキテクトを目指す人は、一度流し読みをしておいて、いざという時に立ち返れるようにしておくと強力な武器になるのではないでしょうか。2019の8日目の記事です。7日目は@kfly8さんでした。worthmineさんにコメントで、クロージャの定義が間違っているとご指摘頂きました。思い込みで誤ったことを書いてしまいました。原点に当たらないとダメですね。記事の内容が間違っているので、一度見直すためにクローズします。Professionalをメインで使っていて、それはそれでまったく壊れる気配がまったく無くて、買い換える必要は無いのだけど、別の環境で使っている、ちょっと前に買ったメカニカルキーボードがどうにも相性が悪く、使いづらかったので、思い切って購入。Edition」とどっちを買うか迷ったけど、結局サイズ感が慣れているので。これまで使ってきたキーボードの中でこれに匹敵する打鍵感はたぶん無い。Keyboardが近い気もするけど、ここまで静音でもないし(というか、今では入手できないし)。言うわけで、テンキーやカーソルキー、ファンクションキーにそこまでこだわらない人(つまりvimユーザーか...)は、一つ持っておいて損は無いと思う。手入れしながら使えば平気で15年以上は使えてしまうので、コストパフォーマンスは素晴らしく良いし。#3へ参加してきました。第1回、第2回と絶妙に参加できないタイミングでの開催だったので、次こそは!と思っていましたが、タイミングが今回は合って参加することができました。そもそもAirframeというのは、作者の@taroleoさんがScalaを使った実プロジェクトの中で得られた知見を元に作られていて、非常に実用的なライブラリ集です。Injection、JSON、MessagePack、HTTP、Loggingなど多種に渡る機能が一通りそろっています。詳しくは公式ドキュメントを見てください。wvlet.orgリポジトリは、以下のリンク先に有ります。github.comScala、コレクションライブラリを除くとコアライブラリもそこまで品揃えは充実しておらず(ときどき分離されたりするし)、かといって定番ライブラリも同じジャンルにけっこう似たようなものが多く、選ぶのに苦労します。そんな時に、まずはこれを見て用途に合っているものが有るか、探せるのは非常に有りがたいですね。今回は、そんなAirframeの最近の開発状況が紹介され、続けてLT3本という構成でした。Actionでビルドを効率化した話が興味深かったですね。Specは、ミニマルと、過剰の中間を狙った、という話に感心しました。SpecでScalaのテストに入門するのはありだな、と思いました。資料のリンク先を張っておきます。Injectionの歴史や、各ライブラリの特性についてのご紹介でした。おわりに@taroleoさんの落ち着いたトーンでのしゃべり方が、イベント全体の雰囲気を形作っていて、空気感が良かったですね。落ち着いていて、そして非常に正しいエンジニアリングというか、問題をきちんと解決する方法を考え、実行し、広めていくっていう姿勢が見られて非常に感銘を受けました。あと、@taroleoさんは、「データ指向アプリケーションデザイン」の監訳を行われた訳ですが、終わった後の会場でその辺の話になったのが良かったですね。ペーパーバックこの商品を含むブログを見るまた、ぜひ参加したい、と思わせてくれる、そんなミートアップでした。PDで充電できる機器もけっこう有る。PDをサポートした複数ポートの充電器はいっこうにリリースされていなかった。PDの中でも比較的容量が大きい60wだけど、これも対応した充電器の選択肢が全然なく、結局純正品がベスト、みたいな状況がずっと続いていた。2ポートの充電器が発売された。Proも充電したいし、ガジェット系をまとめて充電したい、という希望にコレ一つで対応できる。あと、ちゃんとPSE認証も通っているので、安全に使える点も良い。大きさもAppleの充電器より小型なので、持ち運びには丁度良い感じ。一つだけ注意点は、Type-C→Lightning変換ケーブルを挿しておくと、実際にiPhoneを繋いでいなくても機器がつながった状態と認識され、もう一つのポートが最大30wになってしまうところ。両方Type-Cしか接続しなければ、実際に機器を繋いだ時だけ認識される。ケーブルを挿しっぱなしで運用したい人は要注意。PD対応機器を2個以上持っている人は、まずは迷わずこれを買った方がいい、お勧めです。充電のためのUSBケーブル充電器を買ったら、次はケーブル。5Aに対応したケーブルを一本用意しておくと間違えずに済む。基本機器付属のケーブルは使わない、くらいが混乱せずに良い。最近だとELECOMのが安いし、ケーブルの長さも0.5mと、1.0mが選べて良い。自分は、周辺機器用と、充電用に、0.5mと1.0mを一本ずつ用意しています。2.0対応だったら、ケーブルの長として2.0m、3.0m、4.0mが選べるけど、とにかくUSBケーブルは堅くて、取り回しに不便なので、そんな長いケーブルを用意するくらいなら普通の延長コードを用意しておいた方が全然良いです。先日、3.0mを買ってみたけど、使うときだけ繋ぐ、という使い方には全然向いて無かった。あとは充電器がType-Cになって付属しなくなったけど、MagSafe時代の充電器には必ず付属していた電源アダプタ延長ケーブルは、今でもそのまま使えるので、こちらを使うのもお勧めです。使わずに余らせている人が多いと思うので。Computersこの商品を含むブログを見る充電器と、ケーブルの持ち運び充電器と、ケーブルをセットで持ち運ぶ時には、このペンケースが案外丁度良くて、充電器と2.0mのケーブルを横に並べて綺麗に収まります。Type-C充電器の決定版が出たので、Type-Cが増えてきた人にはお勧めです。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。