「UNIXという考え方」を読みました

2022-04-13

はじめに

ふつうの Linux プログラミング 第 2 版 | SB クリエイティブを読んでいる中で,そもそも UNIX とは何か,UNIX とはどんな考えで作られたものなのかということが気になり,以前から読んでみたいと思っていたこの本を手に取ってみました.

UNIX の設計に対する考え方や,どういった意図をもち UNIX を開発してきたのかなどについて深く理解することができ,UNIX というものに限らず,ソフトウェアを開発する者としての"古くから推奨されているであろう考え方"をある程度会得できたのではないかなと感じています.

小さいものは美しいの精神について

小さなプログラムの目的は最小限のものに抑えられ,一つのことをうまくこなすことに長けていますが,一方で巨大なプログラムは複雑になることが多く,その理解には困難が伴うと書籍の中では述べられています.

大きくなってしまったプログラムの行いたい目的を理解するために大量の複雑なプログラムを読むよりも,小さく目的を分割した分かりやすいプログラムを読むほうがバグの修正や新しい機能を実装する際に苦しい思いをせずに済むことが多々あったため,この小さなものは美しいという精神については大変共感できる内容でした.

保守のしやすさという点でも,小さく分割された目的が分かりやすいプログラムでは,バグの修正や新しい機能を実装する際の変更による処理の副作用を減らすことが出来るため,どの関数もしくは変数などを変更すればよいかということが,大袈裟ではあるが一目で分かるという点にも共感が出来ました.

試作の重要性

書籍の中では,アプリケーションの立案に少しの時間をかけ,あとはまっしぐらに進むだけだ.命をかけてコードを書く.端末が熱いうちにキーボードを打つ.と述べられていますが,僕個人としてはそれほど素早く試作を出来ているわけではなく,探り探りの状態を保ちながら様々なことを試作しています.

このブログも試作の一つとして作られたものであり,この記事を書いている時点(2022 年 4 月 13 日時点)でも,実は/blogにてリロードを行うとvercelの設定を間違っているのか,どこかにバグがあるのかのどちらかになりますが,404を表示してしまうという問題を抱えています.

プロダクトとして公開しているわけではなく,単に趣味として開発するものとしては,こういった尖った技術をブログなどといった題材をテーマとして選択し,技術を試作しながら勉強するということが出来るのはとても良いと感じられます.

移植性を優先する考え方

これまでの経験上,移植性を優先する考え方を持ちながらソフトウェアを開発することがなく,最終的に完成した時点で自身の達成目標のチェックリストを全てクリアしていれば,それで良いと考えていました.

しかし,完成したソフトウェアを使う人が増えてサーバーの負荷の影響から別の環境に移行する場合や,開発したソフトウェアを構成する技術要素に特化したために別の環境ではその技術要素が活用できず,どうにもならない状況ということに遭遇することがあるのではないかと考えるようになりました.

現段階では,私が開発しているソフトウェアは移植性に長けておらず,単に自身の達成目標をクリアしたので,その状態をキープしていようという考えで運用・公開をしています.

技術が進歩する現代,古い技術要素を使用している場合や現環境に特化した実装を行っている場合においても,移植性が高く,どんな環境でも少しの変化を加えるだけで動くようなソフトウェアを開発していけるように心がけたいと思います.

終わりに

書籍の中からいくつかの考え方を引用し,その考え方に対する自身の共感できることや初めて感じたことなどをつらつらと述べてみました.

はじめにの節で述べましたが,UNIX というものに限らず,ソフトウェアを開発する者として,読んで得た考え方を忘れずに日々精進していきたいと思います.

Share