見出し画像

【記事紹介記事】 ソフトウェアの長持ちする設計について

Software should be designed to last
"ソフトウェアは長持ちするように設計されている必要がある"

スペイン人のBlockchain Technological Expert @adlrocha さんが毎週配信してる無料ニュースレター @adlrocha Weekly Newsletter から以下の記事を紹介。

Software should be designed to last  And why I am trying to minimize my dependence on external libraries (whenever possible).

記事のURLはこちら  https://adlrocha.substack.com/p/adlrocha-software-should-be-designed

ソフトウェアの依存性を最小限にすべきだという主張について。

自分の得意なプログラミング言語を使用してプロキシサーバーを構築することを考えます。Web​​フレームワークを選択し、少しのグルーコードとテストを追加すればある程度の準備が整ってしまうはずです。

この問題点は何でしょう?

Bytecode Allianceのこんな記事が紹介されています。
 Announcing the Bytecode Alliance: Building a secure by default, composable future for WebAssembly

画像2

参照: https://bytecodealliance.org/articles/announcing-the-bytecode-alliance.

アプリケーション開発は外部ライブラリを再利用しようという方向に発展し、レジストリからダウンロードされたモジュールでほとんどが構築されています。実にコードの8割が他人のコードでオリジナルのコードは残りの2割程度というものです。

この手法は生産性の向上に役立ちました。ソフトウェア開発は "move fast, break things" (素早く行動し破壊せよ)  という哲学に本当に影響されてきました。これはfacebook社の当初のモットーでもありました。

画像1

facebookは新たなモットーを掲げました。"Move fast with stable infrastructure"(安定したインフラとともに素早く行動せよ)これは同社のソフトウェア開発が成熟し安定性に重点をおいたとも言えるでしょう。

Zuckerberg: 'Move fast and break things' isn't how Facebook operates anymore

長持ちするようにソフトウェアを設計するには内部の構造について深く理解している必要があります。この点についてSpaceXのソフトウェアエンジニアリングについての記事が紹介されています。

Software Engineering Within SpaceX

彼の主張はライブラリの使用を完全にやめるのではなく、よりスマートに使用するべきとということです。

Why I Don’t Use Go Web Frameworks という記事ではGoを使ったWebの開発について、度々Webフレームワークを使ってきたが、Go自体がすでにWebフレームワークとして十分であるため、必要ではなかったと述べられています。

“stop abusing dependencies” (依存性を乱用しない)

依存性の乱用を避けるべき理由について4つ挙げられています。

1. 使用するライブラリと外部の依存関係が古くなっているか、メンテナンスが十分に行われているか、セキュリティの問題やパフォーマンス上のボトルネックが潜んでいる可能性がある。

2. ライブラリの利用はコードのサイズとコンパイル時間を大幅に増加させる可能性がある。

3. ライブラリの利用は、多くのトレードオフを持ち、設計が制約され、また潜在的な障害点を生み出す場合がある。

4. ライブラリを使用せずに、自分で作ることは困難で楽しいもの。

4については一生に一度はアプローチするべきだと述べられています。

本日はこの記事を紹介させていただきました。

Software should be designed to last  And why I am trying to minimize my dependence on external libraries (whenever possible).




この記事が気に入ったらサポートをしてみませんか?