9月, 2011

Mac OS Xで環境変数を設定する

投稿者:アールケー開発 この記事は 2011年9月25日 に公開されました。

Mac OS Xで使用される環境変数を設定するには、次の2通りの方法があります。

(A) 「.bash_profile」ファイルで設定する

(B) 「environment.plist」ファイルで設定する

(A)の方法は、ターミナルで使用する環境変数を設定するために使用します。

「~/.bash_profile」ファイルを作成し、次のような内容を記述します。

export PATH=/usr/local/bin:$PATH

この例では「PATH」変数の先頭に「/usr/local/bin」を追加しています。「PATH」変数は、ディレクトリを「:」で区切ります。

(B)の方法は、「loginwindow」によって使用される環境変数、つまり、通常のアプリケーションで使用される環境変数です。「~/.MacOSX/environment.plist」ファイルを作成し、プロパティリストで、キーを変数名、値に変数の値となるように記述します。

(B)の方法で設定した値は、ターミナルで使われる環境変数にも追加される形で反映されます。

ただ、(B)の方法は、既存の変数に値を追加することを意図して「$PATH」などと書いても、「$PATH」になってしまい、変数の値が展開されないので注意が必要です。

また、設定した値を反映するには、再起動する必要があります。ログアウトでも反映されるかと思ったのですが、Snow Leopardで試してみると、ログアウトしただけでは変更が反映されませんでした。

▲ページトップへ戻る

MOSADeN Onlineの記事をアップしました

投稿者:アールケー開発 この記事は 2011年9月25日 に公開されました。

MOSADeN Onlineの記事をアップしました。9月27日公開予定です。

今回はEvent Kit UIについてです。Event Kit UIを使うと、カレンダーのイベント編集機能が簡単に実装できます。

MOSADeN Onlineはこちら。

▲ページトップへ戻る

「C言語逆引きハンドブック」を執筆しました

投稿者:アールケー開発 この記事は 2011年9月25日 に公開されました。

お知らせよりも先に予約受付が始まっていますが、「C言語逆引きハンドブック」(C&R研究所 発刊)という本を執筆しました。C言語の標準ライブラリを中心にやりたいことから、どの関数を使えばよいのかや、実際に使うとどのようになるのかを調べることができる逆引き辞典です。

各関数の説明とその関数を使ったサンプルコード、その実行結果を掲載していますので、実際に使うとどうなるのかがわかるようになっています。

紹介している関数は、C99の標準ライブラリの関数を中心に書きましたが、それだけにこだわらず、よく使用されるものについてはプラットフォーム特有のシステムコールであっても紹介しました(特に、スレッド関連)。

また、Visual C++とMac OS X、Linuxでは同じことをするときにも別々の関数を使用しなければいけないことがあります。そのようなケースについても、各プラットフォーム別にサンプルコードを用意しました。

C言語の学習やC言語を使った開発の現場にも幅広く役立って欲しいと思って執筆しました。

10月11日発売予定です。

公式ページはこちらです。

C言語逆引きハンドブック

[目次]

もっと詳しい目次は公式ページをご覧ください(現在準備中です)

CHAPTER 01 C言語の基礎知識
CHAPTER 02 C言語の文法
CHAPTER 03 入出力とファイル操作
CHAPTER 04 メモリブロックと文字列
CHAPTER 05 数学処理
CHAPTER 06 日付・時刻の処理とロケール処理
CHAPTER 07 スレッド
CHAPTER 08 プロセス間通信とネットワーク
CHAPTER 09 便利な関数とその他の処理

よろしくお願いします。

▲ページトップへ戻る

NSURLクラスのフラグメントの解釈

投稿者:アールケー開発 この記事は 2011年9月24日 に公開されました。

NSURLクラスの「fragment」メソッドは、URLのフラグメントを返してくれます。ただ、その動作は「#」以降をすべてフラグメントとして解釈するとなっているようです。

例えば、「http://www.rk-k.com/test.html#name=10?from=browser」というURLがあった場合、「fragment」メソッドと「query」メソッドの戻り値は次のようになります。

fragment : name=10?from=browser

query : nil

RFC 1808では、URLを次のように定義しています。

<scheme>://<net_loc>/<path>;<params>?<query>#<fragment>

つまり、定義的には、フラグメントは最後にあるべきで、クエリーはフラグメントよりも前にあるべきということです。そのため、「http://www.rk-k.com/test.html?from=browser#name=10」というURLでは、次のように値が戻ります。

fragment : name=10

query : from=browser

プログラム中でフラグメントを解釈するとき、クエリーが含まれているかもしれないことを注意しなければいけないようです。

▲ページトップへ戻る

Lionでの動作カーネルの確認方法

投稿者:アールケー開発 この記事は 2011年9月23日 に公開されました。

32ビットカーネルと64ビットカーネルのどちらで動作しているか確認したいとき、Snow Leopardまではシステムプロファイラで確認できました。しかし、Lionでは、システムプロファイラに動作カーネルが表示されなくなってしまいました。

Lionで動作カーネルを確認したいときは、ターミナルから「uname -a」と入力します。例えば、この記事を書いているMacBook Airで実行すると、64ビットカーネルのときは次のように表示されます。

Darwin MacBook-Air.local 11.1.0 Darwin Kernel Version 11.1.0: Tue Jul 26 16:07:11 PDT 2011; root:xnu-1699.22.81~1/RELEASE_X86_64 x86_64

このように、最後に「x86_64」と表示されていたら64ビットカーネルです。同じマシンを32ビットカーネルで動作させると次のように表示されます。

Darwin MacBook-Air.local 11.1.0 Darwin Kernel Version 11.1.0: Tue Jul 26 16:09:02 PDT 2011; root:xnu-1699.22.81~1/RELEASE_I386 i386

このように、32ビットカーネルで動作している場合は「i386」と表示されます。

32ビットカーネルと64ビットカーネルの切り替えは「systemsetup」プログラムで実行できます。カーネルの切り替えは次のようにします。

・32ビットカーネルで起動

sudo systemsetup -setkernelbootarchitecture i386

・64ビットカーネルで起動

sudo systemsetup -setkernelbootarchitecture x86_64

SnowLeopardからアップグレードしたマシンでは、32ビットカーネルで動作している場合があります。一度、確かめておくのも良いと思います。

▲ページトップへ戻る

Cornerstone、これだけ知っていればとりあえず始められる

投稿者:アールケー開発 この記事は 2011年9月22日 に公開されました。

最近、使い始めたSubversionのクライアントソフトで「Cornerstone」というソフトがあります。MacらしいGUIのクライアントソフトで使いやすいソフトです。

とりあえず、これだけ知っていれば「Cornerstone」を使い始められるという点をまとめてみました。

[1] リポジトリの設定

とりあえずリポジトリの設定から。リポジトリもワーキングコピーも設定されていない状態(つまり初期状態)で起動すると、メインウインドウの中央のちょっと下側に「Add Repository…」というボタンが表示されるので、これをクリックします。

メインウインドウの初期状態

メインウインドウの初期状態

リポジトリの設定シートが表示されるので、「http://」や「https://」なら「HTTP Server」タブ、「svn://」なら「SVN Server」タブ、ローカルマシンなら「File Repository」タブ、「codesion」なら「Cloud Service」タブを表示します。

私の場合は「svn://」なので「SVN Server」を表示しています。

リポジトリの追加

リポジトリの追加

例えば、「svn://mylocal.local/」というリポジトリの場合は、「Server」に「mylocal.local」と入力します。

匿名接続できないサーバ(ほとんどは読み込みは匿名でできても、書き込みはできないはず)のアカウントは、「Account Information」の「Name」と「Password」に設定します。

設定が終わったら、「Add」ボタンを押してください。メインウインドウの「REPOSITORIES」に追加されます。

[2] リポジトリのブラウズ

設定したリポジトリをブラウズするにはメインウインドウの左側「REPOSITORIES」から接続したいリポジトリを選択します。中央部分がブラウザになっていて、リポジトリの内容が表示されます。

ディレクトリの横のディスクロージャーボタン(三角ボタン)をクリックすれば内容が表示されます。ダブルクリックすれば、そのディレクトリ内に潜ります。ちょこっとみたいときはディスクロージャーボタンの開閉、確実にみたいときはダブルクリックするみたいな使い分けができます。

ダブルクリックでディレクトリ内に入った場合は、ブラウズ部分の上側にディレクトリパスのボタンが表示されて、トップディレクトリでも途中のディレクトリでも一気に移動できます。

リポジトリのブラウズ

リポジトリのブラウズ

[3] チェックアウト

チェックアウトは、チェックアウトしたいディレクトリを選択して、ツールバーの「Check Out」ボタンをクリックします。チェックアウト先のディレクトリやチェックアウトしたときのディレクトリ名などを設定するシートが表示されるので、設定して「Check Out」ボタンをクリックします。チェックアウトするとメインウインドウの左側「WORKING COPIES」にチェックアウトしたディレクトリが追加されるので、そこからチェックアウトしたディレクトリをブラウズできます。

チェックアウト

チェックアウト

[4] コミット

チェックアウトしたワーキングコピーを変更した後、コミットしたいときは、メインウインドウの左側「WORKING COPIES」からワーキングコピーを選択して、ツールバーの「Commit」ボタンをクリックします。なお、ブラウズ部分で「Changed」を選ぶと変更したファイルとリポジトリに追加していないファイルだけが表示されるので、便利です。また、コミットしていない変更ファイルがあるときは「WORKING COPIES」の欄に個数が出ているので、わかりやすいです。

特定のファイルやディレクトリだけをコミットしたいときは、コミットしたい対象を選んでから「Commit」ボタンをクリックします。

変更された項目の絞り込み

変更された項目の絞り込み

「Commit」ボタンをクリックすると、メッセージ入力欄などが表示されるので、「Log Message」にメッセージを入力して、「Commit Changes」ボタンをクリックします。

コミットの確認

コミットの確認

メッセージを入力しないで「Commit」ボタンをクリックすると警告が出ますが「Commit Anyway」ボタンをクリックすれば、未記入でもコミットできます。

[5] 変更の破棄

変更したけど、変更を破棄したいということも開発中にはよくあります。変更を破棄したいときは、ファイルを選択して、「Revert」ボタンをクリックします。

確認シートが表示されます。「Copy to Trash First」を選択すると、とりあえず変更したファイルをゴミ箱に入れてから変更を破棄します。「Discard Changes」を選択すると強制破棄です。

変更の破棄の確認

変更の破棄の確認

破棄したコードをやっぱり使いたいという、優柔不断になってしまいそうなときには「Copy to Trash First」を押しておきましょう。

[6] ファイルやディレクトリの追加

この項目はもっと前に書くべきな気もしますが、ファイルやディレクトリの追加をしたいときは追加したい項目を選んで、メインウインドウの下側の「Add」ボタンをクリックします。

このとき、ディレクトリの場合は、「Add」ボタンを長押しして、「Add to Working Copy with Contents」を選択するとディレクトリの中も追加されます。

さらに「Cornerstone」の便利な点は、ワーキングコピーのブラウズ表示で、「Unversioned」を選べば、追加していないものだけが絞り込まれて表示されるので、変更と追加が入り乱れているときなどにとても効率が良いです。

[7] タグ付け

リリース後や節目のときなど、タグ付けが必要です。あとで、特定のバージョンのソースが取り出せないというような悲惨な目に遭わないように、タグ付けをしましょう。なお、Subversionでのタグ付けは特定の状態のコピーです。「Cornerstone」でタグ付けをするには、「REPOSITORIES」からリポジトリを選択して、タグ付けをしたいディレクトリの親まで移動します。

次にタグ付けをしたいディレクトリを選択して、「Tag」ボタンをクリックします。

タグの設定シートが表示されるので、「Tag As」にタグの名前というか、コピーされた後のディレクトリ名を入力して、「Create Tag」ボタンをクリックします。デフォルトの場所は、タグ付け対象のディレクトリと同じディレクトリの「tags」ディレクトリ内です。

そのため、次のようなディレクトリ構成にしておくと、効率が良いです。

/

trunk/  作業中の最新版

tags/   タグ付けしたものを入れるところ

branches/  分岐コピー

ちなみに、タグ付けではなく、分岐コピーのときは、「Branch」ボタンをクリックします。デフォルトの場所は、同じディレクトリの「branches」です。

タグ付け

タグ付け

[8] ファイルやディレクトリの削除

ファイルやディレクトリを削除したいときは対象を選んで、右クリックして「Delete」を選択します。

なお、削除後に削除したことをコミットするということを忘れないように注意してください。

[9] 出力

チェックアウトではなく、リポジトリの内容を出力したいこともあります。例えば、ソースファイルのスナップショットのアーカイブを作りたいときなど。

出力は、リポジトリからでもワーキングコピーからでもできます。出力したい対象を選択して、「Export」ボタンをクリックします。

出力先の選択シートが表示されるので「Export As」に出力名を入力して、「Export」ボタンをクリックします。

出力先の設定

出力先の設定

[10] 衝突解決

Subversionは、同じファイルを複数の人が同時に編集してもうまくマージしてくれるという優れたツールですが、時には、全く同じ場所を編集してしまって衝突を起こすことがあります。

衝突が起きてしまった場合は、後からコミットする人が解決しなければいけません。衝突内容を修正したら、最後に「Cornerstone」の「Resolve」ボタンをクリックします。

[11] アップデート

サーバにコミットされた変更をローカルに反映するには、ワーキングディレクトリを選択してツールバーの「Update」ボタンをクリックします。特定のディレクトリやファイルだけをアップデートしたいときは、アップデートしたい項目を選択してから「Update」ボタンをクリックします。

以上、「Cornerstone」をとりあえず使い始めるために必要なことでした。

Cornerstone - Zennaware GmbH Cornerstone – Zennaware GmbH

▲ページトップへ戻る

もうマウスには戻れない

投稿者:アールケー開発 この記事は 2011年9月21日 に公開されました。

メイン開発マシンはSnow Leopardから移行できないでいるのですが、それ以外のマシンはすっかりLionで統一してしまいました。そして、Lionのジェスチャーにすっかり染まってしまいました。

ジェスチャーは覚えるまではちょっと面倒に感じましたが、覚えてしまうと、マウスでの操作が煩わしく感じるようになってしまいました。そして、デスクトップもマウスからMagic Trackpadに変えてしまいました。もう、マウスには戻れない。

特に、「親指と3本指ピンチ」(癖で全部の指を使ってしまっていますが)で表示されるLaunchpadが楽しいです。

▲ページトップへ戻る

MSM 2011でのセッション内容を決めました

投稿者:アールケー開発 この記事は 2011年9月21日 に公開されました。

MSM 2011 (MOSA Software Meeting 2011) でのセッション内容を決めました。

今年は「Storyboards」について紹介します。「Storyboards」を使うとビューの切り替わり時のトランジションの設定やビュー遷移の可視化が行われます。本セッションでは、具体的な使用方法やカスタムトランジションの設定方法、今までと何が違うのかなどについて紹介します。

MSM 2011についてはこちら。

MOSA Software Meeting 2011

▲ページトップへ戻る

iOSアプリで使えるWebDAVのライブラリ

投稿者:アールケー開発 この記事は 2011年9月20日 に公開されました。

ここ数日、WebDAV連携で便利になるiOSアプリのおかげで仕事も快適になっているのですが、そうなると、開発者としては自分の開発するアプリでもWebDAVと連携できる機能は入れたいと思ってきます。

WebDAVは、そもそもHTTPを拡張して、ファイル操作を行えるようにしたプロトコルです。ちゃんと実装しようと思うとそれなりに手間がかかります。しかし、その手間を惜しんではいけないと思いつつも、ライブラリがあるのなら使ってしまいたい。。。iOSで使えるWebDAVのライブラリを少し探してみました。

wtclient

MITライセンスで提供されるライブラリです。

ソースはSubversionのリポジトリから直接ダウンロードします。

flycode WebDAV Implementation

修正BSDライセンス(?)で提供されるライブラリです。ライセンスの詳細は「LICENSE.txt」ファイルを参照してください。中で使用されている「ISO8601DateFormatter」クラスは別のライセンスです。

▲ページトップへ戻る

「iOSデバイスと共有 (WebDAV)」機能で便利になるiOSアプリ

投稿者:アールケー開発 この記事は 2011年9月20日 に公開されました。

Lion Serverの「iOSデバイスと共有 (WebDAV)」機能を使うと、簡単にiOSアプリから共有ポイントに置いたファイルにアクセスできるようになり、iOSアプリで作成したファイルを保存することもできるようになります。ファイル共有なのでアクセス権の設定も簡単です。

そうすると、個人的に便利だなと感じているのが、「GoodReader」や「iAnnotate PDF」です。これらのアプリはいずれもWebDAVサーバに接続することができます。

Lion Serverの「iOSデバイスと共有 (WebDAV)」機能はWebDAVサーバなのでWebDAVサーバに対応したこれらのアプリは直接アクセスできます。

例えば、プリントアウトして手元に置きながら作業していた書類を、プリントアウトせずにPDFにしてサーバにおいておいて、GoodReaderでiPadと同期させて、iPadに表示する。プリントアウトするのと同じように手元で書類が読めます。後でシュレッダーにかける手間もいりません。

校正を行う書類なら、「注釈入り」と「オリジナル」というフォルダを作成して、両方にPDFにした書類を置きます。そして、iAnnotate PDFで、「注釈入り」の方をダウンロードして、校正しながら注釈を追加。終わったら、「アカウントにアップロード」機能を実行。すると、サーバの「注釈入り」フォルダの中のPDFは、iPadで注釈を入れたファイルに置き換わります。

プリントアウトした資料に赤ボールペンで書き加えていくよりも手軽です。

どちらのツールも単純なダウンロード&アップロードだけではなく、「同期」という形ができるのでとても魅力的です。

GoodReader for iPad - Good.iWare Ltd.GoodReader for iPad – Good.iWare Ltd.

iAnnotate PDF - 注釈 - Aji, LLC iAnnotate PDF – 注釈 – Aji, LLC

▲ページトップへ戻る