プライム無料体験をお試しいただけます
プライム無料体験で、この注文から無料配送特典をご利用いただけます。
非会員 | プライム会員 | |
---|---|---|
通常配送 | ¥410 - ¥450* | 無料 |
お急ぎ便 | ¥510 - ¥550 | |
お届け日時指定便 | ¥510 - ¥650 |
*Amazon.co.jp発送商品の注文額 ¥3,500以上は非会員も無料
無料体験はいつでもキャンセルできます。30日のプライム無料体験をぜひお試しください。
¥4,840¥4,840 税込
発送元: Amazon.co.jp 販売者: Amazon.co.jp
¥550¥550 税込
ポイント: 6pt
(1%)
配送料 ¥330 6月1日-2日にお届け
発送元: 【公式】ブックオフ 販売者: 【公式】ブックオフ
無料のKindleアプリをダウンロードして、スマートフォン、タブレット、またはコンピューターで今すぐKindle本を読むことができます。Kindleデバイスは必要ありません。
ウェブ版Kindleなら、お使いのブラウザですぐにお読みいただけます。
携帯電話のカメラを使用する - 以下のコードをスキャンし、Kindleアプリをダウンロードしてください。
OK
プログラミングErlang 単行本(ソフトカバー) – 2008/2/23
購入オプションとあわせ買い
Erlang(アーラン)とは、近年再評価されて注目を集めている関数型プログラミング言語です。
本書は、並行プログラミングに有効な言語として急速に一般にも認知され始めたErlangのバイブル的な解説書を翻訳するもの。
原著者はErlangの初期の頃からの開発者の一人。
- 本の長さ480ページ
- 言語日本語
- 出版社オーム社
- 発売日2008/2/23
- ISBN-104274067149
- ISBN-13978-4274067143
この商品をチェックした人はこんな商品もチェックしています
商品の説明
著者からのコメント
我々が暮らすこの世界は並列に動いている。
実世界に存在する他のものと同じように振る舞うプログラムを書きたかったら、プログラムも並行構造になることだろう。
並行アプリケーションを書くために設計された言語を使えば開発はすごく簡単になる。
Erlang のプログラムがモデル化しているのは、我々が考えたりコミュニケーションする様なのだ。
Joe Armstrong
訳者序文
本書を手に取ったあなたがプログラミングをゼロから学ぼうという人ならば、非常に幸運だ。なぜなら、現在主流のC++ やJava といった言語の概念にとらわれることなく、シンプルでありながら強力なプログラミング言語を学べるからだ。あなたがプログラミングの経験者でも同様に幸運だ。なぜなら、これまでのプログラミングの経験に加えて、Erlang というすばらしい道具を活用できるようになるからだ。
さて、近年のWeb をベースとしたシステムの発展は、これまで通信機器など高可用性を重視する用途以外ではあまり知られていなかったErlang に新たな注目を浴びせることになった。Webは基本的に開かれたシステムであるため、比較的簡単にサービスを構築して公開することができる反面、大量のアクセスをさばかなければならない状況も起きやすい。いわゆるC10K 問題である。10K = 10000 個のクライアントからのアクセスをいかにして切り回すかはいまや多くのエンジニアの頭を悩ます問題となっている。C10K 問題は20 世紀の間に提起されていたのだから、それからさらにWeb が発展した現在ではどのような状況であるかは推して知るべしである。
前述のC10K のサイトを見てもわかるように、その解決策はマルチスレッドプログラミングを駆使した煩雑なものが多い。これでは本来提供したいサービスのことを考えるための余裕がなくなってしまう。また、オペレーティングシステムが提供するスレッド環境はコストが高いものが多く、クライアント1 つにスレッドを1 つ割り当てるような贅沢な使い方ではとても10000 個のクライアントをさばくことなどできない。
Erlang ならばそんな贅沢もまったく問題ない。余計なことを考えずにサービスを作ることに集中できるのだ。
また、処理能力を増やすためのハードウェア側からのアプローチとしては、従来は駆動クロックの高速化が一般的であった。しかし、主に熱の問題から現在の半導体の駆動クロックは数GHz で頭打ちになると考えられているため、その代わりに処理装置を増やす方向、つまりマルチプロセッサ化やマルチコア化に拍車がかかっている。ここ数年でマルチプロセッサやマルチコアのマシンは個人でも手に入れられるようになってきたが、その上で動作するソフトウェアの方はまだまだハードウェアを生かしきれていないのが実情だ。
では、どうすれば並列ハードウェアを生かしたソフトウェアを作ることができるのだろうか? 一般には、pthread などに代表されるいわゆるマルチスレッドプログラミングのためのライブラリやフレームワークを使うことが多いだろう。しかし、競合条件を正しく見極めて排他制御を正しく適用するのはなかなか難しく、熟練したプログラマでさえも間違いを犯しがちだ。実際、訳者もマルチコアマシン用のオペレーティングシステムを開発しているが、それでも自分自身がその手の同期バグを仕込んでしまうことがあるし、もっと注意深い人々でもミスは皆無ではない。
人間は誰でもちょっとした間違いをしてしまうものだから、ここはコンピュータの方でなんとかすべきところだ。残念ながら、C やC++、Java、それにPerl やRuby、Scheme などの言語には、そのような間違いをしないような仕組みは備わっていない。後付けの仕組みや実験的な取り組みはあるが、実用的ではなかったり、実績に乏しい。その点、Erlang はもともと並列処理を念頭に置いて設計されているから、変数の排他制御の問題などは本質的に存在しない。それはErlang が関数型プログラミング言語の特徴をうまく生かしているからだ。関数型プログラミングというと身構えてしまう人もいるかもしれないが、実はそんなに難しくない。それどころか、プログラムは命令型プログラミング言語で書かれたものよりもずっとわかりやすい。実のところ、Erlang は関数型プログラミング言語の中でも文法がとっつきやすく、関数型プログラミングの入門にも適している。
ところで、並列指向プログラミングはErlang の最も大きな特徴だが、実はErlang の強みはそれ以外にもある。「関数型」でしかも「並列指向」と来れば、研究室を出たことのない、実績に乏しいプログラミング言語であるかのような印象を抱く人もいるかもしれない。しかし、Erlang には20 年を超える歴史があり、高度な信頼性が要求される通信機器の分野でも実績がある。そのような実績はもちろんErlang の基本設計の見通しの良さによるところも大きいが、忘れてはならないのはOTP というフレームワークの存在である。詳しくは本書の後半の解説に譲るが、OTP は信頼性の高いシステムを作るためのノウハウがつまっている。大規模なシステムを構築し、長年にわたって更新しつつ運用していくためのいわばデザインパターンと言える。また、本書で取り上げているのはOTP のごく一部でしかなく、そのほかにも実際のシステム構築において培われた興味深い機能があるので、本書の次のステップとして覗いてみるのもよいのではないだろうか。
Erlang は歴史のある言語だが、今現在も進化を続けている。本書はErlang OTP R11B5 というリリースを元にしているが、本書発行の時点で既に次のR12B0 というリリースが出ている。今回のリリースは以前のリリースとの互換性を保っているので、本書で解説していることはそのまま通用するはずである。ただし、R12B0 ではエラーメッセージがわかりやすいように変更されているため、エラーメッセージについてはかなり異なる部分がある。
なお、本書の翻訳にあたって、誤解を生じない範囲であえて用語の統一を図らなかった部分がある。原著でも読みやすさを優先して1 つの概念をいくつかの言葉で言い換えており、翻訳でもその方針に従っている。特に、並列(parallel)と並行(concurrent)は厳密にはそれぞれ異なる概念を指す言葉であるが、原著同様統一していない点に注意されたい。
最後に、多忙な中で本書をレビューし、有益なコメントをくださった平岡和幸、檜山正幸、堀玄、向井淳の各氏にこの場を借りてお礼を述べさせていただきます。また、オーム社開発局の方々にも各面でのサポートをいただき、感謝しております。その他、ここで逐一お名前を挙げることはできませんが、さまざまな方からのご協力の下に本書を作ることができました。ありがとうございました。
2008年2月
榊原一矢
著者について
耐障害性を備えたアプリケーションをより良く作る方法を探る中で、1986 年にErlang の最初のバージョンを設計し、実装した。また、Erlang に関する一番最初の書籍を執筆し、Erlang に関する講座を初めて開催したのも筆者である。筆者が指導したプログラマの数は数百にものぼり、行った講義やキーノートは数え切れない。
筆者はスウェーデンのストックホルム王立工科大でコンピュータサイエンスの博士号を取得し、現在は耐障害システム設計の専門家として活躍している。以前にはErlang OTP を生み出したプロジェクトのチーフソフトウェアアーキテクトでもあった。また、最初のErlang スタートアップ企業の1 つであるBluetail には起業家として関わるなど、応用と研究の両面において30 年にわたる経験を持つ。
現在は、Erlang を使って耐障害性を高めた交換システムを構築しているEricsson AB に勤務している。
<訳者>榊原一矢(さかきはらかずや)
通信機器や画像処理機器のファームウェア、デバイスドライバなどの開発に携わった後、現在は家庭用ゲームコンソールのオペレーティングシステムを開発している。仕事を離れてもプログラムを書いたり物を作るのは好きだが、1 歳になる長男の面倒を見る合間にしかできないので、Erlang のような軽量プロセススイッチがあればなあと思う毎日。
登録情報
- 出版社 : オーム社 (2008/2/23)
- 発売日 : 2008/2/23
- 言語 : 日本語
- 単行本(ソフトカバー) : 480ページ
- ISBN-10 : 4274067149
- ISBN-13 : 978-4274067143
- Amazon 売れ筋ランキング: - 399,200位本 (本の売れ筋ランキングを見る)
- - 7,359位電気・通信 (本)
- カスタマーレビュー:
著者について
著者の本をもっと発見したり、よく似た著者を見つけたり、著者のブログを読んだりしましょう
カスタマーレビュー
-
トップレビュー
上位レビュー、対象国: 日本
レビューのフィルタリング中に問題が発生しました。後でもう一度試してください。
Erlangの強みである並列化と分散化を“存分”に体験、学習および利用するためには、ある程度の準備が要求されます。最低二台のコンピュータで構成されるネットワーク環境に加え、DNSがあると助かります。
ただ、分散プログラミング部分にあたって、私のMac OSX 10.4は本の通りに上手くいきませんでした。もし、私と同じところで躓いたら、下記を参考にしてみてください。
1)ローカルホストでの分散の場合は、“erl -sname gandalf”でerlang環境を立ち上げるようにと書いてありますが、“erl -sname gandalf@localhost”にします。明確に'@localhost’を記入するということです。
2)DNSなしでマシン間の分散の場合は、"erl -name gandalf@xxx.xxx.xxx.xxx -setcookie abc" に改めて立ち上げると問題が解決します。ここのxxx.xxx.xxxは使用中のマシンのIPアドレスのことで、たとえば 192.168.1.1 などがそうです。
追加情報:
lib_misc:string2value/1 がどうも見当たらないので、それなりのコードを下記に掲載します。
string2value(Str) ->
{ok, Tokens,_} = erl_scan:string(Str++"."),
{ok, Expr} = erl_parse:parse_exprs(Tokens),
{value, Return, _} = erl_eval:exprs(Expr,[]),
Return.
また、およそErlangで出来ることを簡単なものから複雑なものまで多数の例を挙げており、一番の特徴であるネットワークやデュアルCPUでのプログラミングなど何でも分かるだろう。
訳も優れており、原著の雰囲気そのままに、読みやすくユーモアにあふれた語り口になっており飽きさせない。
Erlangに興味を持った人全てに文句なしに勧められる本だ。
特にこの後、F#に関する本を読んだのですが、F#に比べると非常に言語仕様がシンプルで、並行プログラミングも分散プログラミングも区別することなく同じように書けるし、堅牢でミッションクリティカルなアプリケーションにはぴったりの言語です。
書籍の内容も読めば読むほど味が出る内容で、Erlangの安定性を支えるOTP(Open Telecom Platform)を使った定石アプリケーション構築の説明やアプリケーションを可動させたまま、実行コードを変更するホットスワッピングなどについても丁寧に説明されています。
プログラマたるもの、いろいろな言語に触れてみる必要があると思いますが、これは必読、お勧めの名著だと思います。