• 検索結果がありません。

ビブリオ・トーク -私のオススメ-:APIデザインの極意 Java/NetBeans アーキテクト探究ノート

N/A
N/A
Protected

Academic year: 2021

シェア "ビブリオ・トーク -私のオススメ-:APIデザインの極意 Java/NetBeans アーキテクト探究ノート"

Copied!
2
0
0

読み込み中.... (全文を見る)

全文

(1)連載. ビブリオ・トーク. ─ 私のオススメ─. ⇢ 木村功作(富士通研究所). API デザインの極意. Java/NetBeans アーキテクト探究ノート Jaroslav Tulach 著 柴田芳樹 翻訳 (株)インプレスジャパン(2014),432p.,3,200 円+税,ISBN : 978-4-8443-3591-7. A. pplication Programming Interface (API) は,オ. 本稿では,本書の中でとても印象に残った節タイ. ペレーティングシステムやミドルウェア等の機. トルをそのまま使わせていただきつつ,本書の内容. 能をプログラムから利用するために用いるインタフ ェースのことであり,かなり昔から存在する概念で す.しかし近年でも(といっても随分前からですが). 「この本は,Java だけに役立つのでしょうか」. Web API という形で Web 上での機能の提供と利用. 本書は副題に「Java/NetBeans」を含んでいます. が活発に行われており,API はいまだにとても重要. が,決して Java 向けに限定された内容の本ではあ. な概念であるといえます.情報系の研究者・開発者. りません.本書では NetBeans の事例を用いてノウ. であれば,今どきのソフトウェアを開発するには必. ハウが語られているため,中には Java の言語仕様. ず何らかの API を利用する必要があったり,研究成. や標準クラスライブラリ固有のものが多く出てきま. 果や技術を使ってもらうために自ら API を公開した. す.しかし,本書中の提言や基本的な考え方は特定. りするなど,関連が多いのではないかと思います.. 言語に依存しないものであり,オブジェクト指向に. 本書は,将来の長期にわたる改善・拡張に耐え. 限らずさまざまなプログラミング言語で API を設計. 得るような API を設計するための考え方・ノウハウ. する際に参考にすることができます.特に「第一部. をまとめた本です.本書は,Java の統合開発環境. 理論と正当性」では,優れた API の定義やそれらが. である NetBeans のアーキテクトを務めた Jaroslav. 必要な理由を哲学やコンピュータの歴史を交えて論. Tulach 氏が著した「Practical API Design: Confes-. じており,非常に有用である上に読みごたえのある. sions of a Java Framework Architect」の邦訳であり,. 内容になっています.. 翻訳は「Effective Java」等の Java 関連書籍を翻訳・. し か し な が ら, タ イ ト ル や 表 紙 デ ザ イ ン の 印. 執筆されている柴田芳樹氏によってなされています.. 象,中身の斜め読みだけではそのことが分かりにく. 本書以外にも API(特に Web API)の設計に関す. く,非常にもったいないと感じています.ぜひとも,. る良書はいろいろありますが,その中でも私は本書. Java 以外の言語を愛用する多くの方々にも書店や. をご一読いただくことをお薦めします.本書の最大. 図書館で本書を手に取ってじっくり読んでいただき. の特長は,API の初版設計開始から改版,終息に至. たいものです.. るまでのライフサイクルの在りようが,著者自身の,. 486. をごく一部だけご紹介します.. 成功ばかりとは限らない実体験をもとに語られてい. 「最初のバージョンは決して完璧ではない」. る点です.約 20 年にわたり多くの開発者を巻き込. これは,本書が述べる API 設計のあるべき姿勢を. み,さまざまな拡張プラグインの開発によって API. 示唆しています.すなわち,本書では「どれだけみ. が使い倒され,発展・存続してきた NetBeans のノ. なさんが努力するかに関係なく,リリースされたバ. ウハウには,一朝一夕では得られない説得力があり. ージョンはバグを含むでしょうし,ユーザは,あな. ます.. たの設計が想定している範囲を超えた仕事に使用し. 情報処理 Vol.57 No.5 May 2016.

(2) 連載. ビブリオ・トーク. ─ 私のオススメ─. ようとする」という現実を受け入れ,API は徐々に. ・オブジェクトの作成者にのみ特権を与える. 改善されるものであるという前提で何をすべきか,. ・深い階層を公開しない. が語られています.. といったことを推奨しています.. まず,古いバージョンを今まで同様に使えるよう にする後方互換性について言及しています.具体的. 「これからは,無知の時代です」. には, 「ソース」や「バイナリ」,それらより抽象的. 本書は,API の提供・利用によるソフトウェア開. な「機能」といった異なるレベルでの後方互換性が. 発の特長を「選択的無知(selective cluelessness)」. 存在すること,およびそれらの事例について提示し. という言葉で表現しています.選択的無知とは,開. ています.次に,API 設計はユースケース指向であ. 発者は個々のソフトウェア部品の中身のことをまっ. るべきと述べています.API が広く使われるように. たく知らなくても,それらを組み合わせて大規模な. なるほど,ユーザから API に対する要求を直接引き. システムを開発できること,すなわち,開発者は知. 出すことが非常に困難になってきます.そのため,. るべきことと知らなくて良いことを選択することが. API を改善する際にはユースケース(ユーザからの. できる,ということを表しています.. 使われ方)を想定し,それを実現するような最適化. 本書の著者は,今後ますますソフトウェアが大規. を目指すべき,ということを述べています.. 模化・複雑化し,開発者に要求される達成度が上が. 「必要以上に公開しない」. っていく一方で,個々人が理解できるシステムの部 分はますます小さくなっていくあろうという予想を. これは, 「KISS の原則」等で知られる設計の簡潔. 立てています.さらに,その予想通りに状況が推移. さについての普遍的な考え方そのものですが,と. した場合に今後生じるであろうさまざまな問題に対. ても重要なので本書では改めて言及されています.. しては,選択的無知が答えを与えてくれると説いて. API を必要以上に公開してしまうことで,拡張が困. います.. 難になったり想定外の使い方をされたりするような. これからは,無知の時代になりそうです.皆様が. 問題が発生することを事例を交えて述べています.. 選択的無知でいられるために,本書の API に関する. これに関する施策はプログラミング言語によって. 知識はぜひ知っておいていただきたいと私は思い. 異なりますが,本書では Java について,. ます.. ・フィールドよりメソッドを使う. (2016 年 2 月 10 日受付). ・コンストラクタよりファクトリメソッドを使う ・final にする ・不要な setter を公開しない ・パッケージプライベートにする. 木村功作(正会員) [email protected]  2010 年九州大学大学院システム情報科学府博士後期課程修了.博士 (工 学) .同年(株)富士通研究所入社.以降,ソフトウェア開発自動化に関 する研究開発に従事.. 情報処理 Vol.57 No.5 May 2016. 487.

(3)

参照

関連したドキュメント

・ 継続企業の前提に関する事項について、重要な疑義を生じさせるような事象又は状況に関して重要な不確実性が認め

テューリングは、数学者が紙と鉛筆を用いて計算を行う過程を極限まで抽象化することに よりテューリング機械の定義に到達した。

・ 継続企業の前提に関する事項について、重要な疑義を生じさせるような事象又は状況に関して重要な不確実性が認

 □ 同意する       □ 同意しない (該当箇所に☑ をしてください).  □ 同意する       □ 同意しない

「系統情報の公開」に関する留意事項

脅威検出 悪意のある操作や不正な動作を継続的にモニタリングす る脅威検出サービスを導入しています。アカウント侵害の

断するだけではなく︑遺言者の真意を探求すべきものであ

2) ‘disorder’が「ordinary ではない / 不調 」を意味するのに対して、‘disability’には「able ではない」すなわち