11/03/2010

WP7 TrainingKit のサンプルをXBOX360で動かす

Windows Phone 7 のマーケットプレイスや実機で動作させるために、APP HUBのメンバーシップになったものの、実機もないのでTraining Kit のサンプルの動作も完全に動作させることができない状態です。

そんな中、APP HUBのメンバーシップで Creators Club にも同時に入るので、XBOX360のアプリ開発も行えることを知り、WP7の実機が待ち遠しいので我慢できず、Windows Phone 7 の Training Kit を XBOX360 (実機)で動かしてみることにしました。

一応、実機です・・・。WP7じゃないけど。

試したのは、Training Kit の「Exercise 1: XNA Game Studio Games on the Windows Phone 7」です。

ちなみに、Windows Phone 7 のエミュレータで動かした画面は以下のような感じです。


では、XBOX360のXNA用にコードを修正していきます。

「Microsoft Visual Studio 2010 Express for Windows Phone」を起動して、「New Project」を選択します。プロジェクトのテンプレートは、「Xbox 360 Game (4.0)」です。




\End\AlienGame\AlienGame 配下のファイルとフォルダを、AlienGameのプロジェクト①にドラック・アンド・ドロップして、\End\AlienGame\AlienGameContent配下のファイルをAlienGameContentのプロジェクト②にドラック・アンド・ドロップします。ドラック・アンド・ドロップでコピーするファイルは、以下の画面を参考にしてください。


Xbox 360はTouchクラスが存在しないようなので、少しコードを変更します。主にエラーになっている箇所です。

Program.cs
static void Main(string[] args)
        {
            using (AlienGame.AlienGame game = new AlienGame.AlienGame())
            {
                game.Run();
            }
        }

GameplayScreen.cs の using
using System.IO;
using Microsoft.Xna.Framework.Input;
#if !XBOX
using Microsoft.Xna.Framework.Input.Touch;
using Microsoft.Devices.Sensors;
#endif

GameplayScreen.cs の GameplayScreen クラス
//Input Members
#if !XBOX
        AccelerometerReadingEventArgs accelState;
        TouchCollection touchState;
        Accelerometer Accelerometer;
#endif

GameplayScreen.cs の GameplayScreen() コンストラクタ内
alienBullets = new List();
#if !XBOX
            Accelerometer = new Accelerometer();
            if (Accelerometer.State == SensorState.Ready)
            {
                Accelerometer.ReadingChanged += (s, e) =>
                {
                    accelState = e;
                };
                Accelerometer.Start();
            }
#endif
        }

GameplayScreen.cs の HandleInput(InputState input) メソッド内
if (input.PauseGame)
            {
                if (gameOver == true)
                    finishCurrentGame();
            }
            else
            {
#if XBOX
                if (input.MenuSelect)
                {
                    buttonTouched = true;
                }
                if (input.MenuUp)
                {
                    movement = 1.0f;
                }
                if (input.MenuDown)
                {
                    movement = -1.0f;
                }
#else
                touchState = TouchPanel.GetState();

                //interpret touch screen presses
                foreach (TouchLocation location in touchState)
                {
                    switch (location.State)
                    {
                        case TouchLocationState.Pressed:
                            buttonTouched = true;
                            break;
                        case TouchLocationState.Moved:
                            break;
                        case TouchLocationState.Released:
                            break;
                    }
                }
                if (accelState != null)
                {
                    if (Math.Abs(accelState.X) > 0.10f)
                    {
                        if (accelState.X > 0.0f)
                            movement = 1.0f;
                        else
                            movement = -1.0f;
                    }
                }
#endif

                player.Velocity.X = movement;

これで、プログラムの変更は完了です。

あとは、XBOX360に「XNA Creators Club」をインストールするのですが・・・。なかなか見つからない。

場所は、「ゲーム マーケットプレイス」→「ゲームストア」→「追加コンテンツ&その他」→「ゲーム追加コンテンツ」→「タイトル順」→「え」→「XNA Creators Club」です。

では、XBOX360とPCを接続します。

XBOX360の「XNA Creators Club」のインストールが完了したら、「ゲームライブラリ」→「全て」から「XNA Creators Club」を実行します。
PC側は、「スタート」→「Microsoft XNA Game Studio 4.0」→「XNA Device Center」を実行します。
あとは、画面の指示に従って、XBOX360に表示されているキーをPC側に入力します。
※「Microsoft Visual Studio 2010 Express for Windows Phone」が動作しているPCとXBOX360は同一セグメントのネットワークに接続されていないといけません。

そして、「Microsoft Visual Studio 2010 Express for Windows Phone」から実行を行うと、XBOX360にプログラムが送られて実機(WP7じゃないけど)で、ゲームが遊べます。


同じコードでXBOX360向けのゲームも作れてしまうのは素晴らしい。(本当は逆ですね)
早く日本に実機(WP7)上陸してほしいです。

The Windows Phone Developer Tools October 2010 Update

10月26日に、Windows Phone の Developer Tools がアップデートされていたようです。
RSSで流れたいたのを、見逃していました。

http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=49b9d0c5-6597-4313-912a-f0cca9c7d277

そして、ヨーロッパではご存知のとおり、Windows Phone 7が発売されております。
http://windowsteamblog.com/windows_phone/b/windowsphone/archive/2010/10/21/worldwide-excitement-for-windows-phone.aspx

時は流れており、明日あたりにはUSで、Windows Phone 7が発売されるんでしたっけ?

とりあえず、Windows Phone Developer Tools October 2010 Update のドキュメントから、下記の3点のアップデートがあったようです。

1.Bing Maps Control がアップデートされて、ジェスチャーが良くなったようです。

2.Capability Detection tool により、アプリケーションで何を使っているかスキャンすることができるようです。
http://msdn.microsoft.com/en-us/library/gg180730(v=VS.92).aspx

3.WP Connect utility により、Zuneを使わないで、Windows Phone と PCを接続することができるようです。
これにより、Media API のデバックができるようになるようです。
http://msdn.microsoft.com/en-us/library/gg180729(v=VS.92).aspx

3あたりは実機がないと使えないようですね。

11/02/2010

APP HUB で Windows Phone のダッシュボードページに行けなくなった

3日前ぐらいは、ダッシュボードのWindows Phone と プロフィール に行けたのですが、
2日前あたりからWindowsPhoneとプロフィールに行けなくなってしまいました。
トップページの「Windows Phone 向けに投稿」も同様に行けませんが、「Xbox360 向けに投稿」は行けます。

色々と調べたり、教えてもらったりとして無事解決しましたので、方法を記しておきます。

MICROSOFT *MKTPLACE からのメールで「更新手続き完了のお知らせ」が届いたタイミングで、この現象が発生したようです。

1. http://xbox.com にアクセスする。
2. xbox.com で新しい約款に同意する。
3. アバターが作られてなかったので作る(関係ないと思いますが一応書いておきます)
4. xbox.com からログアウト。APP HUBにログインしている場合にもログアウト。
5. APP HUBに再度ログイン

これで、WindowsPhoneのダッシュボードにアクセスができることを確認できます。
Xbox360 のダッシュボードにアクセスできるのは不思議ですね。

Windows Phone で APP HUB をはじめて利用しているので、xbox.com は関係ないと思い込んでいたこともも解決に時間がかかる原因でした。xbox.com にもアカウントを持っていることを忘れてましたし。。。。

追記:公式にアナウンスされてました。
http://create.msdn.com/ja-JP/home/news/app_hub_dashboard_nov_1

10/29/2010

Windows Phone Developer Tools RTW

あたらしいWindows Phone 7 の Developer Tools 出てたんですね。。。
PDC10で表示されているエミュレータと違うから気になってたんですよ。
今回のエミュレータは、カメラ使えるといいな。

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=04704acf-a63a-4f97-952c-8b51b34b00ce

10/26/2010

Windows Phone 7 アプリケーションの Lifetime(エミュレータ)

Windows Phone 7 アプリケーションは、OSから実行された後、App.xaml の ApplicationLifetimeObjects エレメント内で設定されたメソッドが、OSの状態が変化した場合に合わせて、実行されます。これは、PhoneApplicationService クラスが提供している機能で、アプリケーションの起動から終了までの間に何度か繰り返し実行されることがあります。

現段階では、Windows Phone 7 のエミュレータ上でしか確認できませんので、その範囲で調べてみます。

App.xaml は、VS2010で作成されたままの状態です。

<Application.ApplicationLifetimeObjects>
    <shell:PhoneApplicationService 
        Launching="Application_Launching" Closing="Application_Closing" 
        Activated="Application_Activated" Deactivated="Application_Deactivated"/>
</Application.ApplicationLifetimeObjects>

App.xaml のコードビハインドの、App.xaml.cs に少しコードを追加します。

private void Application_Launching(object sender, LaunchingEventArgs e)
    {
        MessageBox.Show("Application_Launching");
    }

    private void Application_Activated(object sender, ActivatedEventArgs e)
    {
            MessageBox.Show("Application_Activated");
    }

    private void Application_Deactivated(object sender, DeactivatedEventArgs e)
    {
        MessageBox.Show("Application_Deactivated");
    }

    private void Application_Closing(object sender, ClosingEventArgs e)
    {
        MessageBox.Show("Application_Closing");
    }


ApplicationLifetimeObjects で設定したメソッドが、どのような場合に実行されるのか確認してみました。



Launching
「Start」からアプリケーションが起動したときに呼ばれます。たとえ、Deactivated になっていたとしても、スタートからアプリケーションが選択されれば、Launching が呼ばれます。なので、初めての起動、Closing、Deactivated の3つの状態の時に Launching が呼ばれるようです。 また、 Launching から Launching、Activated になることはないようです。

Activated
アプリケーションが起動している状態から、「Startボタン」→アプリ起動→「Backボタン」→「Backボタン」や、「Searchボタン」→「backボタン」など、一度 Deactive になった状態から、「Backボタン」でアプリケーションに戻ったときに呼ばれるようです。「Backボタン」ではなく、「Start」から同一のアプリケーションを起動すると、「Launching」になるようです。

Deactivated
アプリケーションが起動している状態から、「Startボタン」、「Searchボタン」を押したときに呼ばれるようです。「Backボタン」では Closingになるようです。この状態から、Closingが呼ばれることはないようです。

Closing
アプリケーションが起動している状態から、「Backボタン」を押したときに呼ばれるようです。その他の操作からはClosingは呼ばれませんでした。この状態から、Deactivated が呼ばれることはないようです。

エミュレータでの動作を確認してみましたが、実機ではアイドル時にも、これらのメソッドが呼ばれるようです。電話がCallしてきたときも呼ばれるんでしょうね。

早く実機を触りたいです。。。。

10/17/2010

HTC Trophy Windows Phone 7 (8GB) 受付開始!

ついに!HTC Trophy Windows Phone 7 (8GB) の受付が expansys.jp で開始されているようです。

HTC Trophy Windows Phone 7 (8GB) 48,081円 ですよ。すごい気になる価格ですね。

やっぱり、実機で動かしたいですし。

SHINO-BLOGにも紹介されているように多くの種類があるので迷います。

・SHINO-BLOG
http://blogs.shintak.info/archive/2010/10/12/54725.aspx

10/15/2010

Windows Phone 7 の Silverlight で3Dアプリ開発 Kit3D を使ってみる! ②

では早速 Kit3D を使用した Silverlight のWP7アプリケーションを作ってみます。

「 Visual Studio 2010 Express for Windows Phone 」を起動して、「 New Project 」から「 Windows Phone Application 」を選択します。Name は好きな名前を書いてよいのですが、説明しやすくするために「 WP7Kit3DTest 」とします。



次に、「 Solution Explorer 」からソリューションを選択してマウスの右クリックで「 Add 」の「 New Project 」を選択します。



Add New Project では「 Windows Phone Class Library 」を選択して、Name を「 Kit3D 」として「 OK 」をクリックします。



以下のURLのCodeplexからKit3DのSourceCoreをダウンロードしてきます。

http://kit3d.codeplex.com/SourceControl/list/changesets

Codeplex からダウンロードしてきた Kit3D を展開して、フォルダ内の「 Windows 」フォルダ、「 Util 」フォルダ、「 Object 」フォルダ、「 Math 」フォルダをそれぞれ、「 Solution Explorer 」の「 Kit3D 」プロジェクトにドラッグアンドドロップします。



不要なファイルは消します。



そして、一度Kid3Dクラスをビルドしてみます。「 Solution Explorer 」の「 Kit3D 」プロジェクトをマウスの右クリックで「 Build 」を選択します。



右下に「 Build succeeded 」と表示されれば成功です。



次に初めに作成した WP7Kit3DTest プロジェクトから Kid3D を参照できるように設定します。「 Solution Explorer 」の「 WP7Kit3DTest 」内の「 References 」で右クリックして「 Add Reference... 」を選択します。



Add Reference の「 Project 」タブを選択して、「 Kit3D 」を選択した後、「 OK 」ボタンをクリックします。これで WP7Kit3DTest アプリケーションで Kit3D を使うための準備が整いました。




この段階で、3Dオブジェクトをモデリングするのは大変だし、早く Kit3D のパワーを見てみたいので、Kit3D 内のテストコードを利用します。Kit3D 内の「 TigerTexture.xaml 」を「 Solution Explorer 」の「 WP7Kit3DTest 」プロジェクトにドラックアンドドロップします。



そして、MainPage.xaml.cs にコードを追加します。「 Solution Explorer 」の「 WP7Kit3DTest 」プロジェクト内の「 MainPage.xaml 」の左にある三角印をマウスでクリックして、csファイルを表示させ、表示された「 MainPage.xaml.cs 」をダブルクリックして編集します。



using に Kit3D.Windows.Controls を追加します。

using Kit3D.Windows.Controls;

MainPage() メソッド内に以下のように、Kit3D の Testコード内の TigerTexture を生成して、ContentPanel 内に配置します。

public MainPage()
{
    InitializeComponent();
    TestApp.TigerTexture t = new TestApp.TigerTexture();
    ContentPanel.Children.Add(t);
}

そして、いよいよ動かします。「 Debug 」メニューから「 Start Debugging 」を選択します。



おお!トラが動いてます。くるくると。


ちょっと横から



で、少しデザイン的にあれなんで、背景色をなくしてカメラ( PerspectiveCamera )をトラの近くに置いてみました。



素晴らしい! Kit3D!
Kit3D の一部を XNA に置き換えられれば高速化できるかな?

Windows Phone 7 の Silverlight で3Dアプリ開発 Kit3D を使ってみる! ①

今回から、Windows Phone 7(以下 WP7 )のアプリケーションを少しずついろいろ作成してみようと思います。

アプリケーションの種類
WP7 ではアプリケーションで使用するフレームワークが2種類用意されており、それぞれ特徴があります。

Silverlight
XAML と呼ばれる XML で UI を記述することができます。タイムラインのような概念がありキーフレームを設定することにより、キーフレーム間の画面を Silverlight が自動的に生成してくれるため、動きのあるアプリケーションを簡単に作ることができます。また、イベントを基にアプリケーションが動作します。

XNA
ユーザ向けの Xbox360 で使用されているフレームワークで、入力されたキーの取得や描画の準備などを行う Update メソッドと、実際に描画を行う Draw メソッドが繰り返し実行されるリアルタイム性の高いゲームなどのアプリケーションを作るための方法です。Silverlight と異なり、動きなどの全ての処理を自分で書かないといけないので大変ですが、ハードが持つ本来の力を引き出しやすいと思います。

性格の異なる2種類の方法があるわけですが、明らかに生産性が高いのは Silverlight です。まずは Silverlight で書いてみようと思います。

で、どのようなアプリを作成しようか考えるわけですが、少し昔話を。

私には3年前の2007年に完成させることができなかったアプリケーションがあります。当時、川西さん、高橋さんの「XAMLプログラミング WPFアプリケーションの概要と開発」を購入して、今まで見たことがない3Dアプリを Silverlight で作ってやる!と初心者らしく手っ取り早そうな WPF でプロトタイプを作りました。動作を確認してこれは面白いと思った後、配布用に Silverlight 版を作ろうとしたときです。悲劇がおきました。

なんと、Silverlight 1 には、3D関係のクラスが一切なかったのです。

色々調べてみるとSilverlight 2 に3Dの機能が付くとのこと、そこで諦めてXAML および Silverlight を触るのをやめてしまいました。「XAMLプログラミング WPFアプリケーションの概要と開発」も後輩に無期限で貸すことに。

そして3年後、Windows Phone 7 の登場です。3年もたてば Silverlight 2 は出ているだろうと、そしてバリバリ3Dが動作するようになっていると期待してSilverlight を調べ始めました。
なんと Silverlight 4 が出ているじゃないですか。それは素晴らしい。Silverlight 2 から2倍も進化していたのです。

で、いよいよ3Dアプリを作ろうとするわけですが、念のため機能チェックです。3年前に作成した XAML を Visual Studio 2010 の Windows Phone 7 Silverlight プロジェクトに入れてみます。しかし、3Dを表示させるための Viewport3D が名前解決されません。
調べてみると Silerlight 2 から追加された3D機能は、「擬似3D」と書かれており、Grid などのオブジェクトを回転させたりする機能でした。これでは、簡単に3Dオブジェクトを表示できないじゃないかと思い、セがサターンのように擬似3Dで3Dオブジェクトの表示させようと思いましたが、疲れそうなので XNA もしくは、別の手段を探すことになりました。

そこで登場するのが Kit3D です。このライブラリは、 WPF で使うことができる3Dのクラス持っており、WPF で書かれたプログラムを、そのまま動かすことができるようです。通常の Silverlight で動いているデモを見ても、私が求めているView3D と遜色ありません。

そして、後輩に無期限で貸している「XAMLプログラミング WPFアプリケーションの概要と開発」を再度読みたくなりましたが、新品では入手困難でしたので、古本で再度入手するのでした。

次回はいよいよ、Kit3D を Windows Phone 7 (エミュレータだけど)で動かしてみようと思います。

ちなみに、Windows Phone 7 は Silverlight 3 ベースのようです。

10/14/2010

Windows Phone 7 SDK をインストールして開発環境を構築

Windows Phone 7の開発環境について書いてみようと思います。

開発は、主にVisual Studio 2010 と Expression Blend 4 を使います。しかも、これらのツールは無料で手に入れることができるんです。普通のExpression Blend 4 とか買おうと思うと高いのにね。

ツールのダウンロードですが、Windows Phone 7 の Developer Portal が、何故かAPP HUBのサイトにジャンプしてなかなかダウンロードのページにたどり着けませんが、下記のURLからダウンロードすることができます。

Windows Phone Developer Tools RTW
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=04704acf-a63a-4f97-952c-8b51b34b00ce&displaylang=en

そして、便利なツールキットは下記URLからダウンロード

Silverlight for Windows Phone Toolkit - Sept 2010
http://silverlight.codeplex.com/releases/view/52297

で、勉強のためのトレーニングキットは下記のURLからダウンロード

Windows Phone 7 Training Kit for Developers - RTM Refresh
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ca23285f-bab8-47fa-b364-11553e076a9a

Windows Phone 7のアプリを販売するには Marketplaceだと思っていたんだけど、APP HUBなのかな?

 うむー。

次からは、実際にサンプルアプリを書いてみようと思います。

10/13/2010

Windows Phone 7 ローンチイベント

Windows Phone 7 のローンチイベントが先日行われました。今までの Windows CEベースの、Pocket PCやWindows Mobileとは異なり、デバイス単位にビルドされたロムを使用するのではなく、iPhoneのように、OSのイメージをマイクロソフトが配信するようです。また、マルチタスクの問題などWindowsCEを携帯端末で利用する際に問題だった箇所をすべて解消して、全く新しいプラットフォームとして生まれ変わっています。プログラムの実行方法も変わっているので、今までのWindows Mobileのアプリは動作しません。

ビデオ

 http://www.microsoft.com/presspass/presskits/windowsphone/videogallery.aspx?contentID=wp7_unveil01

iPhoneに似せて作ったOSではなく、完全なオリジナルです。また、.Net Frameworkをベースに、Silverlightと、XNAでアプリを作ることも、マイクロソフトの強みです。

Silverlightは、iOSでいうところのCoreAnimationかな。CoreAnimationというより、オーサリングツールも充実しているので、Flashともいえるかも。

XNAは、iOSでいうところのOpenGL ESですね。とはいえ、ゲームなどを作るための仕組みが入っている分、 OpenGL ESよりも格段に整っていて作りやすいと思います。XBOXのユーザ向けフレームワークでもあります。

これは楽しみですね。

10/08/2010

独自ドメインでBlogger(ブログ)

Wordpressの管理が面倒になってきたので、Bloggerにブログを引っ越しました。あまり活発に投稿していないのに管理に時間を割くのはねえ。

で、 ブログ(Blogger)の独自ドメイン化ですが、下記のURLを参考にしました。

How do I use a custom domain name on my blog?
http://www.google.com/support/blogger/bin/answer.py?hl=en&answer=55373

簡単に説明

1.Blogger側の設定
「設定」→「公開」→「切り替え先:カスタムドメイン」で独自ドメイン名を書いておきます。そして「設定を保存」。

2.DNSの設定
bindのCNAMEレコードを追加しました。
kentablog               CNAME   ghs.google.com.

3.少し待つ
DNSのTTLにもよりますが、少し待ちます。digコマンドで設定したドメインが引けたらOKです。

$dig kentablog.cluscore.com

........

;; QUESTION SECTION:
;kentablog.cluscore.com.                IN      A

;; ANSWER SECTION:
kentablog.cluscore.com. 3600    IN      CNAME   ghs.google.com.
ghs.google.com.         560745  IN      CNAME   ghs.l.google.com.
ghs.l.google.com.       40      IN      A       xxx.xxx.xxx.xxx

........ 
 
4.ブラウザで確認
おお!すばらしいGoogleさん。

7/08/2010

VPSでDNS

格安のVPS出現のおかげで、固定グローバルIPv4アドレスとIPv6アドレスが使えるようになったので、ついに念願のMyDNSを立てました。
でも、格安VPSのなかでも更に一番安いプランなので、メモリは256MBと非常に厳しい状況。
まあ。なんとでもなるんですけどね、1つでも固定グローバルさえ手に入れてしまえば。。。。

ということで、どこから繋いでも名前解決できるように、Dynamic DNSを利用します。

namedの起動オプション
で、借りたVPSですが論理CPUが16個と非常に多いためデフォルト状態でnamedをstartさせると、200MBぐらいメモリを確保してしまい、他のサービスに影響が出てしまうので、まずはnamedが使用するCPCの数を制限することによりメモリの節約を行います。

借りているVPSはCentOSなので、下記のファイルの最後の行にnamed起動時のOPTIONの設定を追加します。
# tail -1 /etc/sysconfig/named
OPTIONS="-n 2"

これで、50MBぐらいになりました。

TSIG鍵の生成
DNSへ登録要求してくるLinuxは、ISPに接続するたびにIPアドレスが変わってしまうので、DNS Sec用の鍵を作って、信頼関係を築いた方が良いでしょう。

# /usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -n HOST xxxxxxx.com

こんなファイルが2つ作られます。
Kxxxxxxx.com.+xxx+xxxxx.key
Kxxxxxxx.com.+xxx+xxxxx.private

named.confの設定
master serverのnamed.confにkey項目の追加と、動的にレコードを追加したいzoneにupdateの許可を設定します。key項目のsecretには、TGIS鍵で作成した"Kxxxxxxx.com.+xxx+xxxxx.key"ファイル内のBase64風なゴチャゴチャした文字列を設定します。
下の例では、update-policyにより、www.xxxxxxx.comだけ更新を行えるように設定しています。

# cat Kxxxxxxx.com.+xxx+xxxxx.key
xxxxxxx.com. IN KEY 512 3 157 xxxxsecretxxxx

key "xxxxxxx.com" {
        algorithm hmac-md5;
        secret "xxxxsecretxxxx";
};
zone "xxxxxxx.com" in {
        file "master/xxxxxxx.com";
        type master;
        allow-transfer { localnets; };
#       allow-update {
#               key xxxxxxx.com;
#       };
        update-policy {
                grant xxxxxxx.com name www.xxxxxxx.com. A;
        };
};

slave serverも変更します。
key "xxxxxxx.com" {
        algorithm hmac-md5;
        secret "xxxxsecretxxxx";
};
zone "xxxxxxx.com" in {
        allow-transfer { localnets; };
        masters { xxx.xxx.xxx.xxx; };
        file "slave/xxxxxxx.com";
        type slave;
        allow-update-forwarding {
                key xxxxxxx.com;
        };
};

PPPoE接続されたときにUpdateする場合
Bフレッツを使用したISPへPPPoE接続する場合は、PPPインタフェースがUPした時にDNSレコードの登録を行うように設定します。下記の例はUbuntsu910を使用している場合です(SUSEでもFedoraでもCentOSでも同じになると思います)。PPPのIPCPにより得られたIPアドレスは、PPPのip-upスクリプトの第四引数に渡されますので、そのアドレスをnsupdateします。
#cat /etc/ppp/ip-up.d/nsupdate
#/bin/sh
FQDN=www.xxxxxxx.com.
KEY=/usr/local/etc/dnsseckey/Kxxxxxxx.com.+xxx+xxxxx.private
LOCALIP=$4
NSUPDATE=/tmp/nsupdate$$.conf
echo "update delete $FQDN IN A" > $NSUPDATE
echo "update add $FQDN 3600 IN A $LOCALIP" >> $NSUPDATE
echo "" >> $NSUPDATE
nsupdate -k $KEY $NSUPDATE
rm $NSUPDATE

DHCPでIPアドレスが振られたときにUpdateする場合
YahooBBなどやUsenのISPを利用している場合は、多くがDHCPでアドレスが振られますので、if-upスクリプトが実行される時にDNSレコードの登録を行うように設定します。下記の例はUbuntsu910を使用している場合です。IPv6の場合はアドレスを決定するのが微妙なので、レコード追加してません。悩みどころですね。

# cat /etc/network/if-up.d/nsupdate
#! /bin/sh

set -e
env > /tmp/env.log

# Don't bother to restart sshd when lo is configured.
if [ "$IFACE" = lo ]; then
    exit 0
fi

# Only run from ifup.
if [ "$MODE" != start ]; then
    exit 0
fi

if [ "$ADDRFAM" != inet ] && [ "$ADDRFAM" != inet6 ]; then
    exit 0
fi

FQDN=www.xxxxxxx.com.
KEY=/usr/local/etc/dnsseckey/Kxxxxxxx.com.+xxx+xxxxx.private
LOCALIP="`/sbin/ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"
NSUPDATE=/tmp/nsupdate$$.conf
echo "update delete $FQDN IN A" > $NSUPDATE
echo "update add $FQDN 3600 IN A $LOCALIP" >> $NSUPDATE
echo "" >> $NSUPDATE
nsupdate -k $KEY $NSUPDATE
rm $NSUPDATE

named rootのパーミッション確認
DNSサーバはupdateを受け取ると、ルートディレクトリにジャーナルファイルを作成しますので、書き込みできるパーミッションを設定してください。
#chown -R named:named /var/lib/named

DNSへの登録が行われると、下記のようなジャーナルファイルが作られます。
/var/lib/named/master/xxxxxxx.com.jnl
/var/lib/named/slave/xxxxxxx.com.jnl