Archive : 2008-05

MAY
16

サブドメインへBlogを移動

Published:2008-05-16 01:56:25 UTC

もしこのsharplab.netというドメインを長く使っていくならば(一応そのつもりだが)、www.sharplab.netにBlogを設置するのは将来的な運用の幅を制限しかねないなぁということで、Blogをblog.sharplab.netに移転しました。RSSを登録されている方は張り替えをお願いします。

MAY
15

1限中国語休講

Published:2008-05-15 09:27:58 UTC

2限も無いし、本屋も開いてないし、どーしよ?

MAY
13

Peace boat.

Published:2008-05-13 23:55:02 UTC

pap-0285-300x225

ワーイ、言ってやった、言っ てやった!このタイトルを使いたいが為だけに、バイトの行きしなに大さん橋まで行ってきた。写真は「クリッパー・パシフィック」、明日14日からの第六十二回世界一周の旅のためにPeace boatによってチャーターされた船。大さん橋ターミナルビルの脇を抜けて、船体が見えてきた時に「ピース・ボートの船ってこんなクリッパー・バウをしたスマートな船だったっけ?」という違和感を感じたのだが、それもその筈、家に帰って調べてみると、よくピース・ボートの広告で見慣れた「ザ・トパーズ」号は第六十回世界一周の旅をもって引退し、この「クリッパー・パシフィック」に代替わりしたのだとか。なるほど上空をカメラスタビライザーを載せたヘリが飛んでいた訳だ。

「クリッパー・パシフィック」の総トン数は22,954トンというので、21,903トンである客船三井の現「にっぽん丸」とほぼ同じと言えるようだ。自分は横浜市主催の横浜函館往復クルーズに中2の頃参加したことがあるが、その時の船が「にっぽん丸」で、ここ大さんのまさに同じ接岸位置だった。もう六年も前のことなので、船内のことは朧げにしか憶えていないのだけれど、沖合を航行中の夜中にライトを落としてみた夜空には想像を遙かに超えた星々が瞬いていたことは、未だ鮮明に記憶している。

test

さて反対側に接岸していたのは「ラプソディ・オブ・ザ・シーズ」。こちらはガチでNice boat.日本の客船では及びもつかない船容のこの船の総トン数は何と78,491トン!就航年は1997年で、モダンで優雅な外観が素敵。船内はこのようになっているらしいけれど、船内見学会もないので勿論外から眺めるだけ…。何時かこのような豪華客船に親を乗せてお返しをしたいなぁ・・・。

MAY
13

GOA WinForms

Published:2008-05-13 16:54:41 UTC

NETiKA TECH の Silverlight と Flash のコンポーネントが凄い-ナオキにASP.NET(仮)という記事で紹介されていたのだが、NETiKA TECHがGOA WinFormsという素晴らしいFlashとSilverlightのコントロールライブラリを公開している。

自分はAjaxに対してはGUIにHTMLを用いることからくる表現力の制約の面から否定的である。しかしFlashやSilverlightなどのRIA技術が発展してきたことによって、ソフトウェアをサービスとして配布するというSaaSのスタイル自体はいよいよ本格化する環境が整ってきたなと感じる。

MAY
13

iKnow300完

Published:2008-05-13 00:01:38 UTC

iKnow300語完了。そろそろDictationも真面目にやり始めるか・・・。

MAY
10

デザイン再変更

Published:2008-05-10 11:11:52 UTC

バイト先のIE6でこのサイトを表示したら、崩れていたので慌ててデザイン再変更。やはり自作するしかないか。

MAY
9

「動詞コロケーション1」完了!

Published:2008-05-09 01:06:52 UTC

iKnowの「動詞コロケーション1」というコースが完了。始めたのが4/11だから、大体四週間ほどか。他にも三つのコースを進めているが、なんとか順調にこなせている。iKnowについて何度かこのBlogでも触れたが、もう一度まとめとくと、iKnowは初心者から上級者向けまで様々なコースがそろっており、単語・熟語を学習するにはもってこいのe-Learningサイト。こちらでもshiroicaというidで通しているので、やっている方、始めた方は、是非フレンドリクエストを下さいな。

Visual studio 2008 Academic Editionでは、以前のversionとは異なり、Professional Editon相当の機能を与えられている。それを活用しないというのではなんとなくもったいない。そこで今回はProfessional Editon以上にのみ与えられている機能である、Visual Studio Tools for Office(VSTO)を使用したプログラミングに取り組んでみることにした。

今回のお題は「Power Pointのスライド送りをマウスジェスチャで出来るようにする」というもの。家に転がっていたVAIOの周辺機器カタログを見ていたところ、スライド送りがボタン操作で出来るプレゼン用マウス?なるものが発売されていることを知り、そんなものを買わないでもBluetoothマウスひとつあれば済むようにしたいな、という考えから。結局断念する結果になったが、一応メモとして。

プロジェクトの作成

image2 早速projectを作成。この際、.NET Framework3.5に切り替えておかないと、Office 2007向けのアドインのテンプレートが表示されない点に注意。Office 2003向けのアドオンは.NET Framework2.0で開発できるが、確かユーザーのOfficeのEditionが、Professional Edition以上か、バラ売り製品でないとダメ、つまり、Standard Edition や Personal EditionのOffice 2003ユーザーは使えない、という、正直理解しかねる制約があるので、ここは後方互換性を切り捨ててPower Point 2007アドインとして開発することにする。(2007ならEditionは問われない)

さて、そうしてテンプレートから生成されたソースコードは以下の通り。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;

namespace PPGesture
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        #region VSTO で生成されたコード

        /// <summary>
        /// デザイナ サポートに必要なメソッドです。このメソッドの内容を
        /// コード エディタで変更しないでください。
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }
        
        #endregion
    }
}読んでの通り、アドインがアタッチされるときにThisAddIn_Startupメソッドが呼び出され、アドインがデタッチされるときにThisAddIn_Shutdownメソッドが呼びだされるらしい。MSが配布しているサンプルなどを見ると、ThisAddIn_Startupメソッドが呼び出された時にカスタム作業ウィンドウなどの追加を済ませてしまうようである。

マウスジェスチャはスライドショーの実行中に取得したいので、とりあえずここでスライドショーの開始・終了を拾うイベントハンドラの登録を済ませる。

        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            this.Application.SlideShowBegin += new Microsoft.Office.Interop.PowerPoint.EApplication_SlideShowBeginEventHandler(Application_SlideShowBegin);
            this.Application.SlideShowEnd += new Microsoft.Office.Interop.PowerPoint.EApplication_SlideShowEndEventHandler(Application_SlideShowEnd);
        }IDEによって生成されるイベントハンドラは以下の通り。 

        void Application_SlideShowBegin(Microsoft.Office.Interop.PowerPoint.SlideShowWindow Wn) {
        }       
 
        void Application_SlideShowEnd(Microsoft.Office.Interop.PowerPoint.Presentation Pres) {
        }

さて、引数で渡されるMicrosoft.Office.Interop.PowerPoint.SlideShowWindowにMouseMoveとかのマウスイベントがあればよかったのだが、それが、無い。

参った。困った。仕方ないのでTimerでミリ秒単位でマウスの位置を右マウスボタンの押下状態を監視して代用することに。そのためにこさえたクラスがTimerBasedMouseGesture。image3

クラスダイヤグラムを表示するとこんな感じのクラス。これでスライドショー実行中のマウスジェスチャを取得できる見通しが立ち、ここまでは良かったのだが・・・、よく考えたらコンテキストメニューをキャンセルできないよorz

Power Pointでは、スライドショーの実行中に右マウスボタンを押下すると、コンテキストメニューが表示されるのだが、マウスイベントが取れないのだから、コンテキストメニューの表示をキャンセルすることも出来ない。というわけでこのアドオンも断念。誰か分かる方、解決策を授けて下さい・・・。アンマネージコードを使えば、解決できる・・・のか?

MAY
5

膨張するC#

Published:2008-05-05 13:15:08 UTC

最近C#を学び直しているのだが、.NET Framework1.1のころと比べ、出来ることが飛躍的に増えたんだなぁ。自分が少し情報を集めている技術だけでもWindows Forms 2.0、WPF、Silverlight、VSTO、XNA。他にもASP.NET 3.5、WCF、WFとか色々あり過ぎて、大学受験で離れていた自分は浦島太郎状態。ドッグイヤーって奴か・・・。

MAY
5

vary,via

Published:2008-05-05 12:06:06 UTC

varyという単語を初めて知った。「変わる、変化する、異なる、さまざまである」という意味も全部veryで覚えていた・・・。駄目過ぎだ自分・・・。

viaは発音が二通りあるのな。iKnowの「TOEIC基礎・リーディングセクション」で出てきたが、二つの例文で発音が違って気づいた。

iKnow万歳。もっと勉強しよう。