MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

5.美はシンプルさに宿る Jorn Olmheim:『プログラマが知るべき97のこと』

# 目次

# はじめに

以下の記事は,オライリージャパン社から出版された

『プログラマが知るべき97のこと』

の中から1つのエッセイを選び,

そのエッセイを,クリエイティブコモンズ3.0の条件の元で転載したものです.

Creative Commons ― 表示 3.0 アメリカ合衆国 ― CC BY 3.0

もし,他のエッセイを読みたい場合には,

記事末のリンクを辿るか,

以下のリンク先のTwitterアカウントのつぶやきからお探し下さい.

Twitter Account: 97 Things Bot



5.美はシンプルさに宿る ヨルン・オルハイム(Jorn Olmheim)

ひとつプラトンの言葉を引用します.

ソフトウェア開発に携わる人ならば,

是非知っておく言葉,

常に心に留めておくべき言葉だと思います.

「文章にしろ,

 和音にしろ,

 リズムにしろ,

 美しく,

 優雅なもの,

 優れたものはすべて

 シンプルである.」



この言葉には,

ソフトウェア開発において,

大事にすべきことが見事に要約されていると思います.

 

プログラマがコードを書く時に

留意すべきことはいくつかありますが,

まとめればだいたい次のようになるでしょう.

・可読性

・保守性

・開発効率

・(言葉で表現するのが難しい)美しさ



プラトンの言葉が教えてくれるのは,

シンプルであることを心がければ,

上のすべてが自ずと達成できるということです.



4つ目の美しさとは,何でしょうか?

コードが美しいとはどういう意味なのかは,

曖昧で,なかなか明確にはわかりません.

美しいかどうかは,どうしても主観的な判断になります.

何を美しいと感じるかは,

その人の経験や嗜好によって大きく影響されるでしょう.

美しさに限らず,

感じ方というのは,どうしても一人ひとり異なってしまいます.

例えば,

いわゆる「芸術家」の美的感覚(少なくとも「美しさ」に対する考え方)は,

きっと科学者とは異なっているでしょう.

芸術を学んだ人が,

「ソフトウェアの美しさ」という言葉を聞けば,

それは芸術作品のような美しさのことだと思うでしょう.

一方,

科学を学んだ人は

「ソフトウェアの美しさ」と聞くと,

対称性や黄金比の話をしていると思うかも知れません.

あるいは,

できるだけコードの書き方を定型化すること,

と解釈するかもしれません.

私の経験から言うと,この両者の間で最も異なっているのは,

「シンプルさ」というものに対する考え方のようです.



これまで見たことのあるソースコードをどれでもいいので,

頭に浮かべてみて下さい.

他人の書いたコードをあまり見たことが無いという人は,

本を一旦閉じ,

オープンソースソフトウェアのソースコードを

今すぐどこからか入手して,

内容をよく見てみましょう.

冗談抜きで今すぐです.

検索すれば,すぐに見つかります.

言語は問いません.

著名なプログラマの書いたソースコードが良いでしょう.



私はこれまでに,

優れている,

美しい,

と思えるコードを多数見て来ました.

そこには,必ずいくつか共通の特徴があると気が付きました.

その中でも特に重要なのが,

「シンプルである」

ということです.

アプリケーションやシステム全体が

どれほど複雑であっても,

個々の部分を取り出してみると,

すべてシンプルになっています.

単一の責務を持ったオブジェクトは,

メソッドもすべて機能が絞りこまれており,

名前を見ればすぐに持っている機能がわかるようになっています.

「メソッドのコードはどれも5行から10行ぐらいの長さにすべき」

と言うと,あまりに極端な意見だと思う人もいるでしょう.

言語によっては,その長さにすることが非常に難しいものもあります.

しかし,それでも,

それぐらいの短さを目指すべきだと私は思うのです.



美しいコードとは,

突き詰めれば,シンプルなコードのことです.

システムを構成する各部分がすべてシンプルで,

個々の部分を担う責務も最小限に抑えられていて,

部分同士の関連もシンプル,

そんなコードです.

シンプルできれいなコードになっていれば,

テストもしやすく,

開発速度を落とさずに長期間にわたる保守が可能になります.



美は,シンプルなものから生じ,シンプルなものに宿るのです.



■著者データ

[ヨルン・オルハイム(Jorn Olmheim)]

10年以上の経験を持つ

ソフトウェアのプロフェッショナルであり,

開発者,アーキテクトとして第一線の現場で仕事をする一方,

執筆や講演なども積極的にこなす.

現在はStatoilに勤務し,

主にJava,Ruby,Pythonで,

多数の研究プロジェクト向けのソフトウェアを開発している.

高いパフォーマンスが要求される場合には,

FortranやC/C++を使うこともある.

アジャイル開発手法,プログラミング言語,自律システムなどに強い関心を持ち,

プログラマとしての技能を高めることに常に熱心に取り組んでいる.

趣味はスキー,マウンテンバイク.

家族と共に過ごす時間も大事にしている.

詳しくはサイトとTwitterを参照.

Olmheim.com

Jørn Ølmheim (joelmheim) は Twitter を利用しています




MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

https://gumroad.com/l/myenigmasupportersgumroad.com