2010年05月

2010年05月31日

Hokuriku.NET Vol3無事終了しました!!

 昨年夏のWindows7勉強会を契機にしてスタートしたHokuriku.NET勉強会も3回目を迎えることができました。

 Hokuriku.NETは.NET系という非常に広範囲にわたる分野になるため、特定の技術を学ぶという点では不向きですが、何でもアリな雰囲気が逆に魅力だったりします。
 今回も.NETとはほとんど関係ないけど魅力的なセッションがありました(後述)。

 準備にあたっては、手配のほとんどを@kabakiyoさんに行っていただき、登壇予定も無かったため非常にリラックスして聞くことができましたw
 ありがとうございます。

開始前のネタ振り



 まずは開始の挨拶で@kabakiyoさんが、

 「今回の会場は営利目的禁止なのでよろしくお願いします」

 という、いわばネタの仕込みのような前振りからスタート。

 そのあとのスピーカーさんの書籍参考書籍紹介などのシーンで「営利目的じゃないですよw」と笑いを誘発、場を和ます役に立っていました。
 業師ですねー。

「F#とC#の比較ネタ(仮)」 小島 富治雄さん



 関数型言語の入門&C#でF#っぽいことをするテクニカルな内容という入門から応用まで上手くカバーしたセッション。
 Scala勉強会などで聞いたカリー化の挙動がなんとなくわかりました。まだまだ利点などはストンと来て無いので関数型は今後もウォッチが必要ですね。

 C#の構文もそういう書き方があるんだぁと教えていただくことしきり、C#勉強中の身としては弟子入りしたい気持ちです。

IMG_0256


 和室でのセッションもいい雰囲気でした。

「Windows Virtual PC の活用方法」さくしま たかえさん



 農家の嫁にして主婦ギークのさくしまさんのセッション。

 VirtualPCのXPモードがVistaモードもあるとか、XPモードは差分でいくつも作成可能とかお役立ち情報が沢山でした!!

 VHDイメージは中央サーバにおいて家中のどのPCからでもVHDブートで同じ環境を使えると便利だなぁとか考えて質問したところ、やはりできないもよう・・・WebOSってこんな感じかなぁ。

 足がしびれるから座布団を3枚用意することという契約条件で登壇いただいたのに忘れてましたすみませんっ。

 IMG_0258


 でも@mita_ekmywebさんがちゃんと覚えていてくださったので、途中から座布団3枚体制が整ったのでした!!

「Azure+JRuby(?)ネタ(仮)」 はしもとさん



 はしもとさんのお話はいつも「技術者というのはこうでなければなぁ」と感じさせてくれるハック的な内容で凄くためになります。

 今回はAzureでMySQLやRubyOnRailsを動かしたいという所から、Azureの実装に迫るためになるセッション。
 懇親会でも自宅のサーバーがIP足りなくなったという英雄譚(?)聞かせていただき非常にやる気がでました!!

 IMG_0260


 

「復習シリーズ?「暗号化概説」」 ピアズ・マネジメント(株)中林秀仁さん 筏井哲治さん



 Hokuriku.NETの名物セッションというか、もはや代名詞に近い気もするピアズ・マネジメントのお二人の関心あり、笑いありのセッション。

 ただし.NET要素は暗号の計算を「VisualStudioで行った(証拠となるソースコード無しw)」というくだりだけ。

 セッションの内容は暗号化という渋いねたかとおもいきや、歴史やストリー仕立てにすれば小難しい話も聞いてもらえるよね、という「はっ」と最後に気づかせてくれるお二人らしい内容。

 IMG_0263


 

「windows phone 7の開発をしてみよう」でむらなりかずさん



 四次元ポケット並みにネタが豊富なでむらさんおWindowsPhoneのセッション。
 自分がSilverlight開発者ということもあって、これは凄くためになりました。
 
 さっそく家に帰ってWindowsPhoneの開発環境を整えたりしましたので、後で入門的な記事を書きたいと思います。

 はやく実機の登場と、デベロッパー向けの手に入れやすい環境を臨みます。

 (熱中しすぎて写真を取るのを忘れてました・・・)

 

「jQuery と MVC で作る Web アプリケーション」 マイクロソフト 井上 章さん



 今回は出張が認められず自費で参加していただきました(感謝!!)マイクロソフト井上さんのセッション。
 
 jQueryというかJavaScriptの補完の効いたエディタは他に無いかも。
 VisualStudioでjQueryの補完を受けれる仕組みはVisualStudio用のメタデータをjQuery側で提供しているからとか、これでバージョンアップの際もデータを用意しさえすればコード補完等を受けれるとか、なるほど。

IMG_0265


 

スペシャルサンクス



 またまた高品質の配信を行ってくださいました@mita_ekmywebさん、MS井上さん登壇の交渉をしていただきました@PharaohKJさん、そして勉強会を盛り上げてくださいましたオーディエンスの皆様、本当にありがとうぎざいました。

 次回、Vol4は7月(頃)に福井で開催予定ですお楽しみに!!
 全国行脚したいと希望している高橋忍さんに猛アタック予定ですので、そちらもお楽しみに!!

 

追伸



 おっと忘れてました!!
 実はHokuriku.NETのロゴができました。

 hokurikunetlogo1


 ロゴ完成の経緯は後ほど紹介しようかと思いますが、@PharaohKJさんの会社のデザイナーさんに製作いただきました、こちらもありがとうございます。

(お詫び)
 TwitterIDを間違ってしまいました配信、そして座布団を用意いただいたのは@mita_ekmywebさんでした、すみません。
 誤って記載してしまった@kkamegawaさんにもお詫び申し上げます。

Silverlight:データバインディング入門その6(いろいろなコントロールへのバインディング)

 ちょっと時間が空いてしまいましたが、Silverlightのデータバインディングについての紹介の続きエントリー。
 今回かまとめとして、いろいろなコントロールへのデータバインドを行ったサンプルを紹介しようと思います。

 過去の記事はこちら、

 Silverlight:データバインディング入門その1
 Silverlight:データバインディング入門その2
 Silverlight:データバインディング入門その3
 Silverlight:データバインディング入門その4(コンバート)
 Silverlight:データバインディング入門その5(バリデーション)


サンプルを実行する



 まずはサンプルを見てみましょう。

 サンプルを見る

 OneTimeバインディングしただけなので、サンプルとしては動きがなくて面白味がないですね。
 これだけではバインディングしているかどうかも定かではないので早速コードを見てみましょう。

サンプルコード



 xamlコード
 c#コード

 注意したい点としては、バインディング対象のパラメータは

public String hoge;


 ではなく、

public String hoge {get; set;}


 のようにセッター、ゲッターが無いと動かない点です。
 何度か、このことを失念していて何で動かないのか悩んだことがあります。

 それ以外には、Silverlightのチェックボックスで未確定状態を含めた3つの状態を利用したい場合、バインディングパラメーターはBooleanではなく(Booleanだと2つの状態しか表現できませんよねぇ)、Nullableを使う必要があります。

次回



 次回はバインディングとはちょっと違いますが、各コントロールの表示を修正してみたいと思います。

2010年05月29日

C#:ほかの言語とのSwitch文の微妙な違い

 switch文でbreakを忘れるのはだれもが経験したことがあるエラーだと思う(大抵はリリース前に発見されると信じている)。

 以下のActionScript3プログラムは、他の多くの言語と同様に、

 breakを忘れたために、trace("hore");まで実行される。

var hoge:String = "hoge";

switch (hoge)
{
  case "hoge":
    trace("hoge");

  case "hore":
    trace("hore");
    break;

  default:
    trace("default");
    break;
}


C#では以下のようなコードはエラーになる。

switch(str)
{
  case "hoge":
    // break文がないのでエラーになる
    System.Diagnostics.Debug.WriteLine("hoge");

  case "hore":
    System.Diagnostics.Debug.WriteLine("hore");

    break;

  default:
    System.Diagnostics.Debug.WriteLine("default");
    break;
}

 
 エラーを回避したい場合はbreakするのが正しい動作の場合breakを、case "hore"の中も実行する(フォールスルーするというらしい)場合はgoto文を用いて以下のように書く、

case "hoge":
  System.Diagnostics.Debug.WriteLine("hoge");
  goto case "hore";

case "hore":
  System.Diagnostics.Debug.WriteLine("hore");

break;

default:
  System.Diagnostics.Debug.WriteLine("default");
  break;


 このプログラムは出力"hore"を得ることができる。

 基本的なことなのだけど、久しぶりにC#でコーディングすると「おやって」なってしまうのでメモ。

coelacanth_blog at 01:11C# この記事をクリップ!

2010年05月28日

Git:Win+MacでGitを使う際の備忘録その1

 自宅のローカルサーバーをCentOS5.5に入れ替えたついでにSubversionからGitにバージョン管理システムを移行開始した。

 勉強会などでノートパソコン片手に移動することも多くなったためローカルでバージョン管理できるGitの利便性に魅かれたのがその理由だ。

AddとCommit



 現在の構成はメインリポジトリとしてCentOS5.5のサーバーを利用し、クライアントはWindows(Eclipse+EGit)とMacOS X 10.6という構成。Macはコマンドラインから利用している。

 CVSやSubversionに慣れていると、最初にちょいと戸惑うのがGitにはAddとCommitという2つの状態があることだ。

 Gitのリポジトリにコミットする場合は、まずAdd(登録準備のようなものか)してからCommitする。
 コマンドラインだと、

#git add index.html


#git commit index.html


 一人でやっているとaddとcommitという段階がまどろっこしい気もする(ワンコマンドでcommitすることもできるんだけど、仕組み的に)が、公開リポジトリなどの場合にこの2段階あるのが便利に働くのだろうなぁと推測。

 Subversionだとバージョンが1.2.3とインクリメントされてついていくのだけどGitはSHA-1でハッシュ化された数字を使っており直感的には順番が把握できない。
 この点はちょっと不便な気がする。



PHP:EclipseでCakePHPプロジェクトをインポートすると構文エラーが大量発生する場合

JavaScript問題 エラー



 PHPプロジェクトの作成する際に「JavaScriptサポートを使用可能にする」にチェックを入れるとJavaScriptの検証が追加されdebug_kitなどを使う場合に大量にエラーがでる。


screen


(クリックで拡大)

 新規PHPプロジェクトを作成する際に上画像のチェックボックスを外すとエラーはでない。

 プロジェクト作成後もナビゲーターのコンテキストメニューなどからJavaScriptサポートは追加可能。


HTML問題 or XML問題エラー




 screen2


(クリックで拡大)

 Eclipse全体の設定の「検証」からも変更できるが、HTMLとXMLの検証を外すのは場合によりけりなので個別に検証を外す場合の方法。

 プロジェクトエクスプローラーなどのコンテキストメニューからプロジェクトを選択して右クリック→「プロパティ」→「検証」欄で、「プロジェクト固有の設定を可能にする」にチェック。
 HTML構文やXMLバリデーターなどのチェックを外す。

 ちなみに設定を変えただけではエラーは消えないので、上タブの「プロジェクト」→「クリーン」などで一度検証を走らせてあげる必要がある。

 エラーは消えるけど、検証対象から外しただけなので、ご利用は計画的に…。


2010年05月24日

FlexでProgression4を利用する方法(CS4編)

 前回swcを用いてFlexでProgressionフレームワークを利用するサンプルを紹介した。

 したのだが・・・その後で重大なライセンス違反を発見してしまった。
 Progressionはライセンスとしてswf上で右クリックした際に「Built on Progression4」というようなライセンス表記が必要なのだが(FlashCSなどでプロジェクトを作成する場合自動で表示される)、自分のサンプルには表示されていない!!

screen


 Progressionクラスを初期化、生成する際に設定できるような気がするけど具体的な解決にはまだ至っていない。

 …とまぁ、前回の方法だと色々設定漏れなどがありそうなので今回はProgressionサイトで用意されているものを利用することにする。
 こちらの方が色々と準備されていて便利なのですがFlashCS4から生成する必要があるのと、Flexプロジェクトを生成するためSDKの違いで面倒なことになる可能性がある(ちょっとだけ面倒になるだけだ、ただそのちょっとが意外と抵抗あったりする…)。

拡張機能をインストールする



 さぁ、ここからはFlashCS4がインストールされている前提で進める。

 Progressionサイトのダウンロードページから「Progression 4 MXML 日本語版パッケージ」をダウンロードする。

 ダウンロードした「Progression4-ext-MXML-ja-CS3.mxp」をダブルクリックするとExtentionManagerに登録される。

 あとはFlashCSでProgressionプロジェクトを作成する要領で(Progressionは当然インストールされてるよね)新規プロジェクトを作成、sceen2


 「種類」の項目から「Progression4 MXML」が選択可能になっているはずだ。

 そのまま続けるとflaでは無くFlexプロジェクトが生成される。

 生成されたプロジェクトをFlexで読み込むと・・・

sceen3


 MXMLのApplicationやCanvasをCastしたクラスが定義されてますね。

 読み込んだプロジェクトをそのままパブリッシュすれば右クリックでライセンス条項が含まれていることがわかります。

 それでは良いProgressionライフを!!

 

FlexでProgression4を利用する方法(swc編)

 FlexBuilderでProgressionを利用する方法を紹介します。

 (※後日書くが、Flash用の拡張機能「Progression 4 MXML 日本語版パッケージ」を利用すれば今から紹介する手順のいくつかを省略できるが、この拡張機能はFlashCS4以降が必要とされる。)

 今回作成するサンプルは以下

 ページ遷移とかがスムーズじゃないのは自分のProgressionへの理解不足だと思われます。ボタンの文字が遷移時に一緒に半透明にならないのはSDKによってなったりならなかったりな感じ。

swcを読み込む



 まずは公式サイトのダウンロードページより「Progression 4 SWC 版パッケージ」をDLする。

 progression_swc_dl


 
 DLしてきた「Progression4.swc」をFlexBuilderの新規プロジェクトのlibs以下(パスが通っている場所ならどこでも)に配置します。

 set_libs



エントリポイントからシーンを読み込む



 まずはプログラムの最初に実行される部分を作成します。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:my="As.*" layout="absolute" minWidth="640" minHeight="480">
<my:EntryPoint />
</mx:Application>


 EntryPointクラスが実際にProgressionを利用始める起動部分です。

 ソースはこちら


Progression.initialize(new WebConfig());

var progression:Progression = new Progression("index", Application.application.systemManager.stage, indexScene);

// 開発用にデバック出力を行う
Debugger.addTarget(progression);

progression.sync = true;
progression.autoLock = false;

// indexSceneからはじめるよ
progression.goto(progression.syncedSceneId);


initializeメソッドを抜かすと以下のような例外が出力される。

#014: 環境設定が初期化されていない状態で Progression インスタンスを作成することはできません。

 この辺はクラスベースの開発と同じ感じで書ける。

Sceneを追加する



 上記コードを見ると大体予想がつくと思うが、次は

progression.goto(progression.syncedSceneId);

 で指定されたindexScene(コンストラクタで最初のシーンに設定した)に処理が移る。

 ソースコードの全文はサンプルを右クリックして表示することができるのでそこで確認してもらうことにして、indexScene.asの中でmxmlを利用する部分のコードを紹介。

 (それ以外はクラスベースのProgressionの開発と同様なので)


var index_scene_mxml:indexSceneMxml = new indexSceneMxml();
var index_cast_object:CastObject = new CastObject(index_scene_mxml);

this._casted_view = index_cast_object;
this._view = index_scene_mxml;

index_scene_mxml.addEventListener(FlexEvent.CREATION_COMPLETE, this._pageCreationCompleteEventHandler);

this.addCommand(
 [
  new AddChild(Application.application, index_cast_object)
 ]
);


 mxmlをProgressionの仕組みの中で利用するためにはChastObjectに渡してあげればよいことがわかる。

 今回のサンプルではmxmlとSceneObjectを1対1で対にして構築してある。mxmlはデザイナービューでデザイナーが触りやすいようにスクリプトコードを極力書かないようにしている。

実はページタイトルが変わらない…



 今回のswcで作成するサンプルを自分で用意してみるとわかるのだが、シーンが変わってもページタイトルが変わらない。
 これは必要なJavaScriptファイルが無いためだが、これを用意するのはFlashCS系ツールでプロジェクトを作成した際に生成されるcommonsディレクトリ以下を利用するようにFlexのhtml-templateをいじる必要がある。

 FlashCS4以降が手元にある場合は、上記手段をとるよりも「Progression 4 MXML 日本語版パッケージ」からテンプレートプロジェクトを生成したほうが早かったりする。

 次回はこの「Progression 4 MXML 日本語版パッケージ」を使った場合の方法を紹介しようと思う。

 ちなみにProgressionのクラスベース開発にあたるコードは解説しなかったが、以下の書籍が参考になります。




2010年05月23日

FlexでProgressionフレームワークを使うケースについて

 昨日(5月22日)、FlashのフレームワークProgression勉強会に参加してきました。

 勉強会の模様は別の方がレポートしてくださるでしょうから、自分はFlexでProgressionを使うことについて考察したことを残しておきたいと思う。

 (ただし、Progression歴は高々一週間の人間だから参考程度にとどめて貰えればと思う。)

 自分が考えるFlex開発者(ここではFlashBuilderのようなIDEを使うプログラマーを想定)がProgressionを利用するケースは、

 ・Progressionへの造詣が深いメンバーが多い(さらにmxmlの知識がない)
 ・ディープリンクを簡単に実装したい
 ・FlexFrameworkを利用しない
 ・要求を聞く限りではFlashCSで開発したほうが良いがFlexしかない

 ディープリンクの利点を利用する以外は、Flexコンポーネントを使う場合はProgressionの利点はあまりないというのが実感だ。
 そもそもFlexコンポーネントを利用するようなケース(主に管理系のアプリケーション)においてページ遷移でエフェクトが重視されるケースは少ないし、mxmlにもエフェクト効果はある。

 Progressionへの造詣がない場合は、mxmlで同様なことができないか(FlashCatalystを触ってみると良いかも)を検討してからのほうが良いと思う。

 Flexコンポーネントを利用しないケースだと要求に応じてProgressionの検討は大いにありうると思う。簡単にページ遷移を管理するフレームワークが必要なケースはぜひ導入してみると良いかも。

 自分からみたProgressionはActionScriptで制御しなければいけないことをコンポーネントやタイムラインでスクリプト無しで実現できるのが最大な魅力であり、Flexで開発するような案件ではProgressionの魅力は少ないと言える。

 ・・・というのが、今の自分の感想だけど、これからもう少し触ってみてFlexで開発する方法を紹介したい。
 基本的な機能の利用は動作確認できた(勉強会の中で質問に回答くださった@niumさんありがとうございます)ので次のエントリで紹介しようと思います。

おまけ



 RIAを開発する場合大事なのはデザイナのツールとプログラマのツールに互換性があることだと思っている。

 FlexやSilverlightのxaml,mxmlがそれでデザイナービューで修正したものをそのままコードとしてプログラマーが触れるという点だ。

 今回のProgression勉強会でもこの分業が話題になったが、Progressionのコンポーネントスタイルでデザイナーが触ったものにプログラマーがどのようにスクリプトを組み込むのかのデモを2回、3回目のProgression勉強会で聞きたいものだ。

 なんだかProgressionについてあまり良いことを書いてないようだが、実はFlashCS系を勉強しなおそうかなぁなんてことを考えている。魅力があるフレームワークであることは間違いないのだ。

2010年05月21日

明日はProgression勉強会(キャンセルにつき残り一枠あり!!)

 明日は福井でProgression勉強会に参加します。
 この勉強会をきっかけに火曜日に書籍「ProgressionによるFlashコンテンツ開発ガイドブック」を購入した完全ににわかですが、Flex+Progressionについて意見交換できればいいなぁと思います。

 まだmxmlを表示できた程度なんで、明日までにどこまで調べられるかはたかがしれていますが。

 FlashCS系によるProgressionの威力を見せてもらうのも楽しみ。

 キャンセルがでて後一人申し込み可能なようなので明日福井でお話しましょうー。

 申し込みはこちら

2010年05月19日

Silverlight4(英語)の開発者用Toolが来ましたね

 ランチャーのBluewindを試しながら、

 Windows7の「プログラムとファイルの検索」がかなり便利になってるなぁ

 と迷い中のCoelacanthです。


 それはさておき、英語版のSilverlight4がついに来ました!!

 Microsoft Silverlight 4 Tools for Visual Studio 2010

 待ち望んでいた方、私のようにまだでないから3のおさらいしようとのんびり構えていたために、焦り気味な方さまざまかと思いますが。

 ようやくVisualStudio2010を本格的にいじり倒せる日々がやってきそうです。

 日本語版はもうちょい先で6月ごろになりそうという情報がちらほら。

coelacanth_blog at 00:17Silverlight近況 この記事をクリップ!
Profile

シーラカンス

Recent Comments
QRコード
QRコード
livedoor Readerに登録
RSS
livedoor Blog(ブログ)