プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

プログラマの考えるGoodが必ずしも製品のGoodにならないこと

筆者も、昔はエンジニアリングの仕事をしていたのだが、その経験から言わせてもらうと、Apple製品のすごさは、OSレベルでの徹底的なソフトウェアの最適化に尽きる、と思う。Appleというソフトウェア会社は、自社でたまたまハードウェアもデザインしていた。AppleのOSなどの基本的なソフトウェアの設計は、iPhoneとMacというたったふたつのハードだけを考えて、この決め打ちされたハードに対して、プログラマが徹底的にソース・コードを最適化できるのだ。

なぜAppleの製品は一歩先を行っているのか? : アゴラ - ライブドアブログ

プログラマが言う、いわゆる「美しいコード」の一つに「特定の環境に依存しない」というのがある。この原則に照らし合わせてみると、Androidアーキテクチャは「美しい」のである。それに対して、基本的に一つのプラットフォームしかないiOSは一つのハードウェアに特化している故に、プログラマ好みではないと考えられる。

実際のソースコードがどうなっているかは知らない。しかしここで重要なことは実装がどうなっているかではなく、ソフトウェア技術者がよいと思っていることと、ユーザが求めていることは違うという事実だと思う。もしハードウェアアーキテクチャが製品の良し悪しを決めるのであれば、パソコンのCPUはIntelではなく、Motorolaになっていたはずだ。だが、現実にはプログラマの嫌いな8086のIntelアーキテクチャがパソコンの標準になった。

ソフトウェア開発の現場においては、しばしばそのフィーチャーが有用かどうかという議論が発生する。そういった場合、プログラマは拡張性や効率性の観点で主張することが多い。だが、それは果たして製品をハッピーにするものなのだろうか。

良いソフトウェアの条件はいろいろあると思うが、重要なことの一つに性能のバランスが良いというのがあると思う。柔軟性は高くても、反応が遅くてストレスを感じるようなものは、いい評価にはならないだろう。ハードウェアとソフトウェアの限界を知り、その範囲で最適なチューニングを施すことができるソフトウェア技術者が、私の考える優秀なプログラマ

私?最近のハードウェアの性能に甘えてるよ、うん^^;