エンタープライズギークス (Enterprise Geeks)

企業システムの企画・開発に携わる技術者集団のブログです。開発言語やフレームワークなどアプリケーション開発に関する各種情報を発信しています。ウルシステムズのエンジニア有志が運営しています。

今だからこそ、省メモリープログラミング

富豪的プログラミングが当たり前となった昨今、メモリーを節約するプログラミング技術は話題にならなくなって久しい。

しかし、一方で省メモリーなプログラミング技法が生きるフィールドは広がりつつある。たとえば以下の様な状況だ。

巨大データを扱いたい場合

データの分析目的で、通常のマシンでは1台のメモリーには載らないほど大きなデータをランダムアクセスしたい場合がある。

この場合、1台のマシンのメモリーには載らないという理由で仕方なくHadoopやSparkなどで分散処理させるのかもしれないが、ランダムアクセスをどうにかシーケンシャルなアルゴリズムに考えなおし、なおかつパフォーマンスを出すためにノード間の通信も最小にするような工夫せざるを得ない。

大変な労力がかかる割に、パフォーマンスは出にくく、分散処理特有のトラブルにも遭遇してしまう。

そうではなく、数百GBのメモリーを積んだマシンを用い、省メモリーに徹したプログラミングをすれば、単一マシン上で処理が可能なケースも沢山ある。

単一マシン上でインメモリー処理した方が、適用可能なアルゴリズムも増え、大抵信じられない程の高パフォーマンスを叩き出すことが出来る。ソースコードはシンプルになり、分散処理にありがちな難しいトラブルにも遭遇しにくい。

スマートデバイス向けのアプリケーション

スマートフォンやスマートウォッチなど、バッテリーで動作し、性能も低いデバイスのアプリケーションを書く機会が増えた。

このようなデバイス向けのアプリケーションを魅力的なものにするための1つの方法として、利用者の操作スピードに追随可能な動作スピードと、バッテリーを消耗させない工夫が考えられる。

このようなアプリケーションを作りたい場合は、富豪的プログラミングは悪である。小さくて高性能なアプリケーションこそ、このようなデバイス向けのアプリケーションとしてあるべき姿である。その意味でも省メモリープログラミングが必要になる。

省メモリープログラミングに関する書籍

省メモリープログラミングのパターン集として、「省メモリプログラミング」という書籍が存在する。この書籍は2002年に和訳された本であり、古くはあるが、今だからこそ読んでおくべき書籍のように思える。

省メモリプログラミング―メモリ制限のあるシステムのためのソフトウェアパターン集 (Software patterns series)

省メモリプログラミング―メモリ制限のあるシステムのためのソフトウェアパターン集 (Software patterns series)

  • 作者: ジェイムズノーブル,チャールズウィアー,James Noble,Charles Weir,安藤慶一
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2002/06/20
  • メディア: 単行本
  • 購入: 1人 クリック: 100回
  • この商品を含むブログ (33件) を見る

少し前の話になるが、2011年にこの書籍に含まれる設計パターンを社内勉強会で紹介した。書籍を紐解く前に、簡単に内容を把握して頂く目的で以下のスライドを参照して頂ければ幸いである。

[近棟 稔]