2010年4月28日
Mac開発もCarbonからCocoaに
iPhone開発をやってCocoa&Objective-Cを経験したので、Macのほうの開発(仕事)もCarbonからそちらに移行してく決心をしました。ずっと逃げていましたが、遅かれ早かれCarbonは切り捨てられることになると思うので、いつかはやらなければなりません。
とはいえ、長年開発を続けている大規模なプロダクトをいきなり全て作り直すのは時間的にも予算的にも無理なので、現在のものをベースに、新規に開発する機能から徐々にCocoaを使っていくことにしました。いちばん古いアプリは10年くらいバージョンアップを繰り返していて、もともとCで作ってあったものに、後から追加したC++のルーチンが混在しています。今度はそれにObjective-Cが加わるわけで、ちょっと複雑ですね(^^;)
試しに今回、iPhoneアプリで作ったある機能をMacアプリに移植してみたのですが、思ったより楽にできました。Webサーバと通信する機能だったのですが、動作もノートラブルで目から鱗でした。これをCarbonで1から作ってたら大変だった・・・。
実際は、画像処理ではQuickDrawも捨て切れていないので、そういう部分はいつか一気に書き直さなければならないとは思いますが、今回Cocoa化へのスタートが切れただけでもだいぶ気が楽になりました。
2010年4月 8日
iPhone SDK 2.2 その後
一昨日の日記のその後です。iPadシミュレータで起動しない件ですが、アクティブSDKをiPhone OS 3.2にしたら、あっけなく起動しました。この状態で、iPhone OS 3.2未満のiPhoneでちゃんと起動するんですかね? だったらこのままにしちゃっても良いかも。
ただ、起動するとはいえ、iPadの中でiPhoneサイズのアプリが立ち上がるだけなので、あまり面白くありません(^^;) せめて、ちゃんとiPadの画面サイズに引き伸ばされた状態で起動して欲しいです。画面サイズに依存するようなコードは書いていないので、それほど難しくないはず・・・と思って、ちょっとだけチャレンジしてみました。
私のアプリはNavigation Basedなのですが、SDK 3.2で新たに新規プロジェクトを作ってみたところ、iPad用のコードは含まれていませんでした。Navigation BasedはiPadでは推奨されないんですかね? 仕方ないのでWindow Basedで作ってみたところ、両方に対応していました。
ドキュメント類はまだ一切読んでいませんが、ソースを見た限り、単純にiPhone用とiPad用のxibファイルがあって、使い分けているだけのようです。でも既存のiPhoneアプリをこのやり方でiPad対応するのは面倒なので、今はなんとか引き伸ばし表示するだけに留めたいです。
最初はプログラムからウィンドウのサイズを画面サイズに変えたりしてみたのですが、どうやってもうまくいきません。そうなるとだぶんInfo.plistだろうと思って調べると「Main nib file base name」のiPad用がありました。これを既存のアプリのほうにも作成して、iPhone用と同じxibファイルを指定したところ、ちゃんとiPadでも引き伸ばし表示ができるようになりました。
たったこれだけで、基本的にはちゃんと動作しています。ただ、768x1024の画面は思った以上に広大で、iPhoneと同じデザインだと明らかに見た目が不自然です。正式にiPadに対応するときは、やはりiPadらしい画面を用意しないといけないかもしれませんね。
まだ他に何かあるかもしれないので、また暇を見つけて、今度はちゃんとドキュメントを読んでみたいと思います(^^;)
2010年4月 6日
iPhone SDK 2.2
iPhone SDK 2.2の正式版が出たようなので、とりあえずサブマシン(MacBook)に入れてみました。今回はiPad対応ということで、ちょっと楽しみにしていました。仕事で作ったアプリをすぐiPadに対応する予定はないけど、とりあえずシミュレータをいじってみたかったのです(^^;)
ただ、自作のアプリをそのまま起動しようとしたら、起動すらしませんでした。まだ何も調べてないけど、何かやらなくちゃならないのでしょうか? まあ、時間ができたらやってみたいと思います。
iPad本体を買うかどうかは、まだ決めあぐねています。少なくとも、宣伝のように信じられない
ほど安い価格ではないみたいだし(笑) つーか、$499からって普通だよね・・・。
関連リンク
・iPhone SDK 2.2 その後 (2010年04月08日)
2010年3月24日
プログラマのための文字コード技術入門
Amazonを眺めていて見つけた「プログラマのための文字コード技術入門」という本を買いました。この手の本は昔から何か1つ欲しいと思っていたのですが、内容が古いものが多く、これまで機会がありませんでした。この本は出たばかりで、おそらく最新の内容だと思うので即決しました。
まだ中身は全く読んでいませんが、小さい本(A5判)で読みやすそうです。技術書は大きな本が多いけど、私はこのくらいが好きですね。
2010年3月 1日
ビデオ管理データベース 再び
一昨年12/20の日記のその後です。あれから何も修正せず使い続けていたお手製のビデオ管理データベースですが、最近仕事でPHPを使ったついでに(頭がPHPに慣れてるうちに)若干改良しました。自分しか使わないアプリでURLも秘密なのに毎回ログインしなくちゃならないのは非常に面倒なので、クッキーにログイン情報を保存して自動ログインできるようにしました。
PHPでクッキーを扱うのは至極簡単なのですが、念のためパスワードは暗号化するようにしました。ただ、このアプリのログイン情報はデータベース(MySQL)のログイン情報なので(ログインする先はあくまでDB)可逆暗号でなくてはなりません。
最初はPHPのmcrypt系の関数でやろうと思って作ったのですが、なんとうちのレンタルサーバでは使えないことが判明。そういうこともあるんですね。仕方ないのでネットで見つけたCrypt_Blowfishというライブラリを使いました。mcryptが色々と面倒なのに、このCrypt_Blowfishは凄く簡単。あっという間に実装できました。でも暗号自体の評判はよく分からないのが若干不安です。これって仕事でも使えるレベルのものなんですかね?
まあ、今回の用途には(非公開アプリのブラウザ内データだし)平文じゃなきゃなんでもいいんですけどね(^^;)
2010年1月26日
仕事でPHP
仕事で作っているiPhoneアプリのサーバ側のソフトをPHPで書いています。今まで個人的に使うためのWebアプリで使ったことはありますが、仕事でPHPは初めてです。これで履歴書とかの過去の実績にPHPも書けますね(^^;)
作っているのはGUIもない、簡単なファイル管理のプログラムなのですが、改めて、PHPは楽だなと思いました。大規模な開発には向かないのかもしれないけど、何よりネットに情報が多いし、ちょっとしたものを短期間で作るには本当に便利ですね。なぜか好き嫌いの分かれる言語みたいだけど、私はかなり気に入っています。今後も積極的に使っていきたいです。
2010年1月15日
iPhone ゲーム開発ワークショップ
「iPhone ゲーム開発ワークショップ」という本を買いました。最初はOpenGLとかそっち系の本を探していたのですが、中身を見ていたらRendezvous(今はBonjourって言う?)について書かれているページがあったので、これにしました。実は以前から興味がありました。
最近iPhone本をたくさん買っていますが、やはり書籍は手っ取り早くて良いですね。ネットにも情報はたくさんあるし、アップルのドキュメントも分かりにくいわけではないのですが、書き手の、なんていうかサービス精神に差があるように思います。媒体としてネットが本に劣るわけでは決してないのですが、やはりお金を取るという前提で書かれているものは違いますよね。
ちなみに、今のところゲームを作ったりする予定はありません(^^;)
2010年1月 9日
仕事中に音楽は効果的か
最近「仕事中にヘッドフォンで音楽を聴くのはアリか?」という議論をあちこちで見かけます。どうもスラッシュドットの記事が発端らしいのですが、いろんな人の意見を興味深く眺めています。
私は会社勤めをしなくなってから10年以上たつので最近のことは分かりませんが、当時所属していた会社(比較的おカタイ仕事が多いSIer企業)でも、ヘッドフォンで音楽を聞きながら作業している人は結構いました。ちょうどPCがCD-ROMを搭載するようになった時期で、手軽に聴けるようになったという理由もあるのかもしれません。リーダー格の人が率先して始めて、すぐに広まったように記憶しています。私も安いDiscman(ソニーのポータブルCDプレイヤー)を会社に置きっ放しにして、たまに聴いていました。
また、フリーになってすぐの頃、週に2〜3回出入りしていた小さなソフトハウスでは、就業時間中ずっとFMラジオがかかっていました。言葉がやっと聞き取れるくらいの小音量でしたが、リラックスしたムードに包まれて、なかなか良かったように思います。少なくとも、邪魔に思ったことはありません。
今は一人なのでヘッドフォンを使うことはありませんが、テレビ、ラジオ、音楽と、その時の気分で適当に流しています。最近は、動画サイトで音だけ聴いている時もありますね(^^;) 何もかけない時間は全体の半分くらいでしょうか。
ソフト開発という仕事は手間暇のかかる単純作業が少なからずあるので、気を紛らわせて長時間がんばるためにも、こういうのが効果的だと思います。特に一人だと孤独ですしね。実際、ロックとかかけてると、退屈な作業もノリノリでやれてしまうことが確実にあります(^^;) モチベーションの維持にも役立ちますね。
IT業界以外の会社は全く経験ありませんが、普通の事務職でそれをやっているというのは確かに想像できませんね。やはりクリエイティブな仕事ならではの習慣なのでしょうか。そうでなくても、日本人は他人の目を気にする人が多いので、なかなか変われないのかもしれません。
2010年1月 8日
iPhoneアプリ ネットワーク+GPS プログラミング
「iPhoneアプリ ネットワーク+GPS プログラミング」という本を見つけたので買ってみました。内容はまだ分かりませんが、これはきっと役に立つこともあるでしょう。入門書はもう十分なので、今後はこういう専門的な本が増えていって欲しいですね。
仕事で作っているiPhoneアプリも8割方完成しました。SDKのリリース後、かなりたってから始めたおかげで、書籍も情報も豊富で比較的苦労が少なかったように思います。ただ、やはり新しいプラットフォームを学ぶには、仕事でやらないとだめですね(^^;) 仕事じゃなければ、ここまでの時間をかけられません。そういう意味では今回、iPhone開発に取り組めたのはラッキーだったなと思っています。
2010年1月 4日
iPhone Core Audioプログラミング
本屋に行ったら「iPhone Core Audioプログラミング」という本があったので買ってきました。この本、以前Amazonで見つけて、そのうち買おうと思っていました。仕事で使う機会があるかどうかは微妙ですが、もともと興味がある分野だし、iPhoneだけでなくMac OS Xの開発にも通用するので、持っていても損はないと判断しました。なにより、この手のピンポイントな技術書は買っておかないと、のちのち手に入らなくなる可能性が高いですからね(^^;)
ざっと眺めてみましたが、iPhone OS 3.0ではiPhone内の音楽ライブラリ(ビデオは除く)にもアクセスできるようになったんですね。知りませんでした。以前、iPod touchを買ったときにも書いたけど、Podcast(ラジオ)みたいに1曲が長いものはiPhoneのスライダーを使ったインターフェイスでは早送りが面倒なので、そういうのに適したプレイヤーが欲しいとずっと思っていました。10秒とか30秒とか、ボタンで飛ばしたり戻したりできるようなものが良いんですが、探せば既にあるかな?
2009年12月 9日
技術書を2冊購入
最近、Amazonを眺めていると、過去に定番と言われたプログラミング関連の技術書が長く売り切れ状態になっているのが目立ちます。特にC++本に顕著で、そのうち買おうと思っていた本が買えなくなってきています。高い本は躊躇してしまって、なかなか買えないんですよね(^^;)
この手の本はしばらく待っていると復活することも多いのですが、思い立ったが何とやらということで、2冊ほど買ってみました。家にはまだ買って読んでない本もたくさん積んであるんだけど、普段から月に1冊くらいは技術書を買おうと思っているので良しとしましょう。モノは「Effective C++ 第3版」と「C言語による最新アルゴリズム事典」です。
前者は評判が良いのでずっと読んでみたいと思っていました。後者はかなり昔からある本なので、とても最新
とは言えない感じですが、私はプログラミングは完全に独学で、アルゴリズムとか、そういった教科書的なジャンルには少しうといので、ちょうど良い内容です。でもまあ、もうこの本に載っているような面倒な処理を自分で作ったりはしないかなぁ。
2009年12月 7日
iPhone開発 その後
仕事で始めたiPhoneアプリの開発ですが、だんだん全体像が見えてきました。具体的なことは書けませんが、最近かなり楽しくなってきています(^^;) Objective-Cの変態的な文法にも慣れたし(笑)やはり実際に実機で動くものができると満足感が違いますね。
Cocoaは昔、Mac OS Xアプリ開発のための入門書を読んだことがあるくらいで、本格的に使うのは今回が初めてです。予備知識はあったつもりですが、実際に開発してみると、いろんなことが本当に楽にできますね。特にファイルとかバイナリデータとかの扱いはあっけないくらい簡単で、PHPのようないわゆる軽量言語よりも開発しやすいように感じました。もうMac OS Xアプリの開発も、Carbonには戻れないかもしれません(^^;)
まあ、Cocoaについてはまだまだ全てを理解したとは言い難いレベルですが、とりあえず今回のアプリで必要なGUIの開発には目処が立ちました。今回のアプリは2Dの画像処理があるので、そこはCarbonと同じような開発になりそうですが、Core Graphicsは多少、経験があるので時間の問題です。あとはコツコツと作り込むのみ。
2009年11月 6日
iPhone Developer Program 加入
本格的にiPhoneアプリの開発をスタートしたので、iPhone Developer Programに加入しました。私個人の名前でアプリを配布する予定はありませんが、加入しないと実機でのテストができませんからね。まあ、開発ツールが無料なので、年間1万円くらいなら全然OKです。
とりあえず適当なテスト用アプリを作って、実機で動作させるところまではできました。手順はいろいろと面倒だけど、できてしまえばあっけないですね。実際のテスト作業はiPhoneではなく、主にiPod touchでやろうと思っています。
2009年10月14日
WeblocToURLのSnow Leopardでの動作について その2
9日の日記のその後です。あれから暇を見つけては調べているのですが、まだ原因が分かりません。分からないというか、これはOS側の問題で私のプログラムのせいじゃないのではないかという思いが日に日に強まっています(^^;)
根拠もなくそう言っているわけではありません。実は、同じような現象が出るアプリケーションが、他にもたくさんあるのです。例えばバイナリエディタのHexEditや、テキストエディタのmi、KEdit等で試しても、やはりブラウザで開かれてしまいます。.webloc以外のファイルは正常に開けるので、Finderがイベントを横取りしてしまっているのかもしれません。
また、おかしくなるのはFinder上のアイコンにドラッグ&ドロップした場合(コンテクストメニュー含む)で、Dock上のアイコンにドラッグ&ドロップした場合は問題ありません。したがってWeblocToURLの場合も、アイコンをDockに登録しておいて、そこにドラッグ&ドロップすれば、正常に使用できます。
もしFinderの問題だとすれば、こちらで対処するのはかなり難しくなりますが、明らかにおかしな動作なので、今後OSのバージョンアップで修正される可能性はあるかもしれません。
ちなみに、発生条件として1つ面白いことに気づきました。ブラウザで.weblocファイルを作成すると、そのファイルには'drag'リソース(128番)が含まれています。これをリソースエディタで削除すると、なんと正常に開けるようになるのです。このリソースが何らかの影響を与えているのかもしれません。これって何のためのリソースなんですかね?
2009年10月 9日
WeblocToURLのSnow Leopardでの動作について
拙作WeblocToURLのMac OS X 10.6 Snow Leopard上での動作に問題があるようです。.weblocファイルをWeblocToURLのアイコンにドラッグ&ドロップ(またはコンテクストメニュー経由で実行)しても正常に動作せず、.weblocファイルが割り当てられたアプリ(普通はSafariなどブラウザ)で開かれてしまうという現象です。(オープンダイアログから開けばOK)
まだ原因は分からないのですが、ざっと調べてみたところ、WeblocToURLが起動された後FinderからAppleEventが送られてきていないか、WeblocToURLが正常に受け取れていないようです。アプリは起動されるのですが、kAEOpenApplicationもkAEOpenDocumentsも受け取れないので、WeblocToURLは起動したままアイドル状態になってしまいます。
先日のScrubDelete Xの不具合もそうでしたが、10.6はCarbonアプリの互換性がだいぶ失われてきているようですね。たぶん、私のプログラムに何か古いやり方をしている部分があって、それが問題になっているのではないかと思いますが、こんな小さなアプリはさっさとCocoaで作り直したほうが早いかもしれませんね(^^;)
なお、ユーザーさんからの報告によるとSafari 4をインストールした10.5でも発生しているようです。私のほうでは未確認ですが、OSではなくSafariがバージョン4になったことによって発生する問題なのかもしれません。
関連リンク
・WeblocToURLのSnow Leopardでの動作について その2 (2009年10月14日)
2009年9月30日
詳解 Objective-C 2.0
本格的にiPhone向けアプリケーションの開発をやることになったので、Objective-Cの本を購入しました。定番(たぶん)の「詳解 Objective-C 2.0」です。実は買ったのはだいぶ前なのですが、まだ全く読んでいません(^^;) ざっと読んで、あとはリファレンスとして使っていきたいと思っています。
ついでにiPhone本も1冊買いました。以前購入した本が思ったよりあっさりしていたので、今度は「基礎からのiPhone SDK」というのを買ってみました。例によってネットで選んだので内容はまだ分かりませんが、少し読んでみた限り、ひととおり網羅してそうです。
それにしても、いつのまにかiPhone開発の本がやたらと増えましたね。Amazonで買ったら、おすすめ商品にたくさん追加されてしまいました(^^;)
2009年9月28日
Xcode 3.2と古いMac OS X SDK
メインマシンをMac OS X 10.6 Snow Leopardにした際に、最新のiPhone SDKとXcode 3.2をインストールしました。しかし、例によってそのパッケージにはMac OS X 10.3以前のSDKが含まれていませんでした。私が仕事で開発しているプロダクトの多くはまだ10.3を動作保証しているので、メインマシンでビルドできないと何かと面倒です。
ネットで調べたところ、手動でインストールすれば使えることが分かりました。日本語の情報があまりなかったので、メモがわりにざっと書いておきたいと思います。試行錯誤したせいで細かい手順は忘れてしまいましたが、ポイントは以下の3点だと思います。
- MacOSX10.2.8.sdkとMacOSX10.3.9.sdkは古い環境からコピーするか、古いXcodeのパッケージから再インストールする
- GCC 3.3を古いパッケージから再インストールする(必ず起動ボリュームのルートへ)
- 古い環境から"/Developer/Library/Xcode/Plug-ins/GCC 3.3.xcplugin"をコピーする
更にMacOSX10.2.8.sdkは、以前Xcode 3をインストールした時に書いた対応も必要だと思います。今回は古い環境からそのままコピーしてきたので、これは対応済みでした。
なお、MacOSX10.2.8.sdkとMacOSX10.3.9.sdkはGCC 4.0では正常にコンパイルできませんでした。エラーが出ます。以前は(少なくともMacOSX10.3.9.sdkは)4.0でコンパイルできたのですが、Intelマシンだからですかね。まあ、3.3でも問題ないので、そちらを使うことにしました。
また、GCC 3.3でコンパイルしても、1つだけ以下のような警告が残りました。無視しても良さそうですが、消せるようなら消したいですね。まだ追求していません。
ちなみに、CodeWarrior 9.0とResorcererもMac OS X 10.6でちゃんと動作しました。うちにはまだまだMac OS 9をサポートしているプロダクトもありますから、これも大事です(^^;)
2009年6月29日
MacOSX10.3.9.sdkの動作環境
以前、仕事で作ったアプリケーションが、一部のMac OS X 10.3環境で起動しないという連絡があり調査したところ、今まで知らなかった事実が分かりました。そのOSは10.3.2だったのですが、どうやらそのバージョンでは、XcodeのMacOSX10.3.9.sdkを使用して作成したアプリは起動しないようです。
まあ、SDKの名前にちゃんと10.3.9と入っているわけですから、それより古いバージョンで動かないのは当たり前だと言われても仕方ありませんが、まさか起動すらしないとは思いませんでした。どうやらlibgcc_s.1.dylibというファイルが存在しないのが原因のようです。細かいバージョンアップでも意外と大きな変更があるんですね。
具体的にどのバージョンから動くのかは確認していませんが、テストにも限界がありますし、今後は動作環境には10.3.9、10.4.11、10.5以降
みたいに、ちゃんとそれぞれの最終バージョンを書いて対応するしかないですね。
ネットに繋がっていないコンピュータは、ソフトウェアアップデートを行うのが面倒なので、ユーザー側にはこういった古い環境が意外と残っているのかもしれません。特に、特定の業務のみで使っているマシンには多いでしょうね。どこまでサポートすべきか、なかなか難しいところです。
2009年4月13日
iPhone SDK プログラミングガイド
「iPhone SDK プログラミングガイド」という本を買いました。iPhoneのプログラミング本は以前から何か買おうと思っていたのですが、在庫がなかったりしてなかなか機会がありませんでした。今日たまたま本屋でこの本を見つけて衝動買いです。どうやら先月末に出たばかりの本みたいですね。
まあ正直、iPhone開発へのモチベーションは低いままなので、こういうのを読めば少しはやる気になるかもしれないという期待もありました。あとは、メインマシン(Power Mac G5)で開発できないのもネックなのかなぁ。
2009年1月18日
WeblocToURL 機能追加 その後
4日の日記のその後です。あれから少しずつ開発を進めていますが、とりあえず逆変換と、元ファイルを残す機能は実装できました。あとは設定画面を作るだけです。
なお、前回予告した内容に加えて、もう1点設定項目を追加することにしました。WeblocファイルからURLファイルに変換するときに、元ファイルにあるリソースデータ(Mac特有のデータ)を残すかどうか選択できるようにします。
以前は元ファイルを上書きで変換していたので、これらのデータも残りましたが、これがあるとファイルをWindowsに移動した際に余計なファイル(元がSample.urlだったら._Sample.urlという名前のファイル)ができてしまうのです。これはWindowsではまったく不要なファイルなので、以前のバージョンからそうしておくべきだったかもしれません。
2009年1月 4日
WeblocToURL 機能追加を検討
拙作フリーウェア WeblocToURLの機能追加を検討しています。ユーザーの方から要望のコメントをいただいて、やる気になりました(^^;) 以前いただいた別の要望も長いこと放置したままですしね。
具体的には、以下の機能を追加する予定です。
- URLファイルからWeblocファイルへ逆変換できるようにする
- 設定画面を作って、ファイルを新規に作成するか上書きで変換するかを選択できるようにする
仕様で1つ悩んでいるのは、設定画面をどうやって出すか。このアプリは起動したときにファイルオープンダイアログを出すようにしてしまったので、Commandキーか何かを押した状態で起動した場合のみ設定画面を出すようにしようかと考えています。
フリーウェアに関しては最近なかなかモチベーションが維持できず、やると言っておいてやらないことが少なくないですが、今回はやります。まあ、たいした追加機能じゃないんですけどね(^^;)
関連リンク
・WeblocToURL 機能追加 その後 (2009年01月18日)
2008年12月20日
ビデオ管理データベース
私は録画したテレビ番組をDVD-Rに焼いて、それをCD/DVD用のファイルに入れて保管しています。48枚入るファイルが既に15冊目になっていて、いい加減、目的のディスクを探すのが大変になってきたので、それを管理するデータベースを作ってみました。
私は仕事でよく4Dを使うので(知ってる人いるかな?(^^;) )最初はそれでやろうと思ったのですが、勉強がてらMySQL+PHPでWebデータベースを作ってみました。せっかくサーバにMySQLがあるんだし、何より色んなマシン(ケータイとか)からアクセスできたほうが便利ですからね。
実はだいぶ前から少しずつ作っていたのですが、やっと満足いくレベルのものが完成しました。
こういったWebアプリを作るのは今回が初めての経験ですが、色々と思うところがありました。
まず、動作速度は思ったより快適ですね。Web上にはやたらと重いサービスが多いけど、ユーザーが1人しかいなければ、これだけ軽いのかと、ちょっと目から鱗でした。HTMLベースのGUIも(最近のPCは速いので)特に不満は感じません。これが無料なんだから、もはやスタンドアローンのPC用データベースアプリケーションに未来はないですね・・・。
逆に操作性で劣っていると感じたのは、キーボードショートカットです。Webページでショートカットを実現するJavaScriptのライブラリなども使ってみたのですが、主要なショートカットキーはブラウザ側にかなり使われてしまっているので、標準的なものがなかなか設定できません。例えば、新規ボタンにはCmd+N(WindowsならCtrl+N)を設定したいのですが、できないんですよね〜。
PHPでの開発はかなり快適でした。作っていて楽しかったです。ただ、言語としてのPHPは良いけど、HTMLを出力してGUIを作り上げる作業は、やはり大変ですね。ミスをしないように自分なりにクラスライブラリを作って色々と工夫したのですが、大規模なものを作るのは大変そうです。機会があれば、既存のクラスライブラリやフレームワーク等も試してみたいですね。よく知らないのですが、何か定番と言えるようなものがあるのでしょうか?
ま、とりあえず一通りPHPは学べたので、良い経験となりました。これなら仕事でも使えるかな(^^;)
関連リンク
・ビデオ管理データベース 再び (2010年03月01日)
2008年10月 8日
簡単インストーラ
先日、簡単インストーラというWindowsの無料のインストーラー作成ソフトを使う機会がありました。これ、よくできてますね。けっこう高機能なのに分かりやすいし、できあがったインストーラーもスタンダードなデザインで、かなり気に入りました。
普段は定番のInstallShield (Express Edition)をよく使っているのですが、最近このソフトは複雑になってしまって重いのが不満です。起動に何十秒もかかるし、ビルドも遅いです。開発効率は簡単インストーラのほうがずっと上ですね。機能的にも特に足りないと思えるものはないし、今後はこっちをメインにしても良いかもしれません。
たた、インストーラーのウィンドウの左下に「簡単インストーラ」という日本語の名前が出るのは、市販ソフトだとちょっと恥ずかしいような気もします。英語とかの、もっと無機質な名前だったら良かったんですけどね(^^;)
2008年9月21日
デザインパターン
久々に技術書を買いました。「オブジェクト指向における再利用のためのデザインパターン(改訂版)」です。普段は訳本は避けているんですが、これは古いけど有名な本で、以前から読みたいなと(読んでおかなくちゃいけないかなと)思っていました。でも5千円という値段にずっと躊躇していたんですよね(^^;) まだペラペラとめくってみただけですが、少しずつ読んでいきたいと思います。
考えてみると、昔はこのくらいの値段の本は平気で買ったよなぁ。今のほうが経済的には余裕があるはずなのに、なぜ高い本が買えなくなってしまったのでしょう(^^;) ネットのせいかな。
2008年9月20日
原始プログラム
例の中国のソースコード要求問題で、新聞等は相変わらずソースコードのことをプログラムの設計図などと説明しています。確かに素人には分かりにくい概念なので仕方がないのかもしれませんが、これってソースコードの価値が不当に低く印象づけられてしまう、悪い説明ですよね。ソフトウェアにとってソースコードは設計図なんて軽いものじゃなく、場合によってはソフトウェアそのものだし、少なくとも設計図+熟練工+材料くらいの価値はあるでしょう。(あと必要なのは道具)
それはさておき、この件で色々とネットを眺めていたところ「原始プログラム」という言葉に辿り着きました。どうやらソースコードの和訳らしく、検索してみると意外と使われているようです。でも私はこんな言葉、初めて聞きました。もしかして常識?(^^;) 学校で習ったりするのかな・・・。
確かに"原始"って単語のニュアンスは"ソース"に近いような気はするし、設計図なんて説明よりは良いと思いますが、なんだか馴染めないなぁ。
2008年8月 4日
Cocoa 勉強中
Mac OS 7時代からMac用アプリの開発をしてきた私は、当然Mac OS XになってからもCocoaではなくCarbonを利用してきました。Macの仕事は、特定分野向けのパッケージソフト開発が主で、いまだにMac OS 9をサポートしているプロダクトもあるため、まだまだCocoaという選択肢はありません。しかし(Cocoaでしか開発できない)iPhoneの存在もあるし、将来を見据えてCocoaの勉強を始めてみることにました。
まあ、以前も本を読んだりしたことはあったので全くの入門というわけではないのですが、やはり実際にある程度の規模のものを作ってみないと本当の意味での習得は難しいんですよね。というか、すぐに忘れてしまいます(^^;) とりあえず、今までに作った何かをCocoaで書き直してみようかと思っています。
それにしても、Cocoaでの開発はInterface Builderが難解ですね。本が古いせいもあって、Xcode 3のIBの使い方がさっぱり分かりません(^^;) 3.1ではまた変わってるみたいだし、新しい本を買うのも微妙な時期ですよね。ま、腰を据えてじっくりやっていきたいと思います。
2008年7月21日
App Storeでの配布は敷居が高い?
App StoreでiPhone/iPod touch用ソフトウェアを配布するための情報収集をしてみました。ざっと調べただけなので詳細は分かっていないのですが、思ったより敷居が高いようですね。世界中に販売するという前提なので、色んなところに英語の書類を提出して手続きをしないといけないそうです。お金もそれなりにかかるらしい・・・。
仕事なら頑張ってやるけど、個人が「自分で使うためにちょっと便利なものを作ったので他のみんなにも使って欲しい」みたいなフリーウェア的なノリでやるのは難しいですね。暇もないので、当分断念することにしました。
まあ、まだ何も作り始めていないどころか、たいしたアイデアもないので構わないと言えば構わないんですが、正直もうモチベーション落ちまくりです(^^;)
2008年7月 9日
Visual Studio 2008 その後
4/21の日記のその後です。買ったことだけ書いて使い勝手にはほとんど触れていませんでしたが、この3ヶ月弱、かなりの時間を共にしていました。一段落したので軽く感想です。主にVisual C++ 6.0との比較になります(^^;)
まず、エディタが高機能になりましたね。さすがに10年近い世代差を感じます。特に、マウスを近づけるだけで変数や関数の定義などが表示される機能が良いですね。いちいちヘッダファイルを見なくて済みます。これは作業効率アップに貢献してるかもしれません。
タブエディタも便利ですが、開いているファイルの位置がコロコロ変わってしまうのはどんなもんでしょう。開いた順、またはアルファベット順とかに固定できないのかな。あとは、同名のソースファイルとヘッダファイルが常に対になってくれると便利なんですが、それもできないのかな。この辺りはまだちゃんと調べてないので、あとで追求してみたいと思います。
リソースエディタはもう時代じゃないのか、思ったより進化していませんね。ダイアログのプロパティの設定とか、以前より使いづらいかも。ただ、マニフェストが自動的に作られるようになったのは便利ですね。以前はテキストエディタで編集していたので、雲泥の差です(^^;)
以前より不満な点もないわけではありません。まず、新しい(?)Document Explorerがめちゃめちゃ使いづらいです。APIやフレームワークのクラスの内容とかを調べられればそれで良いのに、やたらと色んな情報がヒットして、そのくせ肝心の情報がなかなか出てこない!(笑) 最初は我慢して使ってたけど、使うのやめてしまいました。Webブラウザでの検索のほうが早いんだもん(^^;)
また、安定性は全体的に高いのですが、たまにビルド時に落ちることがあります。起動して最初の1回目に発生することが多いのですが、見てると、リンク時に呼び出してる何らかのプロセスが落ちているようです。まあ、IDEは落ちないしリンクだけなので再実行すればすぐなんですが、ちょっと気になります。
あと、ケチってStandard Editionにしたのは少し後悔してます。まさかあの後すぐにWindows Mobile機を買うことになるとは思っていなかったので、開発できないのが(本当にできないのかな?) 残念です。無理してProfessional Editionにしとくんだった!(^^;)
2008年6月16日
Pocket詳解 Perl/CGI辞典
今更ですが、Perlの本を1冊買いました。先日のケータイサイトCGIのカスタマイズで久々にPerlをいじっていて、せめてリファレンス本くらい持っていても良いかなと思ったのです(^^;)
近所の本屋に行ってみたら、PHPの本はたくさんあるのにPerlの本はほとんどありません。その中から比較的新しそうな「Pocket詳解 Perl/CGI辞典」にしました。内容はまだざっとしか見ていませんが、全てをここから得ようと思っているわけではないので、とりあえずこれでOKです。
2008年4月21日
Visual Studio 2008 Standard Edition
15日の日記のその後です。結局Standard Editionを買いました。やはりProfessional Editionとの金額差4万円は小さくないという結論に達しました。そんな余裕があるなら、新しいアルミ製のPCケースとか欲しいです(笑)
とりあえず様子見でMacBookのWindows XP環境に入れてみましたが、アップグレード版でも特に何のチェックもなくインストールできました。デフォルト設定のままインストールしたらかなり時間がかかったけど、最近のPCはHDD容量に余裕があるので悩むより入れておいたほうが早いですね。
考えてみれば、Visual C++ではなくVisual Studioを買うのは初めてです。BasicとかC#とかSQL Serverとか必要ないんですけどね。ま、C#は将来やる可能性もあるかな。
まだほとんどいじっていませんが、6.0に比べて特にIDEが重いとかいうこともなく好印象です。
関連リンク
・Visual Studio 2008 その後 (2008年07月09日)
2008年4月15日
Visual Studio 2008へのアップグレードを検討中
今度、久々にWindowsアプリの新規開発を行うことになったので、この機会にVisual Studioをバージョンアップしようと考えています。いま持っているのはVisual C++ 6.0なので、たぶん7年ぶりくらいかな? 凄い久しぶりです。6.0で十分だったというのもありますが、.NETになって、なんかイメージ的にバージョンアップしづらかったんですよね(^^;)
Visual Studio 2008には無料のExpress Editionもありますが、これにはMFCやリソースエディタが含まれていないので、有償版を買うつもりです。.NET Frameworkが主流となりつつある昨今ですが、旧来のネイティブアプリ開発に必要なこれらのツールも、まだまだ改良が続けられているそうです。MFCはともかく、6.0付属のリソースエディタにはかなり古さを感じていたので嬉しいですね。
ちなみにVisual C++ 6.0は残念ながらVisual Studio 2008へのアップグレード対象外製品です。しかし、1つ前のVisual Studio 2005 Express Editionからのアップグレードが可能だそうなので、その手を使おうと思っています。無償版からのアップグレードっていうのは凄いですよね。私はVisual C++ 2005 Express Editionを入れていたことがあるし、ダウンロードしたインストーラーもCDに焼いて残してあるので、アップグレード版を買っても構わないんですよね?
ちなみにEditionもStandardとProfessional、どちらにするか悩んでいます。今回の開発にはStandardで十分なんですが、Professionalには1つだけ将来に向けて興味を引く機能があります。Windows Mobile向けの開発が行えるのです。もちろん、ハードウェアは持っていないし買う予定もないのですが、開発には興味があるんですよね(^^;) 値段差が結構あるので、ちょっと悩んでいます。
関連リンク
・Visual Studio 2008 Standard Edition (2008年04月21日)
2008年3月 7日
iPhone SDK
1週間ほど予定をオーバーしましたが、iPhone/iPod touchのSDK(ソフトウェア開発キット)が公開されました。早速ダウンロードしましたが、まだベータ版で正式版は6月ということです。
内容はまだなんとも言えませんが、残念なのはIntel Macでしか動作しないことでしょうか。うちのメインマシンはG5なんですよね。更に正式版は有料になるそうで、MacやWindowsのアプリを作るような手軽さはありませんね。現状では仕事に繋げられる目処なんてないし、年間99ドルを払う価値があるかどうかは、6月までに考えたいと思います。
とりあえずMacBookにインストールしてみましたが(HDDを大容量化しておいて大正解!)これってiPhoneのSDKというより、Xcode 3.1(Beta)そのものですね。どうりでデカイはずだ(^^;) 新規プロジェクトをビルドしてエミュレーターで動作するところまで確認しました。一覧とかツールバーとか、プログラムだけで簡単に作れるんですね。
ドキュメントも入っているようなことが書いてあったけど見当たらないので、この先にはまだ進めません。Webでしか見られないのかな。今日はまだ激重なので、また今度。
2008年2月16日
フルスクラッチによるグラフィックスプログラミング入門
近所の本屋のPC書籍コーナーを眺めていたら「フルスクラッチによるグラフィックスプログラミング入門」という本が目に止まりました。パラパラとめくってみたら面白そうだったので衝動的に購入してみました。ちょっと高かったけどね。
まだほとんど読んでいませんが、Windowsではあまり画像処理をやったことがなかったので勉強になりそうです。
2008年2月14日
LeopardとNavCustomAskSaveChanges()
Mac OS X 10.5になって、Carbon APIのNavCustomAskSaveChanges()が正常に動作しなくなったようです。ファイル保存時に「保存」、「キャンセル」、「保存しない」の3ボタンのアラートを表示するAPIのカスタムバージョンですが、カスタムじゃないNavAskSaveChanges()相当の動作になってしまいます。まあ、以前から推奨されていない古いAPIですし、最新のドキュメントにもDeprecated in Mac OS X v10.5
と書いてあるので仕方ないんですけどね(^^;)
でも、Custom〜のほうには新しいやり方であるNavCreate〜系の代替APIがないですよね? NavCreateAskSaveChangesDialog()はあるけどNavCreateCustomAskSaveChangesDialog()とかいうのはありません。同じ見た目のものを作る方法はあるのでしょうか。まあ、NavCreateAskSaveChangesDialog()でもサブのメッセージは自由に出せるので今回はそれで代用しましたが、ちょっと残念です。
見た目だけならCreateStandardAlert()で作り込むという手もあるんですが、こっちだとCommand+Dで「保存しない」を押せなくなるんですよね。個人的にはこのショートカットは手クセになっているので、やはり使い勝手を取りたいです。
2007年11月11日
Mighty Mouse Back and Forward 1.0PR2
Mighty Mouse Back and Forward 1.0PR2をリリースしました。前バージョンの1.0PR1には、JISキーボードでは動作しないという致命的な問題があることが分かりました。私はUSキーボードしか持っていなかったので、ユーザーさんからのご指摘で初めて気づきました。
リリースしてから約8ヶ月、おそらくダウンロードしてくださったほとんどの方の環境で動かなかったのではないかと思います。気づかなかったとはいえ、ちょっとショックです。恥ずかしい(^^;)
2007年10月31日
Mac OS X 10.5 と開発環境
Mac OS X 10.5が届いて数日、メインマシンはいまだ10.4ですが、そろそろアップグレードしようと思って、仕事でどうしても必要な開発ツールの互換性の確認をしてみました。
まずXcode。従来のXcode 2.xは10.5では全く動作しないようなので(10.4からアップグレードした環境だからかな?)10.5に付属のXcode 3をインストールしました。アップル純正だから問題ないだろうと思っていましたが、1つ小さな問題がありました。MacOSX10.2.8.sdkがサポートされなくなったのです。現実的にはもう必要ないのかもしれませんが、過去のプロジェクトがそのままビルドできないのは不便です。Xcode 2.xのMacOSX10.2.8.sdkをコピーしてみたところビルドできるようになりましたが、以下のような警告が出ました。
意味はさっぱり分かりませんが、Xcode 3のMacOSX10.3.9.sdkに含まれているcrt1.oに置き換えてみたところ、出なくなりました。ビルドされたバイナリも、とりあえず10.4や10.5では問題なく動いているようです。あとで古いOSでも試してみたいです。
Xcode以外の開発ツールでは、CodeWarrior 9も問題なくビルドが行えました。Mac OS X用のプロジェクトは全てXcodeに移行済なので、CWはMac OS 9用のバイナリを作るためだけに残してあります。ソースはXと共用なのでビルドさえできれば問題ありません。
Resorcerer 2.4.1も問題ありませんでした。リソースベースのアプリはまだ開発を継続しているものが残っているので、いつまで動作してくれるか毎回ヒヤヒヤです(^^;) もうバージョンアップは期待できないしねぇ。
2007年10月18日
iPhone/iPod touchのアプリ開発が可能に
iPhoneやiPod touchはOSにMac OS Xを採用していながら、今までユーザーが自由にアプリケーションを開発したりインストールすることができませんでした。しかし、これがようやく実現に向かいそうです。来年の2月に開発用のSDKがリリースされることが正式に発表されました。嬉しいですね。これで可能性は無限大です(^^;)
ただ、気になることもないわけではありません。報道によると、アップルとしてはやはりセキュリティ面を心配しているようで、インストールできるアプリにはデジタル署名などの仕組みを搭載する模様です。このへんのことには疎いのでどういうものになるのか全く分かりませんが、ぜひ私のような個人開発者が気軽に開発を始められるような形にして欲しいですね。お金さえかからなければ、多少面倒な手続きがあっても良いから(^^;) 期待しています。
2007年7月 9日
PSP Movie Utility やっぱり開発継続?
4/1の日記のその後です。開発終了を宣言した拙作PSP Movie Utilityですが、その決定は撤回して、少し方針を考え直すことにしました(^^;)
実はPSPファームウェア2.8が出る前の仕様であるMP_ROOTフォルダの仕組みは(PSP Movie Utilityはこれを前提に動いている)メモリースティックビデオフォーマットといって、PSP以外でも使われているそうなのです。例えばソニーが出しているmyloなどがそうです。PSP Movie Utilityをmyloで使っているというユーザーさんからコメントをいただいて初めて知りました(^^;)
もともと開発終了を決めたのは存在価値がなくなったからというのが理由なので、こういう使い回しができるなら、しばらく継続してみようかなと思った次第です。
それと、もう1つ理由があります。私自身、もうPSP Movie Utilityは使わず、手動でVIDEOフォルダ(ファームウェア2.8以降の新しい仕組み)にコピーしているのですが、手動でコピーすると、たまにファイルのリソースフォークが別ファイルとしてコピーされて、PSP側に異常なファイルとしてリストされてしまうことがあるのです。例えば、Finderでラベルを付けたりするとなるはずです。こういうのに気を遣うのが意外と面倒なので、VIDEOフォルダの場合もPSP Movie Utilityみたいなソフトで転送したほうが良いのかなと思い始めています。更に、簡単なファイル管理機能も作ってしまおう等と野望が膨らんできています(^^;)
まあ、実際にどこまでやるかはまだ結論を出していませんが、しばらく考えてみたいと思います。
2007年7月 4日
プラグインでいろんな処理ができるソフト
コンピューターを使って仕事をしていると、複数のファイルに対して何らかの一括処理を行いたいことがよくあります。例えば私もWeblocToURLというフリーウェアを出してるし、クラシックMac OS時代には改行コードの変換や、ファイル名を大文字にするソフトなども作りました。
こうやってドラッグ&ドロップ一発で変換するようなツールは、目的に合ったものが見つかるとかなり便利なのですが、どうしても汎用的なものしかありません。私も自分しか使わないようなものは諦めて1から作るのですが、ドラッグ&ドロップを受け付けるようなアプリは、意外と作るのが面倒なんですよね。コマンドラインツールを作るようなわけにはいきません。
そこで、例えば実際に処理をする部分はプラグインにして、それ以外の部分はエンジンアプリのような形になっている、つまりプラグインだけ作れば済むような、そういうソフトってないですかね?(^^;)
ざっと探してみた限りでは、Windowsのリネームソフトに、プラグインを使って機能を拡張できるものがありましたが、Macには見つけられませんでした。リネームだけじゃ不十分だし、私の場合、圧倒的にMacでの作業が多いので、どうしてもMac版が欲しい。ないとなれば自分で作るしかないかな。面白そうではありますが、時間はかかりそう(^^;)
2007年4月 2日
はじめての動画処理プログラミング
「はじめての動画処理プログラミング Win32APIとDirectXで実装する動画処理の基礎」という本を買いました。仕事で動画関連のプログラミングをする機会は今までなかったし、たぶん今後もないような気がしますが、個人的に興味があったので買ってみました。
ちょっとだけ読みましたが、最初のほうはWindowsプログラミングについての説明で、まだ本題に入っていません。全体的にちょっと文章が読みづらいような気がしますが、まあ、技術書にはありがちなレベルです。こういうのは気合いで読み進めればなんとかなります(^^;) 薄い本なので割と早く読み終わるでしょう。
2007年4月 1日
PSP Movie Utility 開発終了
3/28の日記および3/1の日記の追記部分で書いた件のその後です。拙作PSP Movie Utilityについて今後の方針を決めました。エイプリルフールですが、以下は嘘ではありません(笑)
改めて経緯を書いておきますが、まず昨年夏にリリースされたPSPファームウェア2.8で、それまでの仕組みより便利なVIDEOフォルダの機能が搭載され、そして先日リリースされた3.3でサムネイル画像にも対応したことによって、PSP Movie Utilityの存在意義はほとんどなくなってしまいました。私自身も既にこのアプリの使用はやめており、手動でVIDEOフォルダにコピーするようになっています。そこで、PSP Movie Utilityは次のバージョン1.1(1.0に若干の機能追加と不具合修正をしたもの)をリリースして、それで開発終了としたいと思います。
なお、唯一残った存在意義であるサムネイル画像の作成機能は、それ専用のアプリを別に作ってリリースしたいと思っています。名前はPSP Thumbnail Makerで、既に開発を始めました。これは私も使う予定なので、たぶん早い時期に完成させると思います。
いま思えば、PSP Movie Utilityをリリースしたのがちょうど1年ほど前でした。短い命でしたねぇ(^^;)
関連リンク
・PSP Movie Utility やっぱり開発継続? (2007年07月09日)
2007年3月24日
マルチコアCPUのための並列プログラミング 読了
2/20の日記で書いた本を読み終わりました。途中、忙しくて中断したりもしましたが、知っている内容も多かったので最後までサクサク読めました。実際に試したりはしていないので、あとでやってみたいと思います。実は、高速化したい画像処理プログラムがあるのです(^^;)
また、前回はMac OS X向けのソースがなくて残念みたいなことを書きましたが、考えてみればMac OS XではPOSIXスレッドが使えるので(というかそっちがメイン?)この本のLinux向けのソースはMacでもほとんど通用するはずですね。
ちなみに、個人的にはまだPOSIXスレッドを使ったことがありません。Mac OS 7.5で採用された古のスレッドマネージャーをいまだに使っています。スレッドマネージャーはMac OS Xで使うと全てコオペレーティブなスレッドになってしまうので、将来プリエンプティブなスレッドが必要なときはPOSIXスレッドを使うことになるはずですが、実際にはあまり機会がありません。コオペレーティブで十分だし、排他制御も楽ですからね(^^;) ただ、マルチCPU(マルチコアCPU)での高速化を狙うなら、コオペレーティブじゃだめかもしれませんね。これも実際に試して確認してみたいです。
2007年3月20日
.plistファイルってバイナリだっけ?
Mac OS XでOSやアプリケーションの設定などを記録するプロパティリスト(.plist)ファイルって、以前はXMLだったのに、いつの間にかバイナリファイルになっていますね。Xcodeがインストールされた環境にはProperty List Editorが入っていて、いつもそれで開いていたので今まで気づきませんでした。調べてみると10.4からみたいですね。そんな前からだったのか(^^;)
これって何で変更したんですかね。テキストファイルのほうが客先でデバッグするときとか便利なのに。これからはUSBメモリにProperty List Editorを入れて持ち歩くようにしないといけませんね(笑)
2007年3月13日
Mighty Mouse Back and Forward
1/14の日記で書いたプログラムをリリースしました。自分用のカスタマイズ機能は外して「戻る」「進む」のみ行える汎用版としました。もう長いこと使っていますが、カーソルの位置で「戻る」と「進む」が使い分けられるというのは慣れると非常に便利です。
プログラムもドキュメントもかなり前からできていたのですが、アイコンが描けずになかなかリリースできませんでした(^^;) 仕方ないので暫定アイコンのまま、PR版として出すことにしました。ベータ版でも良かったんですが、ベータというと未完成で不安定な印象があるため避けました。プログラムの動作については問題ない(問題が出るほど複雑なシロモノじゃない(^^;) )と思います。
それにしてもMac OS Xになってアイコンはいつも苦労しますね。128x128のフルカラーなんて、素人の手には余ります。誰か描いてくださいとここで募集する手もあるんですが、それをやっちゃうと、もし私がその絵を気に入らなかったとき非常に断りづらいという問題があるんですよね。ご厚意で描いてくださったものに「気に入らないので使いません」とはなかなか言えませんからね(^^;)
2007年3月 1日
PSP Movie Utility 1.0の転送エラーについて
昨年3/29の日記へのコメントで、何人かのユーザーさんから、PSP Movie Utilityで正常にコピーができないという質問がありました。今までは私の環境で全く再現せず原因が分からなかったのですが、先日、あるユーザーさんにご協力いただいて調べたところ、原因をつきとめることができました。少し混み入った話になるので、ここにまとめて書いておきたいと思います。
結論から言うと、ムービーファイルの形式によってコピーできないものがあるようです。そのユーザーさんはムービーのエンコードにiSquintを使用されていたのですが、これはどうやら汎用の(iPod用の?)MPEGファイルを作成するソフトで(特にPSP用ということではないため)PSP Movie Utilityで正常にファイルの種類(MEPG-4かAVCか)の判別が行えず、転送に失敗していました。
種類が判別できるように修正するか、ユーザーに選択してもらうようにすれば解決と思ったのですが、調べていて意外な事実が分かりました。このソフトで作られたムービーはVIDEOフォルダでは再生可能ですが、MP_ROOTフォルダでは再生できないのです。これでは例え判別に成功したとしても意味がありません。PSP Movie Utility側でどうにかできる問題ではなくなってしまいました。
上記の内容を補足するために、少し歴史的な話を書きますが、PSPでは元々MP_ROOTというフォルダの中に、小難しいルールに基づいてムービーファイルをコピーする必要がありました。種類がMPEG-4かAVCかによってもコピー先が違うため、判別してコピーしなければなりませんでした。
PSP Movie Utility 1.0の公開後しばらくして、PSPファームウェア2.8がリリースされました。このバージョンではムービーの保存先として新たにVIDEOフォルダができました。今までのMP_ROOTフォルダとは違い、どんな種類のムービーファイルも好きな名前でコピーするだけでOKとなりました。ただ、VIDEOフォルダには1つ残念な仕様があります。サムネイルファイルに対応していないのです。
サムネイル作成機能はPSP Movie Utilityのウリの1つなので、今後どう対応していくか考えてみました。まず、PSP Movie UtilityでMPEG-4かAVCか判別できたファイルは、従来どおりMP_ROOTフォルダにコピーします。判別できなかったものについては、ユーザーに確認を出した上で、VIDEOフォルダにコピーします。
実際、VIDEOフォルダは便利ですし、再生できるムービーの種類も多いようなので、特にサムネイルが必要ないという方は、PSP Movie Utilityは使わず、手動でVIDEOフォルダにコピーすることをお勧めします。そのほうが手っ取り早いと思います。逆に、やはりサムネイルが欲しいという方は、この際ムービーファイルの作成に使用するソフトをPSP用の動画が作れるものに乗り換えてはいかがでしょうか。私は携帯動画変換ちゃんを愛用しています。
・3月28日 追記
本日、PSPファームウエア3.30がリリースされ、VIDEOフォルダもサムネイルに対応しました。PSP Movie Utilityで作られたサムネイルファイルも、拡張子を.THMから.JPGに変更することで有効になるようです。PSP Movie Utilityの今後の方針は改めて考え直したいと思っています。
関連リンク
・PSP システムソフトウェア3.30 (2007年03月28日)
・PSP Movie Utility 開発終了 (2007年04月01日)
2007年2月20日
マルチコアCPUのための並列プログラミング
「マルチコアCPUのための並列プログラミング」という本を買いました。「最近コンピューターの本を買ってないなぁ」と思いながら本屋を眺めていて、目に付いたのがこれでした。衝動買いです(^^;)
いちおう大雑把な知識はあったつもりですが、読めば得られるものも少なからずあるでしょう。うちも先日WindowsマシンがCore 2 Duoになって、普段よく使うマシンは全てマルチCPUもしくはマルチコアCPUになりました。せっかくなので、どんな処理にどれだけ効果があるのか実感してみたいですね。
ちょっとだけ読んでみましたが、かなり丁寧に説明してあって難しい本ではありません。サクサク読み進められて良いですね。ソースはWindows(Win32 API)とLinux用がそれぞれ載っています。Mac OS Xがないのが残念ですが、まあ仕方ないか(笑)
関連リンク
・マルチコアCPUのための並列プログラミング 読了 (2007年03月24日)
2007年1月14日
Mighty Mouseをちょっとだけ使いやすく
私はメインマシンのPower Mac G5ではマイクロソフトのIntelliMouse Explorerを、サブマシンのMacBookではアップルのワイヤレス Mighty Mouseを使用しています。後から買ったMight Mouseの操作感はかなり気に入っていて、G5用にもワイヤードのタイプを買おうかと思っているのですが、Mighty MouseのドライバはMSのドライバに比べると機能的に不満な点があります。特に、サイドボタンにWebブラウザの「戻る」などの操作を割り当てられないのが不便です。他は我慢できますが、これだけは慣れると手放せません。
シェアウェアの汎用マウスドライバなどを使えばそういったことも可能になるようですが、このためだけにドライバごと入れ替えるというのは少し嫌な感じがしています。そこで、現在の純正ドライバにある、サイドボタンを押したときに任意のアプリケーションを起動する機能を使って、同じことが実現できないか実験してみました。ブラウザの「戻る」はショートカットキーでも操作できるので、起動したら cmd+[ のキーストロークを送信して終了するプログラムを作れば実現できそうです。
さっそくやってみましたが、ちゃんと期待どおり動きます。最初はアプリケーションを起動する方法だとタイムラグがあってレスポンスが悪いのではないかと心配でしたが、実用上まったく問題ありません。サイドボタンを押せばすぐに「戻る」が実行されます。
面白くなってきたので、少し高機能化してみました。まず、マウスカーソルを画面の右のほうに寄せて押したときには「戻る」ではなく「進む」になるようにしてみました。これは便利! もうMSのマウスはいらないかもしれません(^^;)
更に、アプリケーション毎に別々の処理を割り当てられるようにしました。例えばMail.appでは上矢印キーを割り当てました。私はメールの一覧は新しいものが上になるようソートしているので、これで未読メールを古いほうから順々に閲覧できるようになります。例えばメーリングリストを斜め読みするときなどに重宝します。
また、Finderには cmd+F1 を割り当てました。開いているウィンドウを順々に最前面に出すショートカットです。これも便利。アイデア次第ではいろいろ便利に使えそうですね。
ただ、現状のプログラムはまだ自分で使うことしか考えていないので、設定変更などはプログラムのソースを書き換えてビルドし直さなければなりません(笑) 設定ファイルを外部に持って、GUIで設定できるような普通のアプリケーションとして仕上げるのは結構大変ですよね。ここまでのプログラムは1時間くらいで作れましたが、この先そういった設定画面を作るとなると、その何倍、もしくは何十倍もの時間がかかるかもしれません。便利なので公開したいのですが、どうしたものですかね。とりあえず「戻る」「進む」専用版を出そうかな。
関連リンク
・Mighty Mouse Back and Forward (2007年03月13日)
2007年1月 6日
プログラムからシステム環境設定を開く
ちょっと前に、自作のプログラムからシステム環境設定を開く処理を実装しました。役に立ちそうなのでメモがわりに書いておきたいと思います。なお、これはCarbon用です。Cocoaは分かりません(^^;)
まず、単純に「システム環境設定.app」を開く方法。普通にアプリケーションとしてラウンチするだけです。エラー処理などは省いてあります。
OSStatus result;
CFURLRef url;
url = CFURLCreateWithFileSystemPath( kCFAllocatorDefault,
CFSTR( "/Applications/System Preferences.app" ),
kCFURLPOSIXPathStyle, false );
result = LSOpenCFURLRef( url, NULL );
こんな感じです。試した限り、Mac OS X 10.0以降、全てのOSバージョンで動作しました。
次に、直接システム環境設定の中身のパネルを開く方法。これも同じやり方で、パネルを直接ラウンチしています。正しい方法なのかどうか分かりませんが、試した限りでは問題なさそうです。以下は“ディスプレイ”パネルを開く例です。
OSStatus result;
CFURLRef url;
long version;
result = Gestalt( gestaltSystemVersion, &version );
if( version < 0x1010 )
{
url = CFURLCreateWithFileSystemPath( kCFAllocatorDefault,
CFSTR( "/System/Library/Preferences/Displays.preference" ),
kCFURLPOSIXPathStyle, false );
}
else
{
url = CFURLCreateWithFileSystemPath( kCFAllocatorDefault,
CFSTR( "/System/Library/PreferencePanes/Displays.prefPane" ),
kCFURLPOSIXPathStyle, false );
}
result = LSOpenCFURLRef( url, NULL );
こっちはOSバージョンによって少し処理が変わります。10.1以降は同じですが、10.0.xだけはパネルの置き場所や名前が違うので、対応するなら切り分ける必要があります。パネルの名前は10.0環境を持っていないと調べられないかもしれませんね。リクエストがあれば列挙しますが、もう必要ないかな(^^;)
また、システム標準のパネル以外は他の場所に保存されている可能性もありますね。それについては割愛します。
それにしても、Mac OS 9までに比べて、こういうの作るのは楽になりましたね。
2007年1月 4日
PSP Movie Utility 急にどうした?
昨年3月にPSP Movie Utilityというフリーウェアをリリースしました。ダウンロード数はそれなりにあったのですが、実際に感想や要望ということになると、ほとんど反応がありませんでした。あまり使われていないのかなと思っていたのですが、ここ1週間ほどの短期間で複数の方から質問や要望などのコメントが付いています。これは急にどうしたことでしょう?(^^;) どこかのサイトからリンクでもされたのかと思ったのですが、リファラーを見る限りそういうわけではなさそうです。雑誌か何かに載ったりしたのでしょうか。それとも正月休みで、新しいことに挑戦する方が増えてるのかな?(^^;)
予告していた追加機能も暇を見つけては実装しているのですが、ちょっと欲張りすぎてしまって、なかなかリリースできずにいます。不具合もいくつか見つかっているので、今やってる機能は後回しにして、近いうちに次のバージョンを出そうかなとも思ってます。やはり反応が多いとやる気が出ますよね(笑)
関連リンク
・PSP Movie Utility 1.0 (2006年03月29日)
2006年10月11日
PDFで保存するプログラム
私は仕事で画像処理のプログラムを作ることが多いのですが、先日あるアプリの追加機能として「画像を複数ページのPDFとして保存することは可能か」という問い合わせを受けました。PDFを開くアプリは作ったことがあるけど、保存するほうはやったことがありません。でもきっとOS側にAPIが用意されているだろうと思って調べてみると、予想以上に簡単そうです。もちろん複数ページのPDFもOKです。これって結構、夢が広がりますよね(^^;)
実は個人的にも以前から、単ページのPDFを複数ページのPDFにまとめるソフトが欲しいなと思っていました。例えばMac OS Xでは、どんなアプリで作った文書も印刷が可能ならPDF化することができます。これは他人に資料を渡すときに凄く便利なんですが、残念ながら複数ページのPDFにはできません。(長い文書が勝手に複数ページに分けられることはある)シェアウェアならそういうツールもあるようですが、お金を払ってまで欲しいわけでもないんですよね(^^;)
単純に、ドラッグ&ドロップしたPDFを名前順にマージするだけのプログラムならGUIも必要ないし、わりとすぐに作れそうです。時間のあるときにやってみようかな。自由にページ順を指定できたらとか言い出すと大変ですけどね(^^;)
2006年10月 5日
CodeWarrior ML 閉鎖
CodeWarrior メーリングリストが閉鎖されるそうですね。一時期は単に開発環境のMLというだけでなく、Macプログラミングの話題全般を扱う場として貴重な存在でした。私は何度か投稿したことがあるくらいの、ほとんどROM(Read Only Member)・・・いや、読んですらいなかった時期もありますが、それなりにお世話になったように思います。
調べてみると、私がこのMLに参加したのは95年の11月です。いやあ、11年ですか。歳を取るわけだよなぁ(笑)
2006年8月23日
メタル調に似合うボタン
最近やっとXcodeでの開発にも慣れてきて、GUIもInterface Builderで作るようになってきたのですが、1つだけ不満があります。以前にもちょっと書きましたが、ウィンドウをメタル調にした場合、それに似合うボタンがないことです。まあ、リソースで作ったって同じなんですが、Aquaのボタンは合わないんですよね。例えばFinderやSafari、Mailなどのアップル製アプリも独自のボタンデザインになっています。こういうのが基本パーツとして欲しいですね。とはいえ、今から用意してもらっても動作環境が10.5以上とかいうんじゃ、当分は使えないけど・・・。
Cocoaならできるのかなと思ってアップル製のアプリをいくつか調べてみると、なんとボタンは1つ1つ画像で用意されています。それぞれ通常時、押したとき、非アクティブの3枚の絵が入っていました。プログラムで描画までやっているわけじゃないんですね。そういえばアプリによってデザインも違うし、統一感もありません。
こんな力業でいいならCarbonでも全然OKですが、逆に素材を用意するのが大変。絵心のない私では同じような綺麗なデザインを作るのは難しいです。マネして描こうにもコレはちょっと無理。こういうのって3D CGソフトとかで作るのでしょうか? フルカラーの巨大なアイコンもそうだけど、Mac OS Xになっていろんな面で敷居が高くなりましたね(^^;)
2006年5月31日
Classic版シェアウェアのフリーウェア化 その後
一昨年6/9の日記のその後です。あれから2年もたってしまいましたが、ついに古いCodeWarriorのCD-ROMを引っ張り出してきました(^^;) ゆきさんにいただいたコメントどおり、CodeWarrior 6.0が最後の68K対応バージョンでした。
CW6から68K関連のプラグインやライブラリをCW9(CW10は買ってない)にコピーしたところ、ちゃんとCW9のIDEでビルドすることができました。唯一、MacHeaders.hはCW6のものに差し替えましたが、他はファイルを追加するだけなので、PowerPC環境のほうへの悪影響もないと思います。まだテストしてないので68Kマシンでちゃんと動くかどうかは分かりませんが、最新のバージョンで開発できるのは嬉しいですね。
Classic版シェアウェアのフリーウェア化は本当にやろうと思っています。もう送金も全くないですしね。宣伝も必要ないので、こっそり直して、こっそり公開しようかと(^^;)
2006年3月30日
Mac OS X付属の計算機
びっくりしたのが,MacOS X標準の計算機。
いつの間にかプログラマモードがついてるのね。
10.3にはなかったのでTigerからなんかな。
私も知りませんでした(^^;) 試してみましたが、凄い便利ですね。基数変換だけでなく、文字コードを入れるとその文字まで表示できます。さすがにShift JISは無理みたいですが、Unicodeなら日本語もちゃんと出ます。2進数が常に出ているのも良いですね。なかなか痒いところに手が届く計算機じゃないでしょうか。
今まではHexCalculatorというウィジェットを使っていたのですが、使用頻度が減りそうです(^^;)
2006年3月29日
PSP Movie Utility 1.0
ここでも何度か予告していたPSPへ動画を転送するプログラム、PSP Movie Utilityを公開しました。最初はベータ版として公開するつもりだったのですが、大きな問題はなさそうなので正式版としました。不具合など見つけられたらご一報いただけると嬉しいです。アプリの名前やアイコンも仮のつもりだったのにノーアイデアでそのままです。ま、これはいつものことですが(^^;)
このバージョンで実装できなかった機能もたくさんあります。今のところ将来のバージョンで対応したいと思っているのは以下の項目です。必ず作ると断言はできませんが、気分が乗ったもの(自分が欲しい機能)からやっていきたいと思っています。
- PSPが接続されたときにPSP Movie Utilityを自動的に起動できるようにする
- ファイルリストにエイリアスファイルをドラッグ&ドロップできるようにする
- PSP側に同じタイトルのムービーが存在した場合に上書きできるようにする
- サムネイル作成時にキーストローク(矢印キーなど)でフレーム移動ができるようにする
- リストのダブルクリックで実行される処理を選択可能にする(*1)
- PSP側のファイルリストを作り削除などが行えるようにする (*2)
*1 現状でも初期設定ファイルの項目doubleClickActionを書き換えれば可能。値は、1=何もしない、2=開く、3=サムネイル作成。デフォルトは2です。この説明で理解できない方はやらないほうが安全です(^^;)
*2 個人的にはPSP側で削除するのであまり必要性を感じません。要望が多ければ・・・。
他に要望やアイデアなどあれば、ぜひコメントしてください。
ちなみに、このプログラムを作ることになった経緯は以下のリンクからたどれます。いただいたコメントまで含めると全て読むのは大変だと思いますが(^^;)
PSPで動画再生 その1 (2006年02月03日)
2006年3月 4日
WeblocToURL 1.1
WeblocToURLのバージョン1.1をリリースしました。IntelベースのMacにネイティブ対応したバージョン(Universalアプリケーション)です。機能などに変更はありません。
なお、最近のMac(10.4以降?)にはStuffIt Expanderが付属していないようなので、解凍するには事前に入手(無料です)してインストールしていただく必要があります。 今後、配布形態の変更も検討したいと思っています。Mac OS X 10.0から最新のIntelベースMacまで、どの環境でも不便がなく効率の良い配布形態ってないですかね。互換性だけ考えれば無圧縮のディスクイメージなんですが、さすがにそれは(^^;)
・2009年10月18日 追記
Stuffit形式ではなくディスクイメージ形式で配布するように変更しました。
2006年2月22日
ドラッグ&ドロップとソート順
昨日の日記でも書いたとおり、このところPSPにファイルを転送するプログラムを作っているのですが、その作業中に1つ気になることを見つけました。Finderから複数のファイルをドラッグ&ドロップで開いたときに得られるファイルリストのソート順がバラバラなのです。以前は少なくともこんなバラバラではなかったような気がするんですが、私の気のせいでしょうか?(^^;)
今回のアプリでは連番を振りながらPSPにコピーする必要がある(PSP上ではその番号順で表示される)ので、これでは問題です。自分でソートするように修正するのはたいした手間ではありませんが(実際もうやってしまった)過去に作ったアプリケーションの動作が気になります。ソート順に依存するプログラムはなかったように思いますが、ここまでバラバラなのは格好悪いですよね。OSのバージョンによって微妙に違うのかもしれませんし、時間があるときにMac OS 9くらいまでさかのぼって調べてみたいと思います。
それにしても、いま私は10.4で開発しているわけですが、これを古いOSに持って行ってテストすると、細かい問題(違い)がいっぱい出ますね。特に、メタル調のウィンドウを10.2で見たら背景が真っ白だったのにはがっかりでした(^^;) 例のアクアの縞々になるかと思ったんですが・・・。テストは必須ですね。
2006年2月14日
FSFileOperation
Mac OS XのCarbon APIを使ったプログラミングでファイルコピーなどを行う場合、アップルが提供しているMoreFilesXやFSCopyObjectなどを使うのが定番ですが、先日FSFileOperationというサンプルプログラムがあるのを見つけました。どうやらMac OS X 10.4では新しいファイル処理の(?)ルーチンが追加されていて、それを利用したもののようです。
さっそく試してみましたが、シンプルで実装しやすいし非同期コピーなども簡単に実現できます。前述の2つより使いやすいですね。ただ、残念なのはやはりMac OS X 10.4以降でしか動作しない(らしい)こと。ドキュメントがほとんどないので簡単に試した限りですが、MacOSX10.4u.sdkより古いSDKではコンパイルも通りませんでした。さすがに現時点で作るアプリケーションの動作環境が10.4以降というわけにはいかないので、しばらく熟成ですね(笑)
2006年2月12日
'STR#'リソースからLocalizable.stringsへ
Macのプログラミングでは昔から、アプリケーションの中で使用する文字列を'STR#'リソースなどに書いておいて、それを読み込んで使うのが一般的でした。この方法は今でも有効ですし、Mac OS 9以前のOSをサポートするにはまだまだ必要ですが、Mac OS Xのみの新しいプロジェクトでは、そろそろリソースは廃止したいと考えています。いや、以前から考えていたんですが、面倒でなかなかその気にならなかたっというのが本当のところです(^^;)
先日、ついに重い腰を上げてやってみました。やり方はInside Mac OS X: System Overview(←PDFです)というドキュメントに詳しく書いてありますが、覚え書きを兼ねてまとめておきたいと思います。
Mac OS Xでは、アプリケーションのパッケージ(バンドル)の中のLocalizable.stringsファイルを使うのが定石のようです。ファイルの構造も上記のドキュメントに書いてあります。Carbonアプリケーションの場合、このファイルから読み込むにはCFCopyLocalizedString()というAPIを使います。CFString関連の処理は個人的にまだ馴染めないものが多いのですが、とりあえず読み込むだけなら簡単ですね。ただ、この関数の第2引数の意味はよく分かりません。NULLにしておいて問題ないようですが、どういう用途で使うんだろう?(^^;)
また、Localizable.stringsから読み込んだ文字列はCFStringになるので、実際にその文字列を使用する部分も手直しが必要です。CFStringをPascal文字列に変換して使うのでは芸がなさすぎるので、ここもCFStringのまま使用するようにしたいものです。いちばん多いのはエラーメッセージなどのアラート表示ですが、これは従来のStandardAlert()のかわりに、CreateStandardAlert()とRunStandardAlert()のペアを使えばOKです。パラメーターなどもほとんどそのまま使えるので簡単ですね。試してはいませんが、CreateStandardSheet()というシートウィンドウタイプもあるようです。
こういう古いやり方をやっている部分は他にもまだまだあると思うので、徐々に新しいやり方を覚えていきたいですね。1/19の日記で書いた警告も減らしたいし(^^;)
2006年2月 1日
MAMP
先日、PHPを覚えようと書籍を購入したわけですが、どうせならMacでやりたいと思って情報収集していたところ、MAMPというソフトウェアを見つけました。MAMPとは“Macintosh, Apache, Mysql, PHP”の略だそうで、つまりよくあるソフトウェア集ですね。ただ、付属のツールで各ソフトをまとめて起動したり終了したりできて、これがなかなか良くできています。最近あまり見なくなった、とてもMacらしいソフトだなと感じました。気に入ったので、これでやっていきたいと思います。何かを学ぼうとしたときに意外とこういうのがモチベーションになったりしますよね(^^;)
2006年1月30日
はじめてのPHP5プログラミング 基本編
本屋でコンピュータ書籍のコーナーを眺めていたら、ふと「PHPでも覚えようかな」と思いたって、入門書を買ってきました。あまりコンピュータ書籍が多くない本屋でしたが、それでもさすがに人気の言語ですね、選択肢は5冊くらいありました。ざっと中身をチェックして「はじめてのPHP5プログラミング 基本編」という本にしました。安かったというのも決め手の1つです(^^;)
ホントはプログラミングの経験者向けの、要点だけを押さえたような本があると良かったんですが、まあ仕事じゃないので楽しみながらのんびり読もうと思っています。でも新しいものを覚えても実際に使わないと身に付かないし、忘れちゃうんですよね。使うネタを考えねば・・・。
2006年1月29日
Windows XPのビジュアルスタイル
今更ですが、こないだ初めてWindows XPのビジュアルスタイルに対応する作業をしました。ご存じのように、XPではボタンやスクロールバーなどのGUIオブジェクトのデザインがガラリと変わったわけですが、古いアプリケーションはそのままでは新しいスタイルで表示されません。最近の.NETフレームワークなどを使って開発すれば何もしなくても良いんでしょうが、私はいまだにVisual C++ 6.0で開発しているので、明示的に対応しなければなりません。
具体的には以下のページにあるとおりやればOKです。やってみると想像以上に簡単ですね。最初はXMLを書くということで、漠然と面倒な作業を想像していたのですが、内容はほとんどそのままでOKみたいです。1つ作ってしまえば何の苦労もありませんね。
また、この作業をした上で更にダイアログ上の各オブジェクトのサイズや配置などをチマチマと調整しなければならないと覚悟していたのですが、それも必要ありませんでした。(今回たまたまうまくいっただけかな?) これがMacだったら文字が欠けたり見栄えが悪くなったりするところですよね(笑) 私もMac OS 8のプラチナ調やMac OS XのAQUAなど、ルック&フィールが変わるたびに苦労してきました。Windowsのこの互換性の高さはアップルも見習って欲しいですね。
2006年1月24日
ボリュームマウント時にウィンドウを開く
ちょっと前にアップルのテクニカルQ&Aに「QA1449: Setting default open Finder window」という情報が掲載されました。CD-ROMやディスクイメージなどがマウントされたときに開かれる、デフォルトのフォルダを設定する方法です。今まで、自分で作ったものではダメなのに市販ソフトのCD-ROMなどで実現できているものがあるので疑問に思っていました。
早速、ここに載っているプログラムをそのままビルドして試してみました。確かに期待通り動くんですが、ちょっと不満な点もあります。これを設定すると、開かれるウィンドウがMac OS X 10.3以降のメタル調ではなく、10.2以前のプレーンなウィンドウになっちゃうんですよね。いちど設定すると何も開かないようには戻せないし、コマンドラインツールというのも不便なので、もう少しちゃんとしたGUIのツールが欲しいですね。誰か作ってないかな?(^^;)
そもそもこれって技術者向けの情報などではなく、一般ユーザー向けのユーティリティとしてアップルが提供してくれても良さそうなものですよね。つーか、Finderが昔(Mac OS 9以前)みたいに開いた状態を記憶してくれるのが一番なんだけど・・・。
2006年1月 9日
Universal Binaryへの対応 その2
一昨日の日記の続きです。予定どおり次の段階として、自作のアプリケーションをUniversal Binaryに対応してみました。お題はScrubDelete Xです。
前回と同じようにやってみたのですが、警告がたくさん(30個ほど)出てしまいました。ただ、エラーではなく警告ということで、ビルド自体は完了しています。動作は例によって確認できませんが、これだけたくさん出るとはちょっと予想外でした。
出た警告のほとんどは以下のような感じのものです。('???'の部分はCarbon APIのルーチン名)
調べてみると、どうやら一部の古いAPIはもうあまり使ってくれるなという意味のようです(^^;) たしかにScrubDeleteはMac OS 8時代からあるプログラムなので古いAPIもたくさん使用していますが、こんな小規模なプログラムでこれだけ警告が出るということは、大きなプログラムでは大変ですね。
ざっと見てみた限りですが、対象となるAPIは次のようなものでしょうか。
- リソースマネージャーのルーチン
- QuickDrawのルーチン
- Pascalストリング関連のルーチン
- FSSpec関連のルーチン(FSp〜)
- 低レベルのファイルマネージャのルーチン(PB〜)
いちおうまだ使えないわけではないようですが、徐々に使わないようにしたほうがいいのでしょうね。でも簡単に代替できるものと、そうでないものがあります。特にQuickDrawなんてそう簡単にはいかないように思うんですけどね。果たしていつまでサポートしてくれるのでしょう。
2006年1月 7日
Universal Binaryへの対応 その1
来週からサンフランシスコで行われるMacworld Conferense & Expoで、インテルCPUのMacが発表(発売?)されるという噂があります。以前の予定では今年の夏頃だったはずですが、もし本当なら私もそろそろ準備を始めなければなりません。いちおう情報収集はしていたのですが、実際に作ってみることにしました。
とりあえずアップルのサイトにあるUniversal Binary Programming Guidelinesというドキュメントを参考にやってみました。日本語のドキュメントがあるのは嬉しいですね。
まずはXcodeで新規プロジェクトを作ったときの雛形アプリを元にやってみました。とりあえず何の問題もないですね。もちろんインテルCPUのMacはまだないので動作確認はできませんが、問題なくビルドでき、既存のMacで動作しています。Finderの情報ウィンドウにもちゃんと「アーキテクチャ:Intel, PowerPC」と表示されています。
1つだけ面倒だったのは、古いOSバージョンに対応する部分です。Universal Binaryに対応するにはターゲットをMac OS X 10.4以降にして、コンパイラもGCC 4.0以降にしなければならないようですが、これだとMac OS X 10.2.xなどの古いバージョンで動作しません。この問題を解決するには、PPCコードとi386コードで別々に設定をする必要があるようです。
具体的にはCross-Development Programming Guideというドキュメント(こっちは英語)に説明がありますが、簡単に書いてしまえばプロジェクトに以下の6つの設定を加えることになります。
SDKROOT_ppc
SDKROOT_i386
MACOSX_DEPLOYMENT_TARGET_ppc
MACOSX_DEPLOYMENT_TARGET_i386
GCC_VERSION_ppc
GCC_VERSION_i386
分かってしまえばどうということはありませんが、最初からこういう設定をされたテンプレートも用意しておいて欲しいですね。どうもXcodeって過去のOSバージョンに対するサポートが不親切な気がするんですが、こういうところもUNIX的なのかな?
次は自作のアプリケーションをUniversal Binaryに対応してみたいと思います。
続く(予定)
関連リンク
・Universal Binaryへの対応 その2 (2006年01月09日)
2005年12月20日
MacOS Xアプリケーションのヘルプ
MacOS X用アプリケーションではヘルプメニューから、そのアプリケーション独自のヘルプを呼び出すことが可能です。先日この処理を自作のプログラムで初めて実装したのですが、1つ悩んだところがあったので書いておきたいと思います。
例によって、まずネット上の情報を検索することから始めました。情報さえあれば、これがいちばん手っ取り早いですからね(^^;) 調べてみると、ポイントはヘルプのトップページとなるHTMLファイルに適切なMETAタグをつけること、Info.plistファイルにヘルプのための項目(CFBundleHelpBookName, CFBundleHelpBookFolder)を設定することの2点ですね。
ここまでは検索してすぐに分かりました。ただ、自作のアプリケーションに実装してみると、どうしてもうまく動きません。仕方ないのでアップルのドキュメントを読んでみたところ、Carbonアプリではもう1つやらなければならないことがあるようです。
それは、アプリケーションの起動直後にAHRegisterHelpBook()を呼び出すこと。このAPIはFSRefの引数を取るので面倒そうに思いましたが、以下のページの最後にサンプルソースがありました。そのまま使えばOKです(^^;)
How to Register Your Help Book
これで無事ヘルプを呼び出せるようになりました。本当はこのヘルプシステムにはいろいろと機能があるようですが、今回はそこまで必要ないので省略です(^^;)
2005年12月17日
Visual Studio 2005 Express Edition
無償で利用できるWindowsの開発環境、Visual Studio 2005 Express Editionの日本語版が正式リリースされたのでダウンロードしてみました。私はWindowsの開発はいまだにVisual C++ 6.0を使用しているのですが、しばらく試してみてメリットが見つけられたら有償版へのアップグレードを考えてみたいと思っています。
さっそくインストールしてざっといじってみましたが、もはやデフォルトでは.NETアプリケーションしか作れないんですね。設定すればWin32アプリケーションも作れるようですが、リソースの編集などは可能なのでしょうか。近いうちに試してみたいと思います。
ちなみにこのExpress Editionの無償公開は1年間限定だそうなので、せっかくだからVisual C#やVisual Basicもダウンロードしておきました。それぞれCD-ROM1枚分近い容量になりますが、Bフレッツにしてからこういう大きなものも躊躇なくダウンロードできます(^^;)
2005年12月14日
郵便バーコード
先日、仕事で郵便バーコードについて調べる機会がありました。大量に送付する郵便物にプリントしておくと、割り引きサービスが受けられるアレです。(正しくはカスタマバーコードというらしい。) 結局すぐに開発するという話にはならなかったのですが、せっかく調べたので覚え書きとしてまとめておきたいと思います。
最初は全く予備知識がなかったのですが、このバーコード、調べてみると思ったより単純な仕様ですね。バーコードといっても、わずか21パターンの記号を並べるだけで済むようです。最初はプログラムから精度の高いグラフィック描画を行ったり、バーコードフォントか何かを使う必要があると思っていたのですが、これなら事前に全ての画像を用意しておいて、並べてプリントするだけです。
参考になったのはゆうびんホームページで配布されているサンプルプログラムです。単純ですが、よくできています。HTMLとJava Scriptで作られているので、他の言語にも簡単に移植できるはずです。画像も、このまま使ってしまうと権利上まずいでしょうが、同じものを作るのは容易だと思います。
手間がかかりそうなのは、バーコード生成の元になる文字情報を住所から抽出する部分ですね。これも郵便番号制マニュアルというところに抜き出し方法の説明があるのですが、番地などは元となる住所の記述の仕方が統一されていないと苦労しそうです。番地って人によって書き方がバラバラですし、やはり漢数字なども考慮しないとまずいですよね。壱、弐、参もか?(^^;)
2005年11月30日
WeblocToURL
11/9の日記で書いたソフトを公開しました。名付けてWeblocToURLです。そのまんまのネーミングですが単機能ツールなので良しとしましょう(^^;) WeblocConverterという案もあったんですが、そんな大げさなソフトじゃないんですよね(笑)
アイコンもかなり適当ですが、いちおうコンテクストメニューの中で見つけやすく、ドラッグ&ドロップしやすいデザインを心がけました。
2005年11月 9日
.weblocを.urlに変換するソフト
普段、インターネットを眺めていて気になった情報は、SafariのWeb インターネットロケーションファイル(拡張子.weblocのファイル)として保存しておくことが多いのですが、そのURL情報をWindowsに持っていこうとすると意外に不便です。Macで見つけた情報をWindowsで閲覧したいことって結構あるんですよね。
結局、テキストファイルにURLをコピー&ペーストするなどというローテクな方法でやっているのですが、このweblocファイルをInternet Explorerなどで開けるインターネットショートカットファイル(拡張子.url)に変換するソフトがあると便利そうです。フリーウェアであるだろうと思って探したのですが、どうも見当たりません。そこで思い切って自分で作ってみました。調べてみるとどちらのファイルも構造は至極単純で、1時間ほどで完成しました。
ドラッグ&ドロップやコンテクストメニューの「このアプリケーションで開く」で複数同時に変換できるようにしたのですが、使ってみると予想以上に便利。せっかくなのでフリーウェアとして公開しようと思っています。ただ、アイコンを描いたりマニュアルを書いたりする必要があるので、もう少し時間がかかりそうです。プログラムは1時間コースでしたが、こっちは予想できないんですよね(^^;) 特にMacOS Xになってからは、アイコンが悩みの種です。128x128ピクセルのフルカラーなんて、絵心のない人間には手に負えません。写真を使うとか、またはScrubDelete Xみたいに思いっきり単純化してしまうしかないですね。
関連リンク
・ WeblocToURL (2005年11月30日)
2005年11月 6日
CodeWarrior v10
CodeWarrior v10がリリースされたようです。3/23の日記で書いたとおり、日本語版はv8をもって開発終了となりましたが、オリジナル(英語版)も、どうやらこれが最後のバージョンとなるようです。
もうバージョンアップする意味はないのですが、値段が激安の$99なんですよね。(更に学生やホビーユーザー向けの無料バージョンもある) この値段なら最終バージョンとして買っておいてもいいかもしれませんね。少し考えたいと思います(^^;)
2005年7月26日
CodeWarriorからXcodeへ 4
昨日の件の原因が分かりました。恥ずかしながら開発環境の問題ではなくOS側の問題でした(^^;) ビルドしたアプリケーションを10.2環境へ持っていくのにUSBメモリを使っていたのですが、そこからHDDにコピーすると、なぜか一部のファイルの名前が大文字に変わってしまうようなのです。(私の環境だけかもしれません。)
問題となったのはmain.nibというファイル(実際にはフォルダ)なんですが、これがMAIN.NIBとなってしまい、CreateNibReference()でエラーになっていました。なんとこのルーチン、拡張子が小文字じゃないと正常に動作しないんですね。悪夢です。これは10.4でもそうでした。
また、通常はmain()がエラーを返したときはFinderがエラーメッセージを表示しますが、このケースではなぜか表示されません。表示してくれたらすぐに気づいたかもしれないのに・・・。
まあ、おかげで色々と勉強になりました(^^;)
関連リンク
・CodeWarriorからXcodeへ (2005年07月17日)
・CodeWarriorからXcodeへ 2 (2005年07月18日)
・CodeWarriorからXcodeへ 3 (2005年07月25日)
・CodeWarriorからXcodeへ 4 (2005年07月26日)
2005年7月25日
CodeWarriorからXcodeへ 3
7/18の日記の続きです。コントロールの件はまだ追求できていませんが、新たな問題を見つけました。MacOS X 10.2で動かないのです。試しにテンプレートから新規プロジェクトを作ってそのままビルドしてみたら、その雛形アプリも動作しません。
調べてみると古いOSバージョン用のSDKを使えばいいようなのですが、インストールしてプロジェクトを設定してビルドし直してもやはり動きません。他にもやることがあるのかな。なかなか簡単にはいきませんね。
それにしても、デフォルトで10.3以降になっているというのはどんなもんでしょう。10.2ってそんな見捨ててしまえるほど古いバージョンでしょうか? ダブルクリック(起動)したときにメッセージすら出ないのも寂しい。
関連リンク
・CodeWarriorからXcodeへ (2005年07月17日)
・CodeWarriorからXcodeへ 2 (2005年07月18日)
・CodeWarriorからXcodeへ 3 (2005年07月25日)
・CodeWarriorからXcodeへ 4 (2005年07月26日)
2005年7月20日
CocoaとObjective-C
せっかくXcodeを使うようになったんだし、この機会にCocoaとObjective-Cも覚えようと思って本を1冊買ってみました。Cocoaの本は結構たくさん出ているようなので、ホントはいろいろ内容を検討してから書いたかったのですが、うちの近所でMacのプログラミング本が複数ある店なんて期待できないので、通販で買いました。
選択基準は「日本人が書いた、なるべく安い本」ということで(笑)木下誠氏著「Happy Macintosh Developing Time」に決めました。
ざっと1/3くらい読んでみましたが、プログラミング経験のある人が新たにCocoaとObjective-Cを学ぶには良さそうな本ですね。逆に、プログラミング自体の初心者には難しいように思いました。
あと、買ったあとに気づいたんですが、この本ってSecond Editionが出てるんですね。そっちはちょっと高いんですが、知らずに古いの買ってしまったというのはちょっと悔しいです。値段で選ぶからですね、ハイ(^^;)
2005年7月18日
CodeWarriorからXcodeへ 2
昨日の続きです。今までリソースベースだったScrubDelete Xの設定ダイアログをInterface BuilderのNibベースに変更してみました。結論から言うと、Interface Builderで各コントロールにSignatureとIDを設定しておいて、プログラムからGetControlID()で取得するという方法でやりました。Carbon Eventには以前から対応してあったので、これで最小限の変更で済みました。見た目は以前とほとんど変わりませんが、古くさいリソースとおさらばできてなんだか気持ちがいいですね(笑)
ところで、このSignatureとIDってどういうふうに使い分けるべきなんですかね。自由に使えばいいんでしょうか。悩んだ挙げ句、とりあえずSignatureは使わずにIDのほうに以前の'DITL'リソースのアイテム番号を入れました。リソースからの移植の場合は、これでヘッダファイルの修正が最小限で済みますね。
他にもまだ分からないことがあります。Interface Builderには複数のラジオボタンが連なったラジオグループというオブジェクトがあります。便利そうなのでぜひこれを使いたかったのですが、これってボタンの数が奇数の場合はどうするんですかね。ScrubDelete Xには5個のグループがあるんですよね(^^;) Cocoa用(?)の場合はダブルクリックで選択して非表示にできますが、Carbon用ではだめなようです。結局どうやるのか分からなかったので、とりあえず単独のラジオボタンで(つまり従来どおり)やってしまいました。
また、例えばあるチェックボックスをオフにしときに他のコントロールをDeactivateControl()するような処理がうまくいきません。単純なミスはしてないと思うのですが、変化しないんですよね。この件はまだあまり調べていないんですが、今日は時間切れ。また今度。
関連リンク
・CodeWarriorからXcodeへ (2005年07月17日)
・CodeWarriorからXcodeへ 2 (2005年07月18日)
・CodeWarriorからXcodeへ 3 (2005年07月25日)
・CodeWarriorからXcodeへ 4 (2005年07月26日)
2005年7月17日
CodeWarriorからXcodeへ
来るべきインテルCPU Macの登場に備えて、今のうちから自作アプリケーションの開発環境をXcodeに乗り換えていくことにしました。私はCodeWarriorを使っているとはいえPowerPlantを使っているわけではないので、それほど大変な作業ではないはずです。まずはScrubDelete Xから始めたいと思っています。
Xcodeは何度かいじったりしたことはあるのですが、きちんとアプリケーションとして仕上げるのは初めてです。とりあえずテンプレートからプロジェクトを作って、あとは見よう見まねでやってみました。
いちおうソースは手直しの必要もなく無事にコンパイルできました。ただ、まだ統合環境の使い方がさっぱりですね(^^;) パッケージ(バンドル)アプリケーションとしてまとめるためには、どういうふうにファイルをプロジェクトに追加すればいいのか、その辺の流儀がよく分かりません。ローカライズなども考慮してあるようでCodeWarriorより複雑ですね。とりあえず手作業でパッケージ化してみた限りでは問題なく動作していますが、これ以上はドキュメントを読まないと分からないですね。
あと使ってみて気になったのは、ソースを編集するエディタが凄く使いづらいこと。動作がかなり重いですね。特に保存が遅くて、ちょっとした長さのソースファイルでも数秒もかかります。これって正常なんでしょうか。それともうちの環境だけ?(^^;) 私はcommand+Sが手癖にになっていて、ソースをちょっといじっては保存、いじっては保存と無意識にやっているので、これには参りました。何かオプションをいじったらマシになったりするのかな。G5でこれじゃあ、遅いマシンではたまりませんね。
次は今のリソースベースのGUIをInteface BuilderのNibベースに変えてみようと思います。
関連リンク
・CodeWarriorからXcodeへ (2005年07月17日)
・CodeWarriorからXcodeへ 2 (2005年07月18日)
・CodeWarriorからXcodeへ 3 (2005年07月25日)
・CodeWarriorからXcodeへ 4 (2005年07月26日)
2005年5月20日
TigerとResorcerer
MacOS Xを10.4 Tigerにアップグレードしてから、Resorcererの動作にちょっと問題が出ています。リソースファイルを編集して保存すると、Resorcererの次回起動時に必ず「前回きちんど保存できなかった可能性がある」等と警告が出てしまいます。どうも一時ファイルが削除されずに残ってしまっているのが原因のようです。実害はないのでResorcerer Last Save fというフォルダを削除すればいいんですが、毎回なのでかなりイライラします。暇なときに自動で削除するようなスクリプトか何かを作りますかね(^^;)
Resorcererって細かい不具合はたくさんあるんだけど、バージョン2.4.1からもう長いことアップデートがないので、今回も期待できそうにないですね。今更リソースエディタなんて仕方ないとは思いますが、個人的にはまだまだMacOS 9をサポートする必要があるので、X用アプリも含めてリソースは現役です。アップルはもうResEditをCarbon化してくれないでしょうしねぇ。
2005年5月 4日
Dashboardのウィジェットを作るには
Dashboardのウィジェットを作る作業ってどんな感じなのだろうと気になったので調べてみました。まず、開発のためのドキュメントとしてDashboard Programming Guideというのが出ているようです。また、Debugging Dashboard Widgetsというテクニカルノートもありました。
ざっと眺めていてちょっとびっくり。ウィジェットってC言語とかで作るんじゃなくて、HTMLとJava Scriptで作るんですね。ウィジェットのパッケージを開けると、それらお馴染みのファイルがあって、そのまんまSafariでも実行できるようです。(Safari以外のブラウザはダメみたい)
プログラミングがJava Scriptということで、既存のウィジェットは全てソースコードが見られることになります。OS付属のもの( /Library/Widgets/ にある)を参考にすれば、かなり簡単に習得できそうですね。C言語などで作るより敷居が低いし、これは普及するかも。まあ、個人的には(あまりテクニカルじゃないので)制作意欲は半減しましたけどね(^^;)
ただ、ウィジェットのパッケージを1から作るのはちょっと面倒なので、雛形を作ってくれるような開発ツールが欲しいですね。作るならそっちかな。更に開発からデバッグまで行える統合開発環境みたいなのがあっても面白いかも。そっちは個人で作るには荷が重いですが(^^;)
また、アップルはぜひWindows向けのDashboardを出すべきだと思います。せっかくウィジェットがOSに依存しない仕組みなんだから、普及させるためにもぜひ。もちろん無料で(^^;)
2005年4月 7日
続・Installer VISE 文字化け
3/15の日記の最後にちょろっと書いたツールですが、けっきょく作ってしまいました。30分くらいでできた(^^;) Text Encoding Converterのプログラミングってとっつきにくいけど、一度やっちゃうと楽ですね。
これで文字化けメニューがドラッグ&ドロップ1発で修正できるようになりました。やっぱぜんぜん楽だわ(^^;) フリーウェアとかで公開するほどのプログラムじゃないけど、VISEを使っている人には有用だと思うので、ご希望の方はメールをいただければ差し上げます。
2005年3月31日
MacOS Xでシリアル通信
昨年9/3の日記で書いたアロハPC1ですが、その後Macでも使えることを確認しました。使用したUSBシリアルアダプタはKEYSPANのHigh Speed USB Serial Adapterですが、おそらく他のものでも動くんじゃないかと思います。
今回、初めてMacOS Xでシリアル機器を扱うプログラムを作りましたが、KEYSPANの開発者向けページにサンプルプログラムがあったので簡単でした。こういうサポートは嬉しいですね。アップルのサイトにも似たようなサンプルがあるようです。
Carbon APIではシリアルポートをサポートしていないので、今までこういう機器のプログラミングってどうするんだろうと思ってましたが、MacとしてはサポートしてないけどUNIXとしてはサポートしてるという感じでしょうか(^^;)
2005年3月26日
続・ドラッグ&ドロップできないアプリ
一昨日の日記の続きですが、ナビゲーションサービスのダイアログ(メニューから“開く...”や“保存...”などを選んだときに出るやつ)にも同じようなことが言えます。
MacOS Xのアプリケーションでは、これらのダイアログのファイルリスト部分に、Finderからファイルやフォルダをドラッグ&ドロップすることができます。そうするとフォルダのパスがそこに移動してくれるので非常に便利なのですが、これまた受け付けてくれるアプリとくれないアプリがあります。受け付けるようにするにはナビゲーションサービスのNavGetFile()等を使うときにイベントプロシージャを書く必要があるようです。
ドラッグ&ドロップできるとかなり使い勝手が良くなるので、ぜひ皆さんに対応して欲しいですね。かくいう私も、この件に気づくまではやっていませんでした(^^;) なお、プロシージャの中身は空でもいいようです。空でもいいなら、プロシージャがないときも自動的にやってくれれば良さそうなもんですけどね。なんか中途半端な仕様。
また、残念ながらフォルダ用のNavChooseFolder()等ではこの方法を使ってもドラッグ&ドロップできないようです。あまり追求してないんですが、できるようにする方法ってあるんですかね?
#ネタが増えてきた(というか少し増やしたい)ので
#「プログラミング」カテゴリーを作りました(^^;)
2005年3月24日
ドラッグ&ドロップできないアプリ
MacOS Xになってから、ドラッグ&ドロップを受け付けないアプリケーションが増えたような気がします。例えばPhotoshopで作ったJPEGファイルは、通常ダブルクリックするとPhotoshopで開かれます。これを一時的に別のアプリケーション(例えばプレビューとかSafariとか)で開きたいときは、Finderでそのアプリのアイコン(Dock上のアイコンも可)にJPEGファイルをドラッグ&ドロップすると開くことができます。こういう操作って昔は常識だったと思いますが、最近はそういう使い方する人は減っているのでしょうか? フリーウェアなどを見ていると、それができないアプリが非常に多いです。わざわざメニューから“開く...”とか選んでやらなくてはならないのは、かなり面倒ですよね。
最近は他のプラットフォームから来た開発者の方も多いと思うので、こういう文化があることを知らないというケースもあるのでしょうか。それとも知っていても実装方法が分からない? 必須AppleEventに対応すれば(Macのアプリなら対応する義務がある)あとはドラッグ&ドロップを受け付けるようにアプリのリソースやプロパティリストを設定するだけなので、ぜひ対応して欲しいですね。
ただ、最近はアプリケーションを起動すると「開きたいファイルをここにドラッグしてください」みたいなウィンドウを出すようなアプリも多いですね。もはやそれが標準的なインターフェイスなのでしょうか? ま、StuffIt Expanderみたいに両方できるのがいちばんいいんでしょうけどね。
2005年3月23日
CodeWarrior 終焉の時?
CodeWarriorのDesktop製品(Mac/Windows/Palm向けなど)の販売が終了されることになったようです。ついにこの日が来たなという感じですね。ただ、これが日本語版のみなのか英語版(というかオリジナル版)もそうなのかよく分かりません。本国のページにはリリースが出ていないようなので、そっちは残るんですかね? そこのところはっきりして欲しかったな。
思えばCodeWarriorはデベロッパーリリースの頃から使用していたので感慨深いです。もう10年にもなるんですね。その頃は年何回かCDが届く定期購読のようなシステムでしたが、新しいCDが届くとワクワクしながら内容をチェックしていたことを覚えています。私がいちばんプログラミングに熱中していた時期と重なるんですよね。
今後は徐々にXcodeに乗り換えていかなければなりませんね。私はPowerPlantを使っていたわけではないのでそれほど困りませんが、使ってた人はちょっと大変かな?(^^;)
2005年3月16日
プロパティリストにバイナリデータを
MacOS Xにはアプリケーションの設定などをプロパティリスト(XML)に保存するためのAPIがあります。MacOS 9までは、この手の作業は自力でやらなくてはならなかったので、オフィシャルなやり方ができてとても便利になりました。ただ、これに定型以外のバイナリデータを保存する方法がずっと分かりませんでした。まあ、バイナリデータを保存したい場面はそれほど多くないのですが、ファイルやフォルダの位置を覚えておくために、エイリアスレコードを保存したいときがあるんですよね。
以前やろうとしたときは情報が見つけられなくて従来のやり方でやってしまったのですが、今日改めて探してみたところ、そのものズバリのテクニカルQ&Aが出てました。去年の10月ですか・・・。もっと早く出して欲しかった(^^;) ていうか、この辺のAPIって最初はまともなドキュメントすらなかったような気がするけどね。
最近はアップルの開発者向けの情報もRSSで配信されるようになったので、チェックするのが楽になりました。中身はともかく普段からサブジェクトくらいは目を通しておかないといけませんね。
2005年3月15日
Installer VISE 文字化け
Installer VISE(現時点での最新バージョンは8.4)で日本語名のインストーラーを作成すると、MacOS Xのアプリケーションメニューのタイトル(つまりインストーラー名)が文字化けするという問題があるようです。例えば以下のような感じになります。

言語を設定するところはちゃんとJapaneseにしてるし、作成されたインストーラーの'vers'リソースや'plst'リソースも日本語の設定になっています。他に私が見落としている設定項目(やたらと多いんですよね)があるのかもしれませんが、どうしても見つけられなかったので、これはInstaller VISEのバグと判断し、最終手段としてビルドしたインストーラーに直接手を加えて解決することにしました(^^;)
調べてみると、どうやら'plst'リソースがShift JISで保存されているのが原因のようです。ここはUTF-8でなくてはなりません。これを直したところ、あっけなく解決しました。

ここまでしなくても、英語名でインストーラーを作って後からファイル名だけ日本語に変えたり(メニューは英語のままになる)'plst'リソースを削除しちゃったり(全く影響なし?)しても、実用上は問題ないんですけどね。技術者のこだわりということで(^^;)
実際、インストーラーをビルドするたびにこの作業をするのは面倒なので、暇があったらドラッグ&ドロップ一発で修正できるツールを作りたいと思ってます。でも、それより早くバグフィックスして欲しいけどね。
関連リンク
・続・Installer VISE 文字化け (2005年04月07日)
2005年2月 9日
Sentinelドングルのトラブル
仕事でSentinel Eve3というUSB接続のドングル(プロテクトキー)を使用するMacOS X用アプリケーションを作っているのですが、最近これでちょっとトラブルがあったので書いておきたいと思います。同じことで悩んでいる人もいるかもしれませんしね(^^;)
現象は「ドングルが接続されているにも関わらずエラーになることがある」というものです。いろいろ調べて以下の条件で発生することが分かりました。
・クラシック環境が(裏で)起動している
・アプリケーションを起動してしばらくすると発生する
(つまり起動直後には発生しない)
クラシック環境が起動している場合は、処理に成功した場合でもチェックに時間がかかるようになり、数回に1回くらいの割合でエラーになります。
代理店経由で開発元に問い合わせてもらったのですが、最初の返答は「再現しない」というものでした。仕方ないので現象が再現する簡単なテストプログラムを作ってソースごと送りつけました。そうしたら次は「この手のデバイスは必ず成功するとは限らないので、何度かリトライしてください」とのこと(^^;)
最初は再現しない言ってたくせに、いつのまにかまるで仕様ですみたいな返答になってしまったのはちょっと不愉快ですが、仕方ないので言われたとおりリトライするようにしました。クラシック環境が起動してると時間がかかる件は解決しませんでしたが、しょうがないですね。将来ドライバが修正されることを期待します。
2005年1月28日
FSMoveObject
CarbonアプリでFSMoveObject()を使うと、MacOS 9でクラッシュしてしまう現象が発生しています。クラシック環境では動くのに、MacOS 9でブートして実行するとだめなんです。同じシステムフォルダなのに(^^;)
私の実装が悪いという可能性もないとは言い切れないのですが、追求している時間がなかったので昔のFSpCatMove()を使うことで逃げました。ま、動作的にはそれで全然OKなんですが、問題なのはやはりMacOS 9でブートしたときだけ再現する不具合があるという点ですね。こういうのがある限り、まだまだMacOS 9でブート可能なマシンはテスト用として手放せません。G5を買って逆に面倒になった部分ですね(^^;)
それにしてもMacOS Xになってからファイルの扱いが面倒になりましたね。全部FSRefで済ませられることを期待してたら全然無理で、処理によっては従来どおりFSSpecを使わなくちゃならなかったり、新しいCFURLRefを使わなくちゃならなかったり、もう面倒。過渡期ということでしょうがないんですかね。
2004年12月20日
ClassicアプリとDock
MacOS XのClassic環境でClassicアプリケーションを使っていると、そのアプリのウィンドウがDockの裏に隠れてしまって使いにくいときがあります。特にウィンドウのタイトルバーやサイズボックスが隠れてしまうと凄く面倒です。
せめて自作のアプリだけでも対応しようと思ったんですが、意外と方法がないですね。MacOS X用の(Carbonの)アプリではGetAvailableWindowPositioningBounds()を使ってDockの位置(正確にはDockを省いた矩形)が分かりますが、このAPIはClassicアプリからは呼べないみたいです。何か方法ありますかね?
でも、すべてのClassicアプリがちゃんとDockをよけてくれるのが理想ですよね。そういうふうにしちゃうソフトとか、ないかな?(^^;)
2004年12月 9日
日経ソフトウェア
インターネットが普及してからコンピュータ関連の雑誌買うことがとても少なくなりました。たいていのことはネットで調べられますからね。そんな中で、私がただ1つ毎月買っている雑誌が日経ソフトウェアです。特にこの雑誌が良いと思って買っているわけではないのですが、プログラマ向けの雑誌を何か1つ読んでおきたかったんです。
この雑誌って企業の業務システムの開発とか、そっち方面の話が多いです。知らないことも多くて、読んでいると凄く不安になります(笑) まあ、危機感を覚えること自体、意味があるとも言えますが、私が普段やっている仕事にはあまり役に立ちません。もっとパッケージソフトの開発者などが読んで役に立つ雑誌があったら、そういうのも購読したいですね。オススメあったら教えてください。
2004年11月22日
プラグインの魅力
最近、仕事でデータベースソフト 4th Dimension用のプラグインを作っています。こういった外部ルーチンのプログラミングって凄く楽しいですよね。プログラミングだけでなく、設計も楽しいです。今までにもHyperCardのXCMDやPhotoshopのフィルタプラグインなどを作ったことがありますが、どれも充実感がありました。クラシックMacOS時代の機能拡張やコントロールパネルなんかも似たような感じですね。
やはり、プラグインを作ることによって、本来できないことができるようになるというのが最大の魅力でしょうか。あと、プログラム自体もシンプルでコンパクトになるし、GUIを作らなくていい(必要なときもあるけど)のも楽で良いです(^^;)
2004年9月 3日
アロハPC1
最近、仕事でアロハPC1というナンバー・ディスプレイアダプタを使ったアプリケーションを開発しています。これ、なかなか面白いです。これを電話回線とPCに接続しておくと、電話がかかってきたときにナンバーディスプレイで通知された電話番号がPCで取得できるのです。例えば、その番号で自動的に顧客データベースを検索したりする、いわゆるCTIシステムがローコストに構築できるわけです。
インターフェイスが今時RS-232Cなのがネックですが、開発は比較的容易です。試していませんが、MacでもUSB接続のシリアル変換機とか使えば動くかもしれません。まあ、欲を言えば最初からUSB接続で、WindowsとMacのドライバやSDKが用意されている機器があると嬉しいんですけどね。他のメーカーでもいいから出さないかな。
関連リンク
・MacOS Xでシリアル通信 (2005年03月31日)
2004年6月23日
LZW特許の失効
米Unisysの持つ悪名高き(?)LZW特許が、今月20日、ついに日本でも失効しました。この特許については個人的に腹立たしく思っていたので、ちょっと嬉しいですね。
アメリカでは1年前でしたが、これでほとんどの国で失効したことになるのでしょうか? もしそうなら、これを機会にQuickTimeの画像保存用API(Graphic Exporter)も、GIFやLZW圧縮のTIFFに対応して欲しいですね。確かImporterは対応してたけどExporterは対応してなかったよね?
2004年6月 9日
Classic版シェアウェアのフリーウェア化
ここで公開しているClassic版のシェアウェアを、すべてフリーウェアにすることを検討しています。私自身もうClassic版をバージョンアップするつもりはないので、最終バージョンとしてまとめておこうかと。
作業としては、送金を促すメッセージを出ないようにして、ドキュメントを書き換えるだけなんですが、1つ困ったことがあります。もう68Kコンパイラがないのです(^^;) 正確には古いCodeWarriorのCD-ROMを探し出せばいいだけなので、ないわけではないのですが、最後に68Kコンパイラを搭載したCWってバージョンいくつでしたっけ? 全部のバージョンを調べると思うと、ちょっと嫌かも(^^;)
関連リンク
・Classic版シェアウェアのフリーウェア化 その後 (2006年05月31日)
2004年4月 9日
MacOS Xの起動項目
仕事で、あるアプリを起動項目にセットするプログラムを作りました。ネットを検索したりして方法を調べたところ、設定は ~/Library/Preferences/loginwindow.plist に記録されていて、これを書き換えるしかないようですね。こういったプロパティリストの読み書きのAPIは用意されているわけですが、それでもちょっと面倒です。
また、新しいアカウントを作った直後にこのloginwindow.plistがどうなっているか気になって調べたところ、どうもOSのバージョンによって微妙に違うようです。このファイル自体が存在しない場合もあるので、それも考慮しなければなりません。
それにしても、MacOS 9までのシンプルさに比べて、この分かりにくさはなんなんでしょう(^^;)
2004年3月 9日
PackageMaker
先日、とあるドライバソフトのインストーラーを作る必要があって、初めてPackageMakerを使いました。こういうツールがOSに標準でついているというのは嬉しいですね。しかもこれ、作るのが驚くほど簡単です。なんの説明も読まずに、見様見真似で完成させることができました(^^;) やっぱアップルはこういうの作らせたらうまいですよねぇ。改めて感心しました。

