techblog

記事一覧

【ソフトウェアアーキテクト入門】アーキテクトとはどんな役割か?

私たちは、ソフトウェアアーキテクチャの仕事を、1. システムの構造2. システムがサポートしなければならないアーキテクチャ特性3. アーキテクチャ決定4. そして設計指針 の組み合わせであると定義した。

【ソフトウェアアーキテクト入門】どのように勉強すればいいか?

アーキテクトは特定の技術や実装方法については深くは触れない。広く浅く技術に触れたほうがよい。 次に、アーキテクトは「結果」よりも「過程」を重要視したほうがいい。つまり、どうやって意思決定を行い、どのようにトレードオフを見極めるのが正解かを勉強する。

【ソフトウェアアーキテクト入門】アーキテクチャ用語一覧

アーキテクチャ界隈にてよく出現する単語を書き出してみました。

【アーキテクチャ設計基礎】非機能要件とは何か?

非機能要件とは、「機能以外のアプリケーションの構造に影響を与えかつサービスの成功基準となるもの」である

【アーキテクチャ設計基礎】循環的複雑度とは何か

アーキテクトはプロジェクトのあらゆる局面で、さまざまな観点からシステムの要件を分析し続けなければならい。パフォーマンス、弾力性、スケーラビリティなどの運用特性から、モジュール性やデプロイ容易性までの構造的な関心ごとまで全ての分析する。

【アーキテクチャ設計基礎】適応度関数とは何か?

アーキテクトがアーキテクチャ特性を明らかにして改善するべき優先順位をつけた後、開発者にその優先順位を守ってもらうためにはどうすれば良いか。特に、「アーキテクチャのモジュール性」は緊急ではないが重要であると誰もがわかっているはずだ。しかし、その重要項目の改善業務に開発者を充てる方法はどのような数値を指し示せば良いだろうか。

アーキテクチャスタイル一覧

アーキテクトを学ぶ意義の理解。特に、アーキテクトスタイル(アーキテクチャパターン)のことについて。アーキテクトスタイルとは、さまざまなアーキテクチャ特性をカバーする、コンポーネント同士の名付けられた関係を説明するもの。

レイヤードアーキテクチャとは何か?(メリットデメリットの解説)

レイヤードアーキテクチャは、n層アーキテクチャとも呼ばれており、最も一般的なアーキテクチャのうちの一つだ。このアーキテクチャは**シンプル**さや**親やすさ**、**コストの低さ**からほとんどのアプリケーションのスタンダードの形となっている。

パイプラインのメリット・デメリット【アーキテクチャ用語集】

関数型プログラミング言語の考え方を拡張子かのようなアーキテクチャ。bashやpowershellなどのosの言語に近い構造を持つ。プログラミング言語は低いレイヤーの話であるが、今回のアーキテクチャはより高次元である。

プラグインを使用するシステムの実装方法

マイクロカーネルアーキテクチャは別名、プラグインアーキテクチャと呼ばれている。システムは「コアシステム」「プラグインコンポーネント」の二種類から成り立ち、中央集約型の「コアシステム」に対して「プラグインコンポーネント」を取り付ける形で構成される。

サービスベースアーキテクチャのメリットとデメリット

このアーキテクチャは「ドメイン管理方式」である。(技術管理方式ではない)したがってあるサービスの改修が入った場合、その他の改修を行う必要はなく、関係のないコンポーネントのビルドも防ぐことができる。サービス単位でテストを組むこともできるため、ソフトウェアの品質を高く保つことができる。

イベント駆動アーキテクチャのメリットとデメリットと使用例

イベント駆動型アーキテクチャスタイルは、非同期通信のみに依存するという点で、他のアーキテクチャスタイルに比べて独自の特徴を提供します。非同期通信は、システムの全体的な応答性を向上させるための強力な手法です。

スペースベースアーキテクチャのメリットデメリット

スペースベースアーキテクチャの概要と構造、メリットとデメリットを解説します。

オーケストレーション駆動サービス指向アーキテクチャ

このアーキテクチャは「アンチパターン」に属している「ある組織的な考え方が、理屈は通っていても、開発プロセスの最も重要な部分を妨げてしまうことがある」ということを示すアーキテクチャになってしまっている。

マイクロサービスアーキテクチャのメリットとデメリット

マイクロサービスは分散アーキテクチャを形成し、各サービスは独自のプロセスで実行されます。これは元々は物理コンピューターを意味していましたが、すぐに仮想マシンとコンテナーに進化しました。

リファクタリングをするべき5つの理由

システムのリファクタリングはタダでできるモノではありません。利害関係者にリファクタリングのメリットと必要性を訴える必要があります。そのためにはシステムのモジュール化/リファクタリングのメリットをエンジニア自身が納得しなければなりません。リファクタリングをするべき5つの理由を解説します。

保守性の高いシステムと低いシステムの違い

機能の追加、変更、削除だけでなく、バッチファイルやフレームワークなどのアップグレードの適応も容易である性質を意味する。を意味する。では保守性の低いシステムとはどのようなシステムだろうか

大規模なリファクタリングを行う2通りの方法【リファクタリング入門】

大規模なリファクタリングを行うには二つの方法がある。できるところから少しずつやっていく方法は優れたリファクタリングでないことが多い。そうではなく、だ規模なリファクタリングを効率的に行う方法をこの記事で解説する。

ソースコードの行数はどのぐらいが適切か?【リファクタリング入門1】

アプリケーション内のコードのサイズが一定の水準であることは重要であり、一般的にコンポーネントの平均値から偏差値1~2以内に収まっているべきである

ソースコードの共通部品を抜き出す【リファクタリング入門2】

ソースコードの共通部分を部品として抜き出し、部品化することは再利用を促し、リファクタリングに確実につながる

コンポーネントのフラット化とは何か?【リファクタリング入門3】

名前空間の末端以外にクラスがあることは一般的には回避するべきである。この、名前空間の末端以外に存在するクラスを、**孤立クラス**と呼び、この孤立クラスをなくすことをフラット化と呼ぶ。

依存関係を明らかにする【リファクタリング入門4】

コンポーネント同士の関係を表す図表は、リファクタリングの際の妨げになりうる要素を探す探知機となり得る。コンポーネントの結合度は、モノシリックなアーキテクチャの移行作業の実現可能性を決定する重要な要因だからだ。

名前空間の設計方法【リファクタリング入門5】

名前空間の設計について解説。アプリケーションのコードの設計で最も大きな枠となるのが名前空間である。アプリケーションがきちんとした設計を保ち、保守可能な状態を維持できるかは名前空間のしっかりとした設計が第一となる。

分散システムへの移行方法【リファクタリング入門6】

コンポーネントのドメインが名前空間によって明確に分けられてる場合、そのコンポーネントの分離をサービスレベルにまで分離し、サービスベースアーキテクチャを構成する。