マイナビニュース | 企業IT | 開発/エンジニア | ヘッドライン(2005)(1ページ目)

ヘッドライン

2005年12月21日(水)

ダイナミックObjective-C 第19回 メソッドとは何か(2) - メソッドを取得する

メソッドのための、ランタイム調査第2回目。今回は、クラスからメソッド情報を取り出す方法を説明しよう。

[22:18 12/21]

2005年12月19日(月)

ライトニングJava 第31回 アノテーション(5) - 採用事例 TestNG(3)

アノテーションの使用例を紹介するために、TestNGを取り上げて基本的な使用例を示してきた。今回はTestNGに用意されているほかのアノテーションについて実例をあげて紹介する。

[19:19 12/19]

2005年12月14日(水)

ダイナミックObjective-C 第18回 メソッドとは何か(1) - メソッド、セレクタ、メソッドの実装

Objective-Cのランタイム調査。クラス、オブジェクトと来て、今回からはメソッドに取りかかろう。メソッドは、クラスに属する、処理の単位だ。とはいっても、C言語の関数と変わらないんじゃないの? と、思う方もいるかもしれない。最終的にはそうなるのだが、Objective-Cのメソッドには、もう少しだけひねりが入っている。小さな差だが、決定的な差だ。ここを見ていこう。

[18:14 12/14]

2005年12月12日(月)

ライトニングJava 第30回 アノテーション(5) - 採用事例 TestNG(2)

前回TestNGを取り上げ、アノテーションの使用例を紹介した。前回は駆け足で説明したため、今回は前回取り上げたアノテーションの使用例を、より詳しく説明しよう。

[21:50 12/12]

2005年12月07日(水)

ダイナミックObjective-C 第17回 クラスとは何か(4) - Objective-Cにおけるオブジェクトとは何か?

前回までは、Objective-Cで、クラスはどのように実装されているのかを探っていた。続いて、オブジェクトの実装に話を移そう。クラスをもとにして、どのようにインスタンス化を行うのか、ソースコードレベルで確認しよう。

[20:58 12/7]

2005年12月06日(火)

ライトニングJava 第29回 アノテーション(4) - 採用事例 TestNG(1)

Java SE 5.0 TigerのコアAPIで使用されているアノテーションは@Deprecatedを含め、必要最小限なものでしかない。アノテーションを使ったプログラミングをおこなうには、アノテーションタイプを作成し、アノテーションを処理するクラスを作成しなければならない。標準でより多くのアノテーションが用意されるのは、次期リリースが予定されているJava EE 5.0やJava SE 6.0 Mustang、Java SE 7.0 Dolphin以降になる見通しだ。

[00:18 12/6]

2005年11月30日(水)

ダイナミックObjective-C 第16回 クラスとは何か(3) - メタクラスと親クラス

今回は、クラス構造体のうち、クラス情報のフィールドを取り上げよう。isaとsuper_classだ。 今回は、クラス構造体のうち、クラス情報のフィールドを取り上げよう。isaとsuper_classだ。

[22:56 11/30]

2005年11月28日(月)

ライトニングJava 第28回 アノテーション(3) - アノテーションを知る(2)

Java SE 5.0 TigerのコアAPIでは、@Deprecatedが採用されている程度しかアノテーションは使われていないことを説明した。コアAPIにおけるアノテーションの本格的な採用はJava EE 5.0やJava SE 6.0 Mustang以降になるのだろう。まず、もっとも簡単なカスタムアノテーションの実装を通じて、アノテーションがどのように実現されているのかを調べてみよう。

[23:06 11/28]

2005年11月21日(月)

ライトニングJava 第27回 アノテーション(2) - アノテーションを知る(1)

Java SE 5.0 Tigerにおいて導入されたEoDのなかで、もっとも革新的な可能性を秘めた機能がアノテーションであることを紹介した。今回から、アノテーションの使い方を通じて、アノテーションでどのようなことを実現できるかを紹介する。

[22:54 11/21]

2005年11月16日(水)

ダイナミックObjective-C 第15回 クラスとは何か(2) - クラス情報に直接アクセスする

前回は、クラスを表す型Classが、obc_class構造体であることを説明した。今回は、実際にこの構造体の中身を触ってみることにしよう。Objective-Cというプログラミング言語は、ランタイムの記述言語であるC言語を完全に含んでいるため、簡単に自分の中身にアクセスすることができる。

[22:55 11/16]

2005年11月14日(月)

ライトニングJava 第26回 アノテーション(1) - Javaの大きな変貌、アノテーションの導入

これまでJava SE 5.0で導入されたEoDとしてAutoboxing/Unboxing、可変長引数、列挙型、拡張for構文、Static Import、Generic Javaを紹介してきた。今回から、Java SE 5.0で導入されたEoDのなかで、本質的にもっとも重要な機能となるアノテーションについて説明する。

[20:49 11/14]

2005年11月09日(水)

ダイナミックObjective-C 第14回 クラスとは何か(1) - Mac OS X/Objective-Cにおけるクラスの実装を読む

前回の予告通り、Objective-Cランタイムの解説を始めよう。その前に、いくつか準備が必要だ。まず、Objective-Cランタイムのソースコードの在処を紹介しよう。本連載を読むのにソースコードは必須ではないが、手元にあると何かと便利なことが多いので、ダウンロードしておくことをお勧めする。

[16:14 11/9]

2005年11月07日(月)

ライトニングJava 第25回 Generic Java(6) - Genericを使ってAPIを作成する その3

今回は、ArrayListやHashMapの実際のソースコードを通じて、実際にどのようにGenericの機能を使いながらAPIが作成されているかをかいつまんで説明する。

[22:49 11/7]

2005年11月02日(水)

ダイナミックObjective-C 第13回 Objective-Cのエンジン部 - ランタイムに踏み込む

今回からはObjective-Cのメッセージングシステムを理解するために、Objective-Cランタイムの解説を行いたい。言語仕様やクラスの実装の仕方ではない。Objective-Cのコードをコンパイルして実際に動かす、ランタイムライブラリである。いわば、Objective-Cのエンジン部である。

[13:49 11/2]

2005年10月31日(月)

ライトニングJava 第24回 Generic Java(5) - Genericを使ってAPIを作成する その2

Generic Javaをつかったクラスを作成する基本的な方法は前回説明した。今回は、細かい部分の実装や規則をかいつまんで説明する。

[22:09 10/31]

2005年10月25日(火)

ダイナミックObjective-C 第12回 ポージングで乗っ取り

Objective-Cには、ポージングという機能がある。これは、一言でいうと、既存のクラスを「乗っ取る」ことができる機能だ。すでにあるクラスを、強引に自分のクラスで置き換えてしまう。

[18:39 10/25]

2005年10月24日(月)

ライトニングJava 第23回 Generic Java(4) - Genericを使ってAPIを作成する その1

これまで3回にわたり、J2SE 5.0で導入されたGeneric Javaについて紹介し、Generic Javaを適用して作成されたAPIを使う方法をとりあげてきた。今回からは、Generic Javaを使ってAPIを作成する方法について紹介する。

[19:39 10/24]

2005年10月19日(水)

2005年10月17日(月)

ライトニングJava 第22回 Generic Java(3) - 逆コンパイルで探るGeneric Javaの裏側

前回は、J2SE 5.0で導入されたEoDであるGeneric Javaを利用する典型的なパターンを紹介した。今回は、導入されたGeneric Javaが実際のところどのように実現されているかを紹介する。

[18:46 10/17]

2005年10月12日(水)

ダイナミックObjective-C 第10回 非形式プロトコル - もう1つのプロトコル

前回は、Objective-Cのプロトコルについて説明したが、その利点としてプロセス間通信の抑制という点を挙げた。だが、プロトコルは、もう一つの側面である「オブジェクトの振る舞いを表すメソッドの集合」をするもの、という文脈で語られることが多い。この説明を後回しにしたのは、この機能は「もう1つのプロトコル」で実現されることが多いからだ。今回は、このことを説明しよう。

[21:25 10/12]

2005年10月05日(水)

ダイナミックObjective-C 第9回 プロトコルが必要とされた背景とは? - なぜあえて静的な型を?

前回と同様、Objective-Cでのメソッド宣言にまつわる話を続けよう。今回は、メソッドの集合を宣言するプロトコルだ。

[19:25 10/5]

2005年10月03日(月)

ライトニングJava 第21回 Generic Java(2) - Generic Javaの使用例その1

J2SE 5.0に導入されたEoDにGeneric Javaがある。前回、Generic Javaはジェネリックプログラミングを実現するためのテンプレートの一種であることを紹介した。今回は具体的にどのようにGeneric Javaを使用するかを紹介する。

[19:28 10/3]

2005年09月29日(木)

ダイナミックObjective-C 第8回 カテゴリ - 動的なメソッドの追加によるクラスの拡張

今回からは話を変えて、Objective-Cの別の側面を紹介しよう。メソッドの宣言、実装にまつわる話だ。まず、カテゴリから始めよう。

[01:07 9/29]

2005年09月26日(月)

ライトニングJava 第20回 Generic Java(1) - 賛否両論? ジェネリックプログラミングとは

JavaはJ2SE 5.0からGeneric Javaが導入され、そのプログラミングスタイルに変化が表われている。これは好む好まずに関係なく、Javaを扱う上で習得しなければならない機能のひとつとなった。今回からしばらくの間は、いままで紹介したEoDとは一風異なるGeneric Javaについて紹介する。

[23:00 9/26]

2005年09月21日(水)

ダイナミックObjective-C 第7回 Objective-Cと様々な言語のブリッジ - PyObjC、RubyCocoa……

前回は、Objective-CとJavaの間でのブリッジを、Cocoaのターゲット/アクションパラダイムに着目して紹介したが、他の言語からもObjective-Cへのブリッジが存在する。特に、スクリプティング言語とのブリッジは、お互いに動的な特性が似ているので、実現しやすいようだ。今回は、それらを考察してみたい。

[22:42 9/21]

2005年09月14日(水)

ダイナミックObjective-C 第6回 Cocoa-Javaの挑戦とは? - 似て非なるセレクタとリフレクション

CocoaはObjective-Cを用いてAPIが提供されている。だが、この非常にマイナーな言語だけでは辛いと思ったのか、JavaによるAPIも存在する。つまり、JavaとObjective-Cをつなぐブリッジを実現したのだ。オブジェクト指向言語である両者だが、当然いろいろな違いがある。その違いを吸収するために、Cocoa-Javaブリッジでは様々な工夫が行われている。特に苦心の跡が見られるのは、前回説明したターゲット/アクションパラダイムのJava実装だ。今回は、ここを詳しく解説しよう。

[15:58 9/14]

2005年09月12日(月)

ライトニングJava 第19回 地味だけど便利! - Static Import

J2SE 1.5で導入されたEoDのうち、地味ではあるものの便利になった機能にStatic Importがある。これは名前の通り、staticが指定された変数やメソッド、つまりクラス変数やクラスメソッドをimportするための機能だ。Static Importを使うとソースコードの記述を簡略化できる。

[23:46 9/12]

2005年09月07日(水)

ダイナミックObjective-C 第5回 ターゲット/アクションパラダイム(2) - その利点を徹底検証

Objective-Cの動的特性を探るこの連載。その実用例のひとつとして、Cocoaのメニューの仕組みを解説している。前回は、メニューのデザインを説明した。今回は、そのメニューがどのように動作するのかを解説しよう。

[18:15 9/7]

2005年09月05日(月)

ライトニングJava 第18回 拡張for構文(3) - EoDによってもたらされたもの

前回は、拡張for構文は従来のfor構文へ変換されてからコンパイルされていることを紹介した。拡張for構文は従来のfor構文へのSyntax Sugarで、読み方に互換性がないものの、その効果はほかのEoDとくらべて副作用も少ないということも述べた。今回はこれまで紹介してきたEoDと絡めながら、これらEoDがもたらすものについて説明する。

[22:49 9/5]

2005年08月31日(水)

ダイナミックObjective-C 第4回 ターゲット/アクションパラダイム(1) - 動的特性を利用したデザインパターン

前回は、Objective-Cでの動的なクラスやメソッドの調査を取り上げた。ここまで読んで、次のような感想を持った方もいるだろう。「なるほど、確かにそういうことができることは分かった。だが、動的、動的というが、それが何の役に立つのか?」と。今回は、Cocoaフレームワークから動的なメソッド調査を利用するパターンを紹介しよう。それはGUIにおけるメニューの呼び出しである。

[22:38 8/31]

2005年08月29日(月)

ライトニングJava 第17回 拡張for構文(2) - 逆コンパイルで探る拡張for構文の裏側

J2SE 1.5からfor-loop構文やforeach構文と同じような処理を行うfor文として拡張for構文が追加されたことを紹介した。今回はこの拡張for構文がどのように実現されているかを説明する。

[23:29 8/29]

2005年08月24日(水)

ダイナミックObjective-C 第3回 Cocoa実現の肝 - クラスとそのメソッドの調査方法をチェック

前回は、すべてのオブジェクトはid型になることを説明したが、今回はそのオブジェクトの性質を調べる方法を説明しよう。今回説明する調査のポイントは次の2点だ。そのオブジェクトはどのクラスに属しているのか、と、どのメソッドに対応できるのか、というところだ。今回はこれらについて解説する。

[23:30 8/24]

2005年08月17日(水)

ダイナミックObjective-C 第2回 Objective-Cの動的型付け

CocoaとObjective-Cの動的な特徴を探っていく本連載だが、今回は動的な型付けについて説明しよう。Objective-Cは、オブジェクト指向を取り入れたCの上位言語であるが、そのアプローチの仕方は、C++と比べるとかなり異なっている。C++が構造体を拡張する形でクラスを採用したのに対して、Objective-Cでは、オブジェクトのためにSmalltalkに近い完全に別の文法を取り入れている。

[18:15 8/17]

2005年08月10日(水)

ダイナミックObjective-C 第1回 CocoaとObjective-Cと動的なオブジェクト指向 - Cocoaハックの第1歩

本連載では、Objective-CとCocoaが持つ動的な特徴を、一つずつ、徹底的に明らかにしていくことを目的とする。Objective-Cの柔軟性と拡張性、そして現役のフレームワークであるCocoaがこれをいかに活用しているかを解説していこう。また、これは同時に、実行中のアプリケーションを変更しやすいということを意味している。つまり、Cocoaはハックしやすいのである。このあたりの、実際的なテクニックも紹介していこう。

[20:29 8/10]

2005年08月08日(月)

ライトニングJava 第16回 拡張for構文(1) -実装に沿った読みやすい記述を実現~拡張for構文の導入

J2SE 5.0ではfor構文が拡張されている。foreach構文やfor-loop構文と呼んでもよいだろう。これはもともとCやC++にはない機能で、スクリプト言語でよく使われてきた機能だ。このため、スクリプト言語を扱ったことがないユーザにとって、J2SE 5.0で導入された拡張for構文はイメージがつかみにくいかもしれない。スクリプト言語の例を取り上げながら、拡張for構文を紹介しよう。

[17:32 8/8]

2005年08月01日(月)

ライトニングJava 第15回 列挙型(4) - 逆コンパイルで探る列挙型の裏舞台

列挙型はクラスとして実装されていることを説明した。今回は、クラスで実現されている列挙型が、実際はどのように変更されて使用されているのか説明しよう。

[21:20 8/1]

2005年07月25日(月)

ライトニングJava 第14回 列挙型(3) - クラスで実現される列挙型

前回までは、J2SE 5.0で導入された列挙型の振舞いが、クラスのそれとよく似ていることを紹介した。今回からは、列挙型がどのように実現されているのかを説明する。

[22:30 7/25]

2005年07月12日(火)

ライトニングJava 第13回 列挙型(2) - 列挙型を調べる

J2SE 5.0ではEoD機能の一環として新たに列挙型が導入された。このため、J2SE 5.0からは定数を使用する場合に、これまでのようにpublic static final修飾子を指定した整数ではなく、列挙型として定数を用意できるようになった。今回は、列挙型がクラスを使って実現されていることを示すために、いくつかの例を紹介する。

[12:28 7/12]

2005年07月04日(月)

ライトニングJava 第12回 列挙型(1) - 列挙型の導入

J2SE 5.0ではEoD機能の一環として、新たに列挙型と呼ばれる型が追加されている。列挙型という型が新しく追加されたわけだが、実際はクラスに変換されてコンパイルされている。列挙型の実現方法は少々難しい。すべてを順を追って説明することは避けるが、要点だけはかいつまんで説明しておこうと思う。

[20:33 7/4]

2005年06月28日(火)

ライトニングJava 第11回 可変長引数(5) - 引数の位置とAutoboxing/Unboxingとの連帯

可変長引数の仕組みについてはすでに説明してきた。今回は、可変長引数とAutoboxing/Unboxingとの連帯や、それを加味して可変長引数の定義できる引数の位置について説明しよう。

[00:04 6/28]

2005年06月20日(月)

ライトニングJava 第10回 可変長引数(4) - 逆コンパイルで探る可変長引数の裏舞台

J2SE 5.0で導入された可変長引数によってprintfが実装されていることを説明し、可変長引数は配列表記へのSyntax Sugarであることを紹介した。今回は、可変長引数が配列で実現されていることと、基本データ型でどのように実現されているのかを説明しよう。

[21:54 6/20]

2005年06月13日(月)

ライトニングJava 第9回 可変長引数(3) - 配列で実現される可変長引数

java.lang.System.out#printfで使われている技術が可変長引数であることを紹介した。今回は、可変長引数を使うとどのようなことができるのか紹介し、その背景にあるものに迫っていく。

[22:00 6/13]

2005年06月06日(月)

ライトニングJava 第8回 可変長引数(2) - 書式つき出力 printf を調べる

J2SE 5.0から書式つき出力pirntfが導入されたことを紹介し、その機能を実現しているのは可変長引数であることを紹介した。今回は、実際にどのような形でpirntfが実現されてるのか調べる方法を紹介しよう。

[21:39 6/6]

2005年05月30日(月)

ライトニングJava 第7回 可変長引数(1) - 書式つき出力 printf の導入

J2SE 5.0で導入されたEoD機能としてAutoboxing/Unboxing機能をとりあげ、その背景にある仕組みを紹介してきた。今回からは可変長引数について紹介する。

[20:45 5/30]

2005年05月23日(月)

ライトニングJava 第6回 EoDの裏にある互換性ということ(3) - 逆コンパイルで探る舞台裏

前回は、互換性を調査する目的で逆コンパイラを紹介した。今回は、逆コンパイラを使ってAutoboxing/Unboxing機能がどのようなやり方で実現されているかということをみてみよう。

[20:13 5/23]

2005年05月16日(月)

ライトニングJava 第5回 EoDの裏にある互換性ということ(2)

Javaプログラミングをより直感的で簡単なものにするためにEoDが導入されたわけだが、EoDという機能が追加されながらも、互換性も確保されていることを紹介した。今回は、互換性を調べるために必要になる逆コンパイラを紹介する。

[20:43 5/16]

2005年05月09日(月)

ライトニングJava 第4回 EoDの裏にある互換性ということ(1)

2回にわたってJ2SE 5.0で実現されたAutoboxing/Unboxing機能について紹介した。そして、Autoboxing/Unboxingは便利な機能だが、従来と比較して実行速度が向上するものではないから注意するべきだという話にも触れた。今回からは、Autoboxing/Unboxing機能がどのように実現されているのかという背景を紹介し、J2SE 5.0で導入されたEoDがどういった仕組みで実現されているのかを説明していこう。

[20:33 5/9]

2005年04月25日(月)

ライトニングJava 第3回 Autoboxing/Unboxing機能(2) - Autoboxing/Unboxingの仕組みとは?

前回はJ2SE 5.0で実現されたEoDであるAutoboxing/Unboxing機能について、さわり程度の紹介をした。今回はもうちょっと突っ込んでみていこう。

[18:02 4/25]

2005年04月18日(月)

ライトニングJava 第2回 Autoboxing/Unboxing(1) - プリミティブ型をコレクションフレームワークで

今回以後しばらくの間は、EoDに焦点をあててJavaを紹介していく予定だ。EoDは、Javaによるプログラミングをもっと簡単にしていこうという取り組みで、J2SE 5.0ですでに多くのEoDが実現されている。まずはAutoboxing/Unboxing機能を取り上げたい。

[15:32 4/18]

2005年04月13日(水)

ライトニングJava 第1回 変わりゆくJava - Easy of Development

Javaに関する話題をとりあげては紹介していく新連載を始めることとなった。本連載では、すでにシステム開発で重要な地位を占めるようになったJavaというプログラミング言語に焦点をあて、特に最初のうちは「EoD」に的を絞って紹介していきたいと考えている。いわゆる言語解説記事というよりは、時流に乗ったその時々のJavaの紹介と考えていただければ良いだろう。今回はその前準備として、前提となるいくつかの事項を簡単に解説する。

[21:53 4/13]

バックナンバー

人気記事

一覧

イチオシ記事

新着記事