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

ヘッドライン

2006年12月25日(月)

ライトニングJava 第73回 JSPプログラミング(4) - アクション

JSPは最終的にServletのJavaソースコードに変換され、コンパイルされ、実行される。Servletで記述される処理のうち、よく使われるものに対してはタグが用意されており、スクリプトレットでJavaソースコードを記述しなくてもタグとして処理が記述できるようになっている。これをアクション(標準アクション)という。

[23:07 12/25]

2006年12月20日(水)

ダイナミックObjective-C 第60回 デザインパターンをObjective-Cで - Prototype (4)

Prototypeパターンの話も四回目。デザインパターンからは少しそれた話題が続いたが、今回からは戻ろう。例によって、Cocoaの中からPrototypeパターンを使っているものを探してみよう。取り上げるのは、セルとコントロールだ。

[20:14 12/20]

2006年12月18日(月)

ライトニングJava 第72回 JSPプログラミング(3) - 暗黙オブジェクト

JSPはデプロイされる段階、またはアクセスがあった段階で、Servletのソースコードに変換され、コンパイルされ、最終的にServletとして実行される。これに対しJSPでは、あらかじめServletに変換された段階で特定の変数が使えるようになっている。これを「暗黙オブジェクト」という。今回はこの暗黙オブジェクトについて解説する。

[21:07 12/18]

2006年12月13日(水)

ダイナミックObjective-C 第59回 デザインパターンをObjective-Cで - Prototype (3)

前回に引き続き、Objective-CとCocoaでのコピーにまつわる話をしよう。デザインパターンの話からはそれてしまうが、ゾーンの紹介だ。

[23:58 12/13]

2006年12月11日(月)

ライトニングJava 第71回 JSPプログラミング(2) - 宣言、スクリプトレット、式

HTML文書に直接Javaのソースコードを記述する方法としてJSPでは「宣言」「スクリプトレット」「式」の3つを用意している。宣言とスクリプトレットは、セミコロンで区切ることで複数行のソースコードを記述できる。式は値を出力するために用いるもので、セミコロンを使って複数行を記述することはできない。サンプルアプリケーションを通じて、それぞれどのように使われるかを見ていこう。

[23:47 12/11]

2006年12月06日(水)

ダイナミックObjective-C 第58回 デザインパターンをObjective-Cで - Prototype (2)

前回は、Prototypeパターンの基本的な実装を紹介した。その結果、ある意味当然だが、Prototypeパターンではオブジェクトのコピーが重要な事が分かったと思う。そこで、今回はObjective-CとCocoaにおける、コピー機能の紹介をしよう。非常に基本的な機能なのだが、議論すべき点はたくさんある。

[19:27 12/6]

2006年12月04日(月)

ライトニングJava 第70回 JSPプログラミング(1) - ディレクティブ

JSPではページのエンコーディング、レスポンスコンテンツのエンコーディング、セッションの有無、バッファに関する設定、継承元クラスの指定など、ページ全体に関する指定、とくにサーブレットを生成する場合に必要な情報を「ディレクティブ」を使って指定する。ディレクティブ名として指定できるキーワードはpage、include、taglibなど。ttaglibについては別途説明するとして、ここではpage、includeの使用例を紹介したい。

[18:19 12/4]

2006年11月30日(木)

Java Persistence API + H2徹底解説 - EJBじゃなくてもDBへ永続化

JPAはEJB 3.0と同様にJSR 220においてその仕様が定められているが、APIとしてはEJBからは独立しているため単体で使用することも可能である。そこで本稿では、EJBの実装を持たないJava SEプラットフォームにおいて、JPAを利用してJavaオブジェクトの永続化を行う方法を解説する。

[13:46 11/30]

ダイナミックObjective-C 第57回 デザインパターンをObjective-Cで - Prototype (1)

Objective-Cによるデザインパターンの実装。今回からはPrototypeパターンに取りかかろう。

[01:28 11/30]

2006年11月28日(火)

ライトニングJava 第69回 JSP(2) - JSPはServletに変換されて実行される

JSPの簡単なサンプルを作成し、JSPがどのように動作するかみていきたい。まずここではリスト1.1のようなJSPファイルを用意する。これはHTMLの本文に「新大陸へようそこ!!」と出力するJSPファイル。動作の説明をしたいので、出力するメッセージを文字列の変数に格納してから、さらに文字列の加算を行い、その結果をHTMLに出力している。

[04:38 11/28]

2006年11月22日(水)

ダイナミックObjective-C 第56回 デザインパターンをObjective-Cで - Builder (2)

Builderパターンの2回目だが、今回は実例を紹介しよう。ただし、Cocoa本体ではなく、Web Kitフレームワークから取り上げる。Web Kitは、HTMLレンダリングを行うためのフレームワークだ。アプリケーションでWebページを表示することができるもので、Safariでも利用されている。Windowsでいうところの、IEコンポーネントのようなものだと思ってもらえばいいだろう。

[19:23 11/22]

2006年11月21日(火)

ライトニングJava 第68回 JSP(1) - JSP、PHP、ASPって結局なに?

Servletはサーバ側にクラスファイルを設置し、特定のURLに対するアクセスを特定のサーブレットインスタンスに渡して処理する仕組みだ。典型的にはサーブレットにHTML文書を出力するコードが記載されており、サーブレットの出力結果がページの出力としてWebブラウザに返っていく。

[22:28 11/21]

2006年11月16日(木)

ダイナミックObjective-C 第55回 デザインパターンをObjective-Cで - Builder (1)

Objective-Cでの、デザインパターン実装。今回から取り上げるのは、Builderパターンだ。

[03:17 11/16]

2006年11月13日(月)

ライトニングJava 第67回 Servletプログラミング(7) - リスナ、Webアプリケーションフレームワークへ

Servletでは、ServletContextおよびHttpSessionに対してリスナを追加できるようになっている。

[21:14 11/13]

2006年11月06日(月)

ライトニングJava 第66回 Servletプログラミング(6) - フォワード、インクルード、リダイレクト

Servletでは、サーブレット側から別のURLに処理を遷移させる方法としてフォワード、インクルード、リダイレクトの3つを提供している。

[23:58 11/6]

2006年10月25日(水)

ダイナミックObjective-C 第54回 デザインパターンをObjective-Cで - Abstract Factory (2)

今回は、Abstract Factoryパターンの実例を、Cocoaの中から探して解析してみよう。

[23:59 10/25]

2006年10月18日(水)

ダイナミックObjective-C 第53回 デザインパターンをObjective-Cで - Abstract Factory (1)

Objective-Cによるデザインパターンの実装。今回からは、Abstract Factoryを取り上げる。Abstract Factoryは、関連する複数のオブジェクトをまとめて作成するための、インタフェースを提供するパターンだ。作成されるオブジェクトのことをProduct、インタフェースを提供するクラスのことをFactoryと呼ぶ。

[19:57 10/18]

2006年10月16日(月)

ライトニングJava 第65回 Servletプログラミング(5) - フィルタ、連続したフィルタの適用

サーブレットでは特定のURLへのアクセスに対して、あらかじめ設定されたサーブレットが起動し、処理を実施し、出力結果をクライアントに返信するという流れをとる。Java Servlet API 2.3以降では、この「特定のURLへのアクセス」と「サーブレットにおける処理」の間に別の処理をはさむ仕組みが導入されている。これがフィルタである。

[20:52 10/16]

2006年10月11日(水)

ダイナミックObjective-C 第52回 デザインパターンをObjective-Cで - Singleton (3)

今回はObjective-Cによるデザインパターンの実例ということで、Cocoaフレームワークで使われているSingletonパターンを探ってみよう。

[21:48 10/11]

2006年10月04日(水)

ダイナミックObjective-C 第51回 デザインパターンをObjective-Cで - Singleton (2)

Singletonパターンの話を続けよう。前回の最後で、Cocoaフレームワークに見られるSingletonの話をすると書いたが、前回の記事について読者から指摘をもらったり、書き漏らしたトピックがあったので、もう一回Singletonの実装の話をすることにする。

[19:48 10/4]

2006年10月02日(月)

ライトニングJava 第64回 Servletプログラミング(4) - データスコープ、HTTPリクエスト/レスポンスヘッダ

サーブレット間でデータを共有する場合、Servletには主に3つの方法が用意されている。このなかでもっともよく使われるのがHttpSessionインスタンスを使う方法、いわゆるセッションにデータを保持する方法だ。

[21:44 10/2]

2006年09月27日(水)

ダイナミックObjective-C 第50回 デザインパターンをObjective-Cで - Singleton (1)

前回の予告通り、今回からデザインパターンをObjective-Cで実装してみる。取り上げるパターンの順番だが、テキストとして使用する『オブジェクト指向における再利用のためのデザインパターン』(以下GoF本)とは少し変更する。まず生成に関するパターンから始めるのは同じだが、その中のSingletonを最初に取り上げよう。

[20:12 9/27]

2006年09月25日(月)

ライトニングJava 第63回 Servletプログラミング(3) - Webアプリケーションの初期値、サーブレットの初期値

ServletはWebアプリケーションであるため、デスクトップアプリケーションのようにローカルディスクに設定ファイルを作成し状態を保存しておくといったことをしない。かわりというわけではないが、ServletではWEB-INF/web.xmlファイルに初期値を設定できるようになっている。

[18:30 9/25]

2006年09月13日(水)

ダイナミックObjective-C 第49回 デザインパターンで読み解くCocoa

さて、連載の当初の目的である、Objective-Cの「動的な特性」を紹介することは、かなり達成できたのではないかと思う。次に進むべきは、「なぜ動的が大事なのか」ということであろう。「動的」を強調するからには、「静的」があるはずである。静的な言語と目されるC++やJavaと比較して、何が違うのか、どこが利点なのか、というところに踏み込んでいきたい。話の叩き台として、デザインパターンを取り上げようと思う。

[14:46 9/13]

2006年09月11日(月)

ライトニングJava 第62回 Servletプログラミング(2) - GET/POST、日本語の扱いについて

Servletプログラミングでセッションとともに重要になる処理が、パラメータの処理だ。パラメータでユーザの入力値が渡されてくる。ダイナミックなページを実現するには、ユーザから渡されてくるパラメータが処理できないと意味がない。ここでは基本的なServletを通じて、パラメータの処理方法を紹介する。

[18:43 9/11]

2006年09月04日(月)

ライトニングJava 第61回 Servletプログラミング(1) - セッション制御

これまでServletについて取り上げ、Webアプリケーションサーバの用意からWebアプリケーションの作成、デプロイの方法など基本的な内容を紹介した。あとしばらくの間はServletを用いたプログラミングについて説明する。基本的な内容なので、そもそも知っている方も多いとおもう。もう知っている方はおさらいのつもりで、まだ知らない方はいい機会なので、これを機に一通り仕組みを理解するつもりで読んでほしい。

[23:13 9/4]

2006年08月30日(水)

ダイナミックObjective-C 第48回 F-Script - CocoaとObjective-Cのスクリプティング環境

今回は、F-Scriptを紹介しよう。CocoaとObjective-Cを操作する、スクリプティング言語環境だ。もちろん、動的なObjective-Cの特性を利用して、他のアプリケーションへの侵入もできる。オープンソースプロジェクトなので、ソースコードを見れるのもポイントだ。

[20:01 8/30]

2006年08月28日(月)

ライトニングJava 第60回 Servlet(4) - Webアプリケーションの配布にはWARファイル

Javaで開発されたアプリケーションは通常いくつかのアーカイブ形式で配布される。代表的な組み合わせは次のとおり。もちろんこれ以外にもインストーラのついた実行ファイルで配布されることや、ただのアーカイブファイルで配布されることもある。今回はこういった配布アーカイブの紹介を行う。

[18:12 8/28]

2006年08月23日(水)

ダイナミックObjective-C 第47回 AspectCocoa (5) - インプットマネージャとの連携

AspectCocoaの特徴は、アスペクトの織り込みを行う対象になるソフトウェアのソースコードが必要ないことだ。これは、メソッドの置換やフォワーディングといった、Objective-Cの動的な特性を利用してアスペクト指向を行っているからである。

[21:22 8/23]

2006年08月22日(火)

ライトニングJava 第59回 Servlet(3) - Webアプリケーションサーバ基礎(2)おさらい

前回、 Webアプリケーションサーバについてとりあげ、簡単なデモンストレーションを作成した。今回は前回のデモンストレーションを取り上げ、より詳しく説明したい。

[02:40 8/22]

2006年08月16日(水)

ダイナミックObjective-C 第46回 AspectCocoa (4) - AspectCocoaの実例

前回まで、Objective-Cでのアスペクト指向実現のために、3つの方法が提案されている事を紹介した。IMPの置換、フォワーディング、そしてポージングである。果たして、どれを使うのがいいのか? 論文では詳細に検討されているが、ここでは簡単な説明にとどめよう。

[19:48 8/16]

2006年08月07日(月)

ライトニングJava 第58回 Servlet(2) - Webアプリケーションサーバ基礎(1)おさらい

Servlet APIを使って作成したプログラムは、ServletコンテナといわれるServletの実行環境にデプロイして実行する必要がある。通常ServletコンテナはWebアプリケーションサーバに実装されており、代表的な実装系としてApache Tomcatを挙げることができる。Webアプリケーションサーバの実装はApache Tomcat以外にもいくつかあるし、JBossなどApache Tomcatを活用したWebアプリケーションサーバもある。Servletプログラミングをはじめるには、まずWebアプリケーションサーバをインストールし、サーバの起動停止方法、Webアプリケーションのデプロイ方法になれる必要がある。ここではApache Tomcatを使った方法を説明する。ResinやJettyなどほかのWebアプリケーションサーバを使ってもいい。

[20:32 8/7]

2006年08月02日(水)

ダイナミックObjective-C 第45回 AspectCocoa (3) - フォワーディングとポージングの利用

Objective-CとCocoaでアスペクト指向を実現するAspectCocoa。前回より、それを実現する技術的な背景を説明している。今回は、提案されている手法の2つ目から紹介していこう。

[19:13 8/2]

2006年07月31日(月)

ライトニングJava 第57回 Servlet(1) - Javaをネットワークプログラミング言語へと誘った技術

Webアプリケーションシステムを作成するにあたって、ソケットやURLConnectionを使う機会はあまりない。最低限でもServletだし、もはやServletを直接使う機会も少なくなってきている。簡単なものでもWicketやClick、トラディッショナルにはStrutsやSpring、最近ならJSFを使ったフレームワークなどを使うだろう。しかし、できればベースになっているServlet技術においては全容を把握しておいた方がいい。なぜServletが必要になったのか、どういった仕組みで動いているのか、そのあたりは知っておいた方がいい。

[22:33 7/31]

2006年07月26日(水)

ダイナミックObjective-C 第44回 AspectCocoa (2) - IMPによるアスペクト指向の実現

前回より、Cocoaでアスペクト指向を実現する、AspectCocoaの紹介を行なっている。今回は、まず、アスペクト指向を実現するために必要な条件を考察しよう。そして、それがどのようにObjective-Cで実現されているかを、紹介していく。

[20:13 7/26]

2006年07月24日(月)

ライトニングJava 第56回 HTTP通信の基礎(3) - HTTPS通信、HttpsURLConnection

インターネットバンキングやネットショッピングなどのように、インターネットを通じてWebブラウザから操作する仕組みを使って金融取引や通信販売などのサービスを提供する場合、第三者による不正行為を防止するために、利用者とサービス提供者以外に対して情報が漏洩することを防ぐ必要がある。そこで現在一般的に採用されている方法が、SSLによる暗号化通信機能を付加したHTTPによる通信である。SSL通信やHTTPS通信と呼ばれることが多く、実質的に業界標準といえる。JavaもHTTPS通信に対応しており、HTTPSによって提供されているサイトにアクセスすることができる。

[18:18 7/24]

2006年07月19日(水)

ダイナミックObjective-C 第43回 AspectCocoa (1) - Objective-CとCocoaによるアスペクト指向

「アスペクト指向」と呼ばれるプログラミング技法がある。オブジェクト指向の次にくる、新しいプログラミングのパラダイムだとして、数年前から注目されている技法だ。Objective-Cにもアスペクト指向の実装がある。AspectCocoaがそれだ。Objective-Cをプログラミング言語として選び、Cocoaフレームワークと統合する形で、アスペクト指向を実現している。

[20:44 7/19]

2006年07月10日(月)

ライトニングJava 第55回 HTTP通信の基礎(2) - URLEncoder、URLDecoder

URLに表記できる文字列はあらかじめ定められている。たとえば空白や日本語を含めようとした場合、所定の手順にしたがって変換した文字を使わなければならない。細かいテクニックのではあるが、この処理を実施するURLEncoder、URLDecoder両クラスを紹介する。このクラスを使わないで自力で実装することもできるが、用意されているAPIを使った方が便利だ。

[18:57 7/10]

2006年07月05日(水)

ダイナミックObjective-C 第42回 SIMBLでハックを管理

前回は、インプットマネージャを利用したハックの方法を説明した。InputManagersフォルダの下にバイナリを置くだけで実現できるが、すべてのCocoaアプリケーションに自動的に読み込まれてしまうという欠点もある。例えばWebブラウザであるSafariをハックするような、ターゲットとなるアプリケーションに特定したい場合もあるだろう。

[16:51 7/5]

2006年07月03日(月)

ライトニングJava 第54回 HTTP通信の基礎(1) - URIとURL、URLConnection

これまでSocket、ServerSocket、UDPなどを使ったネットワークプログラミングについて紹介してきた。これらはTCP/IP、UDP/IPによるネットワーク通信を実現するためのもっとも低レベルに位置するAPIだ。現実問題として、これらAPIを使ってネットワークシステムを開発することは骨が折れる。通常は、もっと上位のAPIを使って開発をおこなう。今回は上位APIの中でも特に基礎となるURI、URL、URLConnectionについて紹介する。いわば、これらはWebアプリケーションを開発するうえでの実質的な低レベルAPIといえるものだ。

[21:35 7/3]

2006年06月28日(水)

ダイナミックObjective-C 第41回 インプットマネージャから侵入

今回は、ハックの話をしよう。Objective-Cの動的な機構と、Cocoaアプリケーションの仕組みを利用する事で、簡単に強力なハックを行える。

[19:27 6/28]

2006年06月26日(月)

ライトニングJava 第53回 UDP(2) - データグラム通信 実装例 詳細説明

前回紹介したUDP/IPでメッセージを送受信する方法を紹介した。今回は実装について詳細に説明をおこなう。

[20:57 6/26]

2006年06月22日(木)

ダイナミックObjective-C 第40回 Toll-free bridge (3) - Objective-Cメソッドの処理

前回、Toll-free bridgeの秘密は、Core Foundationオブジェクトが持つisaフィールドにあることを説明した。このフィールドに、対応するObjective-Cのクラスオブジェクトへの参照が入っているのだ。今回は、このオブジェクトを調べてみよう。

[02:02 6/22]

2006年06月19日(月)

ライトニングJava 第52回 UDP(1) - データグラム通信 実装例

ネットワークプログラミングを習得する場合、基本的にはTCP/IPを身につけておけばよいだろう。ただし、TCP/IP以外の通信方法として少なくともUDP/IPだけは覚えておきたい。今回は、TCP/IPと並んでもうひとつの代表的な通信プロトコルであるUDP/IPについて説明する。

[22:48 6/19]

2006年06月14日(水)

ダイナミックObjective-C 第39回 Toll-free bridge (2) - Core Foundationのisaフィールド

前回、CocoaのFoundationのオブジェクトの実体は、実はCore Foundationのオブジェクトであることを解説した。であるならば、CocoaのオブジェクトをCore Foundationから使う事は何の問題もない。残る問題は、Cocoa側、つまりObjective-CからCore Foundatioinのオブジェクトを呼び出すにはどうすればよいか、ということになる。

[11:40 6/14]

2006年06月12日(月)

ライトニングJava 第51回 ネットワークプログラミング(6) - ServerSocketを使った実装例 NewIO編(2)

前々回はスレッドを使って複数のコネクションを処理する方法を説明した。前回はNewIO APIを使ってスレッドを生成しないで複数のコネクションを処理する方法だ。前回紹介したソースコードは動作が複雑であるため、いまいち理解できなかった方も多かっただろう。今回は前回の実装をより細かく説明する。

[18:41 6/12]

2006年06月07日(水)

ダイナミックObjective-C 第38回 Toll-free bridge(1) - 変換コスト0のブリッジ

第33回から数回に渡ってCore Foundationの話をしてきたわけだが、本連載の主眼はObjective-Cである。そして、Core FoundationとObjective-Cを語る上で、最も興味深いトピックは、もちろんTool-free bridegeであろう。今回からは、いよいよToll-free bridgeの仕組みを解説する。Core Foundationに隠された秘密を明らかにしていこう。

[19:00 6/7]

2006年06月05日(月)

ライトニングJava 第50回 ネットワークプログラミング(5) - ServerSocketを使った実装例 NewIO編(1)

前回はServerSocketとスレッドをつかって、複数のコネクションを受付同時の処理をおこなう実装方法を説明した。今回はNewIO APIを使って同様の処理をスレッドを使わないで実現する方法を紹介する。

[23:31 6/5]

2006年05月31日(水)

ダイナミックObjective-C 第37回 Core Foudation (5) - インスタンスの実装

今回は、Core Foundationの基本構成要素の3つ目、CFRuntimeBaseを解説しよう。これは、Core Foudationでのインスタンスを表すものである。

[23:31 5/31]

2006年05月29日(月)

ライトニングJava 第49回 ネットワークプログラミング(4) - ServerSocketを使った実装例 スレッド編

これまで3回に渡ってSocketを使ったクライアント側のネットワークプログラミングについて説明してきた。今回からServerSocketを使ったサーバ側のネットワークプログラミングと、肝となるいくつかの実装方法について説明する。

[21:26 5/29]

2006年05月22日(月)

ライトニングJava 第48回 ネットワークプログラミング(3) - Socketを使った実装例 詳細説明(2)

第46回 ネットワークプログラミング(1) - Socketを使った実装例において、Socketを使ってネットワークに接続する方法を紹介した。これを受けて前回は、Socketを使ったネットワークプログラミングの基本となるコードについて説明した。今回は例外処理などに関する実装の詳細について説明する。

[20:57 5/22]

2006年05月17日(水)

ダイナミックObjective-C 第36回 Core Foudation (4) - 多態性の実現

前回、Core Foundationでのオブジェクト指向の基本となるものとして、クラスを表すCFRuntimeClass、クラス識別子を表すCFTypeID、そしてインスタンスを表すCFRuntimeBaseを挙げた。今回は、CFTypeIDを調査しよう。

[23:22 5/17]

2006年05月15日(月)

BSDCon 2006 Canada/FreeBSD developer summit - 新malloc(3)実装 jemalloc/NanoBSDアプライアンス/Distributed VCS

BSD Conference 2006 Canadaは、前日までの空模様とはちがって雨の中での開催となった。前日までは開発者中心のサミットだったが、12日(東部標準時)からはBSDCanである。選考に通過した選りすぐりの論文が発表がおこなわれる。

[04:49 5/15]

2006年05月10日(水)

ダイナミックObjective-C 第35回 Core Foundation(3) - クラスの定義

今回は、C言語でオブジェクト指向を実現するための、基礎的な構造を探ってみよう。クラスやインスタンスといった概念が、どのようにマップされているかを調べてみる。

[20:29 5/10]

2006年05月08日(月)

ライトニングJava 第47回 ネットワークプログラミング(2) - Socketを使った実装例 詳細説明(1)

第46回 ネットワークプログラミング(1) - Socketを使った実装例において、Socketを使ってネットワークに接続する方法を紹介した。今回はとりあげた実装について詳しく説明をおこなう。ソースコードの意味がよくわかっていない場合は、ここで意味を理解しておこう。

[22:51 5/8]

2006年04月26日(水)

ダイナミックObjective-C 第34回 Core Foundation(2) - C言語によるオブジェクト

今回より、C言語によるObjective-C実装とも呼べる、Core Foundationがどのように実現されているか調べていこう。

[20:05 4/26]

2006年04月24日(月)

ライトニングJava 第46回 ネットワークプログラミング(1) - Socketを使った実装例

これまでソケットの基礎知識、socket(2)、Javaのネットワークプログラミング関係の基礎クラス、クラスとsocket(2)の関係などについて説明してきた。何度かC言語の実装を取り上げながら、Javaのクラスがシステムではどのようなsocket(2)に変換されて動作しているかを紹介してきた。Javaプログラマにとって理解しがたいことも多かったかとおもうが、OSレベルではsocket(2)が動作している、ということを覚えておいてほしい。

[22:20 4/24]

2006年04月20日(木)

ダイナミックObjective-C 第33回 Core Foundation(1) - Core Foundation誕生前夜

前回、クラスクラスタの説明で、NSCFStringというクラスが出てきた。この「CF」は、Core Foudationを表すものである。Core Foundationは、C言語で書かれたMac OS Xのフレームワークであるが、Objective-Cとは切っても切れない関係にある。これから数回に渡って、Objective-CとCore Foundationの関係を紹介していこう。

[03:42 4/20]

2006年04月17日(月)

ライトニングJava 第45回 ソケット(4) - Javaにおけるソケット

前回は、FreeBSDの実装からsocket(2)の説明をおこなった。今回は、Javaではソケットがどのようなクラスを実現されているかを紹介する。

[22:46 4/17]

2006年04月12日(水)

ダイナミックObjective-C 第32回 抽象クラスとクラスクラスタ

Objective-Cを形容する言葉としてよく用いられるのが、シンプル、である。なるほど、シンプルというと聞こえがいい。しかし裏を返せば、機能が少ないということだ。例えば、Objective-Cには抽象クラスがない。正確に言えば、抽象クラスという概念はあるが、それをサポートする言語上の機構はない。Cocoaのクラス階層で、ルートクラスになるNSObjectクラスは、間違いなく抽象クラスとして設計されている。だが、プログラム上で、NSObjectのインスタンスを作ることもできる。もちろん、何の役にも立たないインスタンスだが。抽象クラスはないが、それと似たような機構がCocoaでは提供されている。いや、むしろ抽象クラスよりもスマートな仕組みと言えるだろう。クラスクラスタと呼ばれる機構である。

[21:06 4/12]

2006年04月10日(月)

ライトニングJava 第44回 ソケット(3) - Cの実装で学ぶソケットの基礎知識

今回は、特にFreeBSDの実装を参考にしながらソケットの基礎を説明する。ソケットを通じてネットワークのTCP/IPレベルに対してぼんやりとでも実感が持てるようになれればしめたものだ。

[19:51 4/10]

2006年04月05日(水)

ダイナミックObjective-C 第31回 ランタイムAPIでさらに動的に(5) - インスタンス変数に動的にアクセス

前回、Class構造体のobjc_ivar_listを調査することで、そのクラスが持つインスタンス変数の名前を調べることを説明した。今回は、ここで得られた名前をもとにして、インスタンス変数の値にアクセスする方法を説明しよう。

[20:58 4/5]

2006年04月03日(月)

ライトニングJava 第43回 ソケット(2) - プログラミング言語に左右されないインタフェース

ソケットはOSレベルで提供されるインタフェースであり、多くのプログラミング言語で対応している。今回はC言語とJava言語の両方を実装を示し、それがプログラミング言語に依らず動作することなどを紹介する。

[21:45 4/3]

2006年03月29日(水)

ダイナミックObjective-C 第30回 ランタイムAPIでさらに動的に(4) - インスタンス変数の定義を調査

前回までは、メソッドを操作するランタイムAPIを紹介してきたので、次は当然インスタンス変数の出番だ。今回は、インスタンス変数を取り扱うための、構造体を紹介しよう。

[20:05 3/29]

2006年03月27日(月)

ライトニングJava 第42回 ソケット(1) - ネットワークインタフェース

今回から数回に渡ってソケットについて説明する。ソケットはインターネットにおけるネットワークプログラミングの基盤となる基本的な技術であり、少なくともネットワークプログラミングを実践している開発者は、ソケットの基本的な仕組みと意味合いは覚えておきたい。

[16:31 3/27]

2006年03月22日(水)

ダイナミックObjective-C 第29回 ランタイムAPIでさらに動的に(3) - メソッドの実装の置換

本連載で、しつこく繰り返し何度も言っている事の一つは、「メソッドは、セレクタとメソッドの実装でできている」ということだ。メソッドは、Objective-CのランタイムAPIを使えば、構造体の形で取り出す事ができる。この構造体は、ランタイムが管理しているものを、直接参照する事になる。ということは、取り出した構造体の、メソッドの実装の値を変えてしまえば、メッセージが送信されたときに呼び出される関数を、自由に変更してしまう事ができる。これはつまり、とても簡単にパッチを当てる事ができる、ということを意味している。今回は、このメソッドの実装の置換を説明しよう。

[21:24 3/22]

2006年03月20日(月)

ライトニングJava 第41回 Javaネットワークプログラミング事始 - TCP/IPからEJB/WebServiceまで

今回からは、Javaを使ったネットワークプログラミングに焦点をしぼって、技術やフレームワークを説明する。いくつか基礎的な技術を説明したあとで、EJBやWebServiceなど今をときめくエンタープライズシステム開発に欠かせない技術や実装まで説明したいと思う。

[22:10 3/20]

2006年03月15日(水)

ダイナミックObjective-C 第28回 ランタイムAPIでさらに動的に(2) - メソッドの追加

本連載を読んでいるような方ならすでにご存知だとは思うが、Objective-Cには既存のクラスにメソッドを追加するために、カテゴリという仕組みが存在する。これを使うと、自分で作ったクラスだけではなく、システムで用意されているクラスにも自分でメソッドを追加できるという、便利なものだ。

[20:10 3/15]

2006年03月13日(月)

ライトニングJava 第40回 AspectJ 5(5) - アスペクトを活かす

これまで7回に渡ってアスペクトについて説明し、そして4回はAspectJ 5について紹介してきた。今回はアスペクトやAspectJ 5を振り返ってまとめ、一旦これでアスペクト関係は終えようとおもう。

[22:08 3/13]

2006年03月08日(水)

ダイナミックObjective-C 第27回 ランタイムAPIでさらに動的に(1) - 動的なクラスの作成

ここまでの連載で、クラスやメソッドのための構造体や、Objective-CのランタイムAPIを紹介してきた。今回からは、それらを使ったプログラミングのテクニックを紹介していこう。

[22:42 3/8]

2006年03月06日(月)

ライトニングJava 第39回 AspectJ 5(4) - 逆コンパイルで探るアスペクトの裏側@Aroundの実態

AspectJ 5において、もうひとつよく使われるアノテーションに@Aroundがある。AspectJ 5における織り込みのメカニズムとしては、@Before/@After/@Aroundを把握しておけば十分である。今回は@Aroundを使ったプログラムを逆コンパイルし、@Before/@Afterとの違いや、織り込みのメカニズムについて説明する。

[20:46 3/6]

2006年03月01日(水)

2006年02月27日(月)

ライトニングJava 第38回 AspectJ 5(3) - 逆コンパイルで探るアスペクトの裏側

AOPを織り込んだバイナリを逆コンパイルするとおもしろいことがわかる。AOP自体が正しく機能しているかどうかや、アスペクトを適用したあと実際にどのような処理が行われているのか調べるには、逆コンパイルをおこなってアスペクト適用後のソースコードを調べればよいからだ。

[22:36 2/27]

2006年02月22日(水)

ダイナミックObjective-C 第25回 メッセージ送信(3) - メソッドのキャッシング

「動的なメッセージ探索を伴うメッセージ送信は遅い」。これは、動的と呼ばれる言語の避けられない問題だ。Objective-Cでは、この問題に対応するために、メソッドのキャッシュを行っている。今回は、この効果を調べてみよう。

[22:55 2/22]

2006年02月20日(月)

ライトニングJava 第37回 AspectJ 5(2) - メソッドの実行時間を測定する

AspectJ 5を使えばアスペクトを織り込ませることができることは前回紹介した。今回は、実際に動作するシステムに対してAspectJ 5を使って実用的なアスペクトを適用する方法を紹介する。

[01:51 2/20]

2006年02月15日(水)

ダイナミックObjective-C 第24回 メッセージ送信(2) - メソッドリストからメソッドを検索する

前回はメッセージ送信を行うランタイムAPI、objc_msgSendの実装を調べてみた。その結果、メッセージ送信の中核となるのは、渡されたセレクタからメソッドの実装を取り出すことである、というところまで迫ることができた。今回は、そのメソッドの実装の検索について調べてみよう。

[20:00 2/15]

2006年02月14日(火)

ライトニングJava 第36回 AspectJ 5(1) - JavaでAOPを実現する

アスペクト指向プログラミング(AOP)は効果的な方法であり、使うべきシーンで使えば効果を発揮できることを紹介してきた。今回からは、実際にJavaでAOPを実現するためにAspectJ 5を紹介していく。

[15:17 2/14]

2006年02月08日(水)

ダイナミックObjective-C 第23回 メッセージ送信(1) - objc_msgSendの実装

前回まではメソッドの実体、とくにMehtod、SEL、IMPといったメソッドの構成要素を調べて来た。いよいよ、今回からメッセージ送信の実体に迫りたい。まずは、メッセージ送信を行っているランタイムAPIからだ。

[19:31 2/8]

2006年02月06日(月)

ライトニングJava 第35回 アスペクト指向(3) - AOPを適用するべきか否か

アスペクト指向プログラミング(AOP)は、オブジェクト指向プログラミングを補完する便利な方法のひとつだが、すべてを補完する完璧な方法ではない。AOPを適用した場合に効果が高いものを見極めて、使っていくことが大切だ。どういった場合にAOPを適用すればよいか考えるには、AOPの不得手とする面や、AOPの問題について知っておくといい。

[21:34 2/6]

2006年02月01日(水)

ダイナミックObjective-C 第22回 メソッドとは何か(5) - メソッドの実装

メソッドを構成する要素の最後になる、メソッドの実装を取り上げよう。IMP (implementation) 型になる。これを利用すると、劇的な高速化も可能だ。

[20:36 2/1]

2006年01月30日(月)

ライトニングJava 第34回 アスペクト指向(2) - 横断的関心事を知る

AspectJを使ってAOPの実践方法を紹介するまえに、AOP自身の特徴や得手不得手などを紹介していく。AOPは万能薬ではないが、効果の高い方法であることは間違いのないところだ。適切に適用すれば成果をあげることができる。そのためにはAOP自身について一通り知っておいた方がいい。

[20:26 1/30]

2006年01月23日(月)

ライトニングJava 第33回 アスペクト指向(1) - 新しいプログラミングの形、アスペクト指向

これまで実例をあげながらアノテーションを紹介してきた。アノテーションはJava SE 5 Tigerから導入された新しいEoDで、Javaプログラミングスタイルの根幹にかかわるものだ。

[23:05 1/23]

2006年01月18日(水)

ダイナミックObjective-C 第21回 メソッドとは何か(4) - セレクタの実体

メソッドの構成要素の解説。今回は、セレクタの実体にせまろう。要は、メソッドの名前を表す文字列なのだが、詳しく見るともう少し手が込んでいることが分かる。

[19:53 1/18]

2006年01月16日(月)

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

これまで3回にわたってTestNGのアノテーションについて紹介した。今回は、これまで紹介したTestNGのアノテーションをまとめ、TestNGアノテーションの効果についてまとめる。

[21:41 1/16]

2006年01月11日(水)

ダイナミックObjective-C 第20回 メソッドとは何か(3) - メソッドの型を読み解く

今回は前回に引き続きメソッド調査の話をしよう。前回までで、メソッドの名前を得ることはできた。次は引数の型の調査だ。

[22:08 1/11]

バックナンバー

人気記事

一覧

イチオシ記事

新着記事