マーティン・ファウラー (英: Martin Fowler) は、アメリカ合衆国で活動しているソフトウェア技術者である。 ソフトウェアアーキテクチャについての、いくつかの本の著者、および講演者として、広く知られている。 とりわけオブジェクト指向分析とオブジェクト指向設計、統一モデリング言語 (UML) 、アナリシスパターンをはじめとしたソフトウェアパターン、エクストリーム・プログラミング (XP) を含むアジャイルソフトウェア開発方法論の、各分野において、活発に活動している。
概要 マーティン・ファウラーの『リファクタリング』が勉強になることがたくさん書いてある素晴らしい本だったので、読んだ感想や考えたことをセクション毎などの適当な粒度でメモしていきたいと思う。www.ohmsha.co.jp今回は「第6章 リファクタリングはじめの一歩」の「フェーズの分離(p.160)」について書く。 「フェーズの分離」の概要 一つのコードが二つ以上の異なる処理を行っている場合には、二つ以上の「順次処理ステップ」に分解するとよいということが書かれている。 ※ 「順次処理ステップ」というのは、本書のサンプルコードをみた限り、事実上、関数のことだと考えて良さそうである。加えて、処理を直…
引き続き読んでいく リファクタリング:Rubyエディション作者:ジェイ・フィールズ,シェーン・ハービー,マーティン・ファウラー発売日: 2020/03/21メディア: 単行本 3章〜5章は座学的な感じなのでざっと読んだ。 6章から、サンプルコードの改良するための手法の説明になる。 6章 メソッドの構成方法 メソッドの抽出(Extract Method) コードの断片をメソッドにして、その目的を説明する名前をつける メソッドの粒度が細かく出来ていれば、他のメソッドからそのメソッドを使える可能性が高くなる。 メソッドを抽出することによってコードがわかりやすくなるなら、抽出されるコードよりも名前のほ…
高かったけど買いました。リファクタリングRubyエディション リファクタリング:Rubyエディション作者:ジェイ・フィールズ,シェーン・ハービー,マーティン・ファウラー発売日: 2020/03/21メディア: 単行本 リファクタリングとは何か? リファクタリングは、コードの外から見た振る舞いを変えずに、内部構造を改良するようにして、ソフトウェアシステムを変えていくプロセスである 第1章 ビデオレンタルのコードのリファクタリング リファクタするにはまずテストコードが必要なので、minitestで雑にテストコードを作って、本の通りにリファクタリングしてみる。(サンプルコード、いくつか誤記があったの…
概要 マーティン・ファウラーの『リファクタリング』が勉強になることがたくさん書いてある素晴らしい本だったので、読んだ感想や考えたことをセクション毎などの適当な粒度でメモしていきたいと思う。www.ohmsha.co.jp今回は「第11章 APIのリファクタリング」の「問い合わせと更新の分離(p.314)」について書く。 「問い合わせと更新の分離」の概要 関数(API)を実装する際に、副作用がある関数とない関数は明確に分離するべきという主張が書かれている。 また。 そうすることで何が嬉しいのかというメリットも記載されている。 感想 なるほどと思った箇所としては、「副作用がある関数とない関数の分離…
「DIコンテナ」という言葉を聞いたことがあっても、それがなにをする物で、どういう風に使うのかがピンと来ない人は多いかと思います(土屋もそうでした)。この記事では、Unity用DIコンテナフレームワーク「VContainer」を最小限のサンプルコードで動作させ、DIパターン/DIコンテナについて解説します。 注意 ・サンプルコードでは、わかりやすさを優先して、VContainerでは積極的に推奨していない手法*1を使用しています。 ・土屋の理解の範囲でのDIパターン/DIコンテナの解説なので、偏りや間違いがあるかと思います。なにかありましたらコメントでどうぞ。 ・サンプルコードはVContain…
マーティン・ファウラーの『リファクタリング』を読み始めました。 リファクタリング 既存のコードを安全に改善する(第2版)作者:MartinFowler発売日: 2019/12/06メディア: Kindle版 初版が出たのが 1999 年。いつか読みたいと思っていたけど、さすがに内容が古いのかなと思って読んでいなかった。 第2版が出たと聞いて調べてみたら、コード例が JavaScript になって今風になったということで読んでみることにした。 毎日ちょっとづつ読み進めていって章ごとに記事にまとめようと思う。 時間はかかるけど、この本にはそれだけの価値があるはず。 第1章: リファクタリング - …
learning.oreilly.com learning.oreilly.com javaee-study.connpass.com 引き続き Discord によるオンライン開催。 今回は Chaos Engineering の補習をしてから The Software Architect Elevator に進む。 次回は 04. Enterprise Architect or Architect in the Enterprise? から。 javaee-study.connpass.com トピック ディスカッション 20. The Case for Security Chaos En…
みなさんこんにちは!宮水です。今年も2020年エンジニアとしての振り返りをやっていきたいと思います!2019年の振り返りはこちら! 今年のエンジニアとしての振り返り2019٩( ᐛ )و - 宮水の日記 頑張ったこと① 英語 今の会社のプルリクエストが英語で書いたり読んだりするので、毎日15分は必ず英語を勉強するようにしていました。 1年続けてみて、書くことはまだまだ苦手ですが、以前よりは読むことが苦痛ではなくなりました! 英会話 3ヶ月くらいは、毎日英会話をしていました。英語を喋る機会がないので、すぐ辞めてしまいました笑 英単語 BooQsという英単語アプリを3ヶ月くらい続けました! 文法は…
現代では官僚制というとなんだか政治的でネガティブな面ばかりが取り沙汰されている面があるが、実際には業務の効率化という観点では、近代的な合理性を追求する優れたモデルである。 官僚制にはネガティブな面はあるものの、組織としてのスケーラビリティを維持するための合理性を追求することで自然と組織は官僚制に向かっていく。一度官僚制を取り入れたならば、もはやそれなしでは組織は成り立たなくなる。 マックス・ウェーバーによる官僚制の定義 官僚制を定義した社会学マックス・ウェーバーによる分類では、官僚制組織はざっくり言うと以下の性質を持つ。 標準化された職務 活動の独立(分業) ピラミッド型の体系だった命令系統 …
■ どうしてアジャイル開発が必要なのか? ・スペックレビューで要件がFIXしないことが多いから ・開発期間中、最終フェーズにおいても要件の追加、変更などが発生するから。 ・製品をリリースしても、変化した市場のニーズにマッチしていないから それにより、時間をかけて開発しても、ほとんどの機能がユーザーに利用されない事態となる。 ・市場のニーズを確認する方法がない ⇒ これらを解決するために変化を許容し、容易に軌道修正できる仕組みが必要。 ■ アジャイル開発(スクラム)とは? 複雑なプロダクトを開発、維持するためのフレームワーク 要件が不定、規模が壮大であるなど。 枠組みであり、実際のやり方はチーム…
イントロ 自分は「どうやったら技術力を上げられるかな」という点に興味があり、また最近では「組織から継続的に"成長"を与え続けられるのだろうか」という点に興味がある。 まずは自分の中の認識や仮説みたいなものを形式知としてみようと、取り留めなく散文を吐き出していたのだが、その中で幾つか重要なエッセンスがある事に気付いた。 「取り留めなく」と書いたが、実際に気づいた事や感じた事を1つの文書に纏めようとすると、実際かなり散らかってしまっている(し読むのも書くのも疲れる)。なので、ポイントを絞りながらそれぞれを複数の文書に分け、現在の観点・思考を表して見ようと思った。 この記事がその第1段である。 あく…
リファクタリング:Rubyエディション作者:ジェイ・フィールズ,シェーン・ハービー,マーティン・ファウラー発売日: 2020/03/21メディア: 単行本に、extendの興味深い利用方法が出てきていたのでご紹介。この本の、8.13 タイプコードからモジュールのextendへ(Replace Type Code with Module Extention) の内容をStrategyパターン と比較します。 やりたいこと レンタルビデオの料金計算を行うプログラムを考えます。料金の計算は、下記のルールで行います。 レンタル料は、ビデオの基本レンタル料に利用者種別ごとの割引を適用して計算する。 ビデ…
書籍マイクロサービスアーキテクチャに出てくるワード。 出典 ベースの出典は以下 JWTUMOIM: Act 3 マーティンファウラー氏のブログにまとめ記事がある。 Richardson Maturity Model どういうものか WebAPIに関してRESTfulな形になっているかの判断を行うためのモデルです。 レベル0 レベル0はひとつのURLで、ひとつのHTTPメソッドを使ってアクセスをする。中身はXMLなどで送ってXMLの中身で内容を判断するような形です。 レベル1 レベル1は複数のURL、ひとつのHTTPメソッドのイメージ。URLによって処理がわかれるが、メソッドは変わらない、という…
Serverless computing is a cloud computing execution model in which the cloud provider runs the server, and dynamically manages the allocation of machine resources. Pricing is based on the actual amount of resources consumed by an application, rather than on pre-purchased units of capacity. It can be…
9月10日、フィヨルドブートキャンプで開催されたオンラインイベント「角谷トーク」に参加した。 Ruby 界隈では知らない人がいないといってもいい角谷さん(@kakutani)が、フィヨルドブートキャンプ生のために1時間以上も話をしてくださるという大変貴重な機会だった。 "FJORD BOOTCAMP AS A GATE" とりいそぎスライドだけ置いときます。コードとか関連資料へのリンクはそのうち用意します https://t.co/OCYyx0vGHk #fjordbootcamp— Kakutani Shintaro (@kakutani) 2020年9月10日 当日の動画が公開されたので詳…