Macintosh Developer Online (MDOnline)


2002年1月31日発行号 - 記事をPDF化開始!



┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃Q.オンラインショップで本を買っても送料無料ってホント? ┃今すぐ購入
┃A.本当です!【楽天ブックス】では送料無料でばんがります!┃ ↓
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ↓
 http://px.a8.net/svt/ejp?a8mat=BZFSP+3GFM7M+1N6+61C2R
「Mac OS Xプログラミング入門・Objective-C」の購入はこちら
 http://px.a8.net/svt/ejp?a8mat=BZFSP+3GFM7M+1N6+61Z82&i=4877780688

WebObjectsのサンプル版は今日発送しました。まだ1つありますが、どうでしょうか? ローカスの封筒のストックがなくなってしまったので、ありあわせの封筒での送付となった方々もいらっしゃいます。失礼しました。

さて、読者の方から、記事をPDFで参照したいというご要望をいただきながら、手間を考えると残念ながらできませんとお答えしておきました。だけど、サービスを提供する側としてはそんなことじゃあいけないと思い、なんとか、記事をPDFとしてお届けすることを実現しました。手間は今までとほとんど変わらないところまで効率化できると思います。なんとかならんかなと思っていたのですが、昔作ったWord-TeXコンバータを引っ張りだすことにしました。ソースのコメントは1996年になっています。5年以上前なんですよね〜むちゃくちゃ懐かしいです。当時、WordBasicで作り、その後、1998〜9年頃までは使っていたかと思います。現状では満足なレベルではありませんが、同一のソースをメールマガジンとWebページを両立させています。これらのソースを、ワープロで作って生成すればいいわけで、とりあえず、今日の段階では、ほんの少しのソース変更で対応できました。環境はもっとちゃんと整えないといけないのですが、目処はたちましたので一気に実用化です。今後は、まとまった記事についてはこうしたPDF化をしながらの執筆を行いたいと思います。過去の記事については、もし、強いリクエストがあればPDF化しますので、ご要望をいただければと思います。
ただ、みなさんのご要望を満たすかどうかという問題があります。PDFについては、レイアウトについていろいろご意見があるかと思います。しかも、みなさん、普通のパソコンユーザではなくって、マックユーザですから(笑)。フォントのサイズ、レイアウトのマージンなどなど、ご意見をください。いちおう、ヒラギノ主体でレイアウトしています。そして、Mac OS Xの機能でPDF化しています。一言でPDFとは言っても、やはり画面向けのレイアウトと、印刷向けのレイアウトって違うと思います。実は、印刷ということをまだ1度も行っていませんので、印刷したら読みにくいとかあればおっしゃってください。ご要望はどんどんお寄せ下さい。その場合、どういう使い方をしたいからということ(たとえば印刷したいとか)いったことをお書き添えいただければと思います。
ただ1つ、少し不便をおかけします。それは、PDFのダウンロードでは、MDOnlineのアカウントとパスワードが必要になっています。画像はパスワードをかけていませんが、メールマガジンには画像自体が入っていないからということもあり、こうした措置にしています。しかしながら、PDFは記事そのものですので、やはりパスワードをかけたいと思います。鶴薗さんの記事はパスワード領域外でしたけど、今後はパスワードをかけた領域にアップするということにします。ただ、実はサーバの問題で、本日現在のアカウントとパスワードでのダウンロードとなります。みなさんがログインしてパスワードを変更しても、PDFの領域だけはその変更が更新されません。サーバを移行するまではすみませんが、いくらか不便をかけると思います。サーバを移行させれば、パスワードは統一されます。当面は、時々手作業で、パスワードファイルをmdonline.jp側に移動させますが、何日現在のパスワードなのかは、パスワード入力のダイアログボックスにでてくる「領域」で分かるようにします。たとえば、今現在は「MDOnline(2002/1/31)」とでてきますが、これは1/31にパスワードファイルをPDFの領域用にコピーしたということです。よろしくお願いします。」
(新居雅行 msyk@mdonline.jp


【MacWIRE配信予定】森下克徳の崖っぷちからWebObjects》第22回〜MySQLでコミュニティサイトを作るv6/MySQLのインストール

   この記事のPDFファイル(340KB)は以下のアドレスにあります。
   ダウンロードには、MDOnlineのアカウントが必要です。
   pdfs/MDOnline020002.pdf
 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
さて、さっそくインストールに取りかかろう。アップルが提供しているMySQLのパッケージもそうだが、普通に素直にインストールすると、Finderからは見えない、/usr以下の領域にインストールされる。本格運用時にはそうするとしても、Macな身には、まだよくわかってないものを、Terminal.appだけであやつらなくてはならない状況はちょっとつらい。実は、Mac OS X Server 1.2までは、システムの領域もFinder(というか、当時はWorkspaceManagerと言ったが)上でぱかぱかクリックして開いて行けたので、MySQLがそのような領域に入ったとしても、GUI上で見えていた(図1)。今から考えると、だからこそ最初の一歩が踏み出しやすかったようにも思う。

◇図1
 

そこで今回は、自分のホームスペースにインストールしてしまう方法をお教えしよう。こうすれば、各種ファイルがどのように配置されているのか、Mac的に見られると言う寸法だ。

まず、自分のホームディレクトリに、MySQLをインストールするフォルダ「MySQL」を作っておこう(図2)。図にある「src」というフォルダは、InternetExplorerの環境設定でダウンロードフォルダとして指定したもので、MySQLのソースもここにダウンロードされている。この場所は環境設定を触っていなかったらデスクトップにそのまま展開されているだろうし、他に設定していればその場所で、つまり人それぞれのはずだ。なので、各自でその当たりは読み替えてほしい。

◇図2
 

「src」フォルダの中にある「mysql-3.23.47.tar.gz」をStuffItExpanderに展開させると、「mysql-3.23.47」というフォルダができる。(なお余談であるが、InternetExplorerには、StuffItExpanderを利用したセキュリティホールが見つかっている。この脆弱制を利用した悪意あるWebサイトを開くと、自動解凍後、自動マウントされたイメージディスクにある任意のコードをローカルで実行されてしまうと言うものだ。InternetExplorerでダウンロードしたものを、StuffITExpanderに渡さないように設定しておいた方がよいだろう。)
ここからはどうしてもTerminal.appを利用しなくてはならない。ただしMacOSXのTerminalはGUIと連係してくれるので、この手を使わない手はない(図3)。図のようにアイコンをTerminalのウインドウにドラッグ&ドロップすると、カーソル位置に自動的にそのアイコンのパスを書き込んでくれるのだ。図ではウインドウのタイトルバーからドラッグしているが、普通のアイコンでかまわない。

◇図3
 

では、Terminalのウインドウをアクティブにして、最初に「cd」と打ち込んでスペースをあけよう。そして、Finder上で「mysql-3.23.47」フォルダを選択し、Terminalのウインドウに落としてみよう。パスが入ったのを確認したら、Terminalをアクティブにしてリターンキーを押す。すると次の行に進んで「mysql-3.23.47」フォルダの中に入っている。

まず最初は、様々なシステムに対して広くソフトウェアのコンパイルができるように考えられたautoconfというシステムを利用する事になる。つまり、UNIXといっても千差万別で様々にシステム依存の部分があるので、すべてのためにコンパイルの仕様書であるMakefileを用意するわけには行かない。この差異を調整して適切なMakefileをその都度作ってしまおうというのが、autoconfである。またこの時には、ソフトウェアの様々な所作を指定したり、インストール先を指定したりする。
今回はここでこのように打ち込む。

./configure --prefix=

そしてスペースを一つ空けた後、先ほどの技を使ってホームディレクトリに用意した「MySQL」フォルダを放り込む。続けて、日本語での動作を指定する。横に長くなるようなら、そのまえに\(バックスラッシュ)を打ち込んで改行すれば、次の行に続ける事ができるので活用しよう。基本的に日本語をEUCで扱うのなら「--with-charset=ujis」Shift-JISなら「--with-charset=sjis」とする。ここではEUCで扱う事を前提にしておく。さらに、起動時の指定によっては別の言語も使えるように、「--with-extra-charsets=all」をつけておこう。また、今回は自分のホーム内にインストールするので、「--with-mysqld-user=hanako」とつける。ただし、この例ではユーザhanakoが行っているのでuser=hanakoなのだが、現実には各自それぞれのユーザ名を入れよう。

次に改行すると文字がずらずら流れて行って、いろいろ調べながらMakefileを用意してくれる。これはちょっと時間がかかるかも知れない。これが終了したら、次にmakeと打ち込みリターン。ここからがコンパイルである。先ほどの./configureの何倍も時間がかかるので、ゆっくりコーヒーでも飲みながら待つとしよう。

コンパイルがうまく行けば、最後にWelcomeメッセージがTerminal上にあらわれる。ここまで来ればもう問題はない。ホームディレクトリの中にインストールするのでsudoする必要もなく、単にmake installリターンとすればインストールが完了だ。それでは、最初にインストール用に用意した「MySQL」フォルダをFinder上で開いてみよう(図4)。ちゃんとインストールされているのがわかるだろう。

◇図4
 

それでは次回は、インストール作業に伴う最初の設定を行おう。

――――★今日打ったコマンドのまとめ
% cd /Users/hanako/mysql-3.23.47
% ./configure --prefix=/Users/hanako/MySQL \
--with-charset=ujis --with-extra-charsets=all \
--with-mysqld-user=hanako
% make
% make install

[森下克徳]

カテゴリ:データベース, 崖っぷちからWebObjects


今から始めるCocoaプログラミング》文書ファイルを扱うアプリケーションを作る(17)さらにテキスト編集機能を追加

 この記事のPDFファイル(776KB)は以下のアドレスにあります。
 ダウンロードには、MDOnlineのアカウントが必要です。
 pdfs/MDOnline020001.pdf
 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
Documentベースのアプリケーションを作成しているシリーズのさらに続きである。ここまでは、少ない行数ながらも「プログラムを作る」ということを主眼にしてきたが、今回は、プログラムは、作らないと言えば作らないことになる。Cocoaフレームワークと、Interface Builderの機能が多彩な機能を提供するあたりを紹介してみたい。

――――Interface Builderでメニューを追加
MOSAEditorのプロジェクトには最初から、MainMenu.nibというnibファイルが作成されていて、そこに、メニューが最初から作られている。このメニュー項目は、最初に方でも説明したように、すでに自動的に、MainMenu.nibのFirst Responderに接続されている。したがって、Cutを選択したら、カットを行うイベントが発生して、Responderに対応している適切なオブジェクトにメッセージが送られるのである。
ここで、ほかにもメニューがあるので、それらを追加してみることにしよう。MainMenu.nibをダブルクリックして、Interface Builderで開く。そして、そこに定義されているMainMenuというオブジェクトをダブルクリックして開く。これはメニューの定義で、ウインドウにメニューバーだけがあるウインドウが開くが、項目をクリックすると、それらが開き、さらにメニューの実際の項目をクリックして選択することなどができるようになっている。
ここで、ツールパレットで、上の段のアイコンのいちばん左にあるものをクリックして、メニューのツールを表示する。タイトルバーは「Cocoa-Menus」となるはずだ。ここにあるFormatというメニューを新たにメニューバーに追加しよう。メニューバー上にドラッグ&ドロップすればいいだけである。ドラッグ中の表示を注意深く見ていれば、どこにメニューが追加されるかはすぐに分かるはずだ。

◇Interface Bulderで新たなメニューを追加する
 

続いて、Editメニューは最初からあるものを削除して、ツールパレットから新たにEditメニューをドラッグしてくる。最初からあるものには、Speekメニューがないのであるが、新たにドラッグしてきたものには、Speekメニューが追加されている。

◇Editメニューをパレットにあるものと置き換えた
 

ほかにもメニューはたくさんあるので、もちろん、テストで全部登録をしてもらってもいいのであるが、概要を説明しておこう。まず、Findメニューについては、Editにあるものと同じものとなっている。FontやTextメニューについては、これらと同じ機能がFormatにもあるので、いちおう、機能を全部試すには、まずはFormatメニューを利用するのが便利であるということだ。

――――アプリケーションを実行してみる
こうして、アプリケーションを実行してみよう。ここで、テキストを適当に入力するのだが、FormatメニューのTextからShow Rulerを選択すれば、NSTextViewのコンポーネントでルーラがでてくる。そして、中央揃えやあるいはタブ位置、左右のインデントなどの設定がルーラ上でできる。また、FormatメニューのFontからShow Fontsを選択すると、Font選択パレットが表示されるし、Show Colorsを選択すると、カラーのパレットがでてくる。これらを使って、NSTextViewの中にあるテキストに対して色を付けたりができる。操作方法は、とりあえずご自分で試してもらうことにしよう。今までのMac OSとはちょっと異なるCocoaユーザインタフェースであるが、こうした機能は何のプログラミングをしなくても追加されるということだ。

◇アプリケーションを実行してみた
 

デモ好きの方(笑)は、ぜひとも、文字を選択して、EditメニューのSpeekメニューを利用してもらいたい。これだけで、選択範囲の読み上げを行ってしまうのである。また、Editメニューにあるスペルチェックも動くことを確認しよう。これも、一切プログラミングはしていない。
なお、Findによる検索については残念ながらこのままでは機能しない。ダイアログボックスや実際の検索などは、プログラミングをしなければならないところである。

――――Interface Builderでの定義を確認する
再度、Interface BuilderでMainMenu.nibの定義内容を確認してみよう。まずは、Font Managerという項目が増えている。これはFontメニューの追加で自動的に設定される模様だが、Show Fontsの項目を呼び出すと、このFont Managerへメッセージが送られて、その結果、フォント一覧メニューがでてくるようになる。

◇メニュー項目Show Fontsに接続されたAction
 

また、EditメニューのSpellingをみると、Check Spellingは、First ResponderのcheckSpellingというActionに接続されている。つまり、checkSpellingというメッセージが渡されるわけだが、NSTextViewがFirst Responderになっていれば、そこでcheckSpellingメソッドが呼び出されて、スペルチェックが実際に行われる。NSTextViewの親クラスであるNSTextでcheckSpellingメソッドが実際には定義されている。

◇メニュー項目Check Spellingに接続されたAction
 

以上のように、Interface Builderで最初から利用できるようになっているさまざまな機能は、実はけっこう広い範囲に及んでいる。しかも、Cocoaフレームワークの機能もうまくできている。Interface Builderを単なるユーザインタフェース構築ツールとしてしか見ていないのなら、こういう部分は見のがしてしまうかもしれない。いずれにしても、Cocoaの奥深さというところは言えるだろう。
(この項、続く)

カテゴリ:ユーザインタフェース, Cocoa, 今から始めるCocoaプログラミング


Cocoaにユーザインタフェースなどの機能を追加するフレームワークがバージョンアップ

Jiiva社は、Cocoaに対応したフレームワークのApplication Builder Collection Version 1.1(ABC 1.1)をリリースした。カレンダーや折り畳み可能な入力領域、通過などのさまざまな形式の入力フィールドなどの機能をCocoaアプリケーションで利用することができる。Interface Builderでのコントロールの配置にも対応している。新しいバージョンでは、Interface Builderの利用範囲を広げた他、ユーザからの要望を取り込んだ。価格は$199.99で、ボリュームライセンスもある。購入したユーザは、自分で配付するソフトウエアにABCを含めて再配布もできる。

関連リンク:Application Builder Collection
カテゴリ:ライブラリ, Cocoa


Windows向けにQuickTimeのプログラムを組むときのPascal文字列

Technical Q&Aに、Pascal文字列とC文字列の問題についての文書が記載された。QuickTime関連アプリケーションをWindowsに移植する場合、いくつかの問題があるが、1つは、c2pstrは使わないようにする必要がある。この呼び出しにより文字列がリードオンリの領域に置かれて変更ができなくなったり、ガベージコレクションでデータがなくなる可能性がある。また、\pで始まる文字列でのPascal文字列の生成は、Windowsのコンパイラではそうした特別な機能が組み込まれていないため、正しい文字列が作成できない。解決策も示されており、内容が変更される文字列は、static宣言して定義する。また、文字列のコンバートにはCopyPascalStringToC、CopyCStringToPascal、c2pstrcpy、p2cstrcpyといった関数が用意されているので、それを使う必要がある。

関連リンク:QTML, c2pstr and Pascal strings
カテゴリ:Technical Q&A, QuickTime