vectorに作者登録!

どうも~。こんばんは。

さてさて、本題の前に新着リンクのご紹介

初級プログラマ’sBlog
日記を中心につらつらと書いていきます。

アドレス:http://fukutoshi.dnsalias.net/Mypage/ptoshiyu/Blog/

クラスの友達のブログ。

1年のときからの友達で、かなりのつわもの。

なんというか、彼には天性と努力の両方を感じます。

就職も決まったようで、これからますますがんばって欲しいと思います。

さて、タイトルの件ですが、

実は今新しいアプリを開発しています。

ちょこっと紹介させていただくと、

ソフト名:Wi-FiController

概要:無線LANを通じてPDAからPCを操作するソフトウェア。

動作環境(サーバー):Windows 2000 or Windows XP
※要.NEt Framework 1.1

動作環境(クライアント):Windows Mobile 20003 SE異常
※要.NEt CompactFramework

開発環境:Visual Studio.NET 2003

開発言語:C#

種別:フリーウェア

開発状況:αバージョン完成。

主要機能:
キーの送信
クライアントはサーバーを起動しているPCのアクティブウインドウに対して

← → ↑ ↓ PageUp PageDown Space Enterを送信できる。
マウスカーソルの操作
クライアント上のマウスパッドエリアでスタイラスを操作すると、

その動きがにあわせてPC側のカーソルが移動する。

次期バージョンへの課題次項:
マウスのうごきのエミュレーションがへぼすぎるで修正。
特殊キー(Alt+F4など)の送信のサポート。
ユーザーがいくつか好きなキーを登録して送信出来るような機能の追加。
クライアントからPCの再起動、スタンバイ。
サーバーにインストールされているアプリの起動。
サーバーで実行中のアプリの終了。
サーバーのボリュームコントロールの操作。
Alt+Tab的な機能も欲しい。

こんな感じです。

まぁ何で作ろうかと思ったかっていうと、

寝転がったままテレビチューナーのチャンネルを変えたい!

でもリモートでつなぐのは仰々しいし、テレビなんか再生しながらリモートなんかできん。

じゃ好きなように作ろう。

それだけw

ですので、実質完成しています。

今使っているmAgicTVはチャンネルの変更はPageUp,PageDownで行えますので。

まぁ、そこは人間です。欲が出ます。

じゃぁ眠くなったらテレビ消したいよね。

消したけど、また見たくなったらつける機能欲しいよね。

本気で眠くなったらPC落としたいよね。

そういえば音楽聴きちなぁ。

メディアプレーヤーを起動しよう。

ってな具合で。。。

そして最後の欲。

公開したい

ってなわけで、日曜にvectorに作者申請。

今日登録完了メールが。

よーし。今月中に公開テストバージョンという位置づけで公開だ!

もしこんな機能ほしい!という方がいらっしゃいましたら

遠慮なくコメントください。

ただし実装できるかどうかは分かりません。

※開発中の画像
label1はご愛嬌・・・・。
灰色の部分をスタイラスでつつくと、PCのマウスも動きます。
現バージョンでは若干奇妙な動きをします。

開発中の画面(エミュレータで動かしているところ)

うーん。なんかしろーとくさいフォームだなぁ。。。

まぁまだまだβ以下ですので。。。

ではでは。またの機会に。

.NETのインターフェースについて。

※以下個人的な覚書です。
情報の正当性や、妥当性は保障しかねます。

普段Interfaceと聞くと、ついついJavaで見かけるようなInterfaceを想像します。

もちろん.NETにもJavaのような使用方法もありますが、

この記事では、インターフェースを型として宣言したり、メソッドの引数にするような使用方法を個人的にまとめます。

[開発環境]:Visual Stdio.NET 2003
[開発言語]:Visual Basic.NET(VB.NET)
[実行環境]:Windows Xp SP2

□Javaのinterfaceと同等のコード
‘Subプロシージャとプロパティを持つインターフェース
Public Interface IMyIF1
Property Msg() As String
Sub ShowMsg()
End Interface

※VB.NETではインターフェースに宣言できるのは、Sub,Functionおよびプロパティのみ。

‘IMyIFを実装した、IFTestクラス
Public Class IFTest
Implements IMyIF1
Private strMsg As String

Public Property Msg() As String Implements IMyIF1.Msg
Get
Return strMsg
End Get
Set(ByVal Value As String)
Me.strMsg = Value
End Set
End Property

Public Sub ShowMsg() Implements IMyIF1.ShowMsg
MsgBox(strMsg)
End Sub
End Class

ここまでのコードを見ると、言語の違いのみでJavaと等価といえます。
ただし、VB.NETに限って言うと、それぞれのプロシージャ、プロパティの
宣言の後に”Implements~”が書かれています。

これにより、実装するクラス側ではInterfaceで宣言したものと異なった名前
をつけることが可能です。

すでにご存知の方もいらっしゃると思いますが、
IDEが優秀なおかげ(?)で、Implements IMyIF1を記述した時点で、
実装コードは自動的に生成されます。

今回は僕が書き加えたのは、
・strMsgの宣言
・プロパティのGet,Setの中身。
・ShowMsgプロシージャの内容
のみです。

□インターフェースを型として宣言する。
まず、通常通りにIFTestクラスのインスタンスを生成してみます。

‘IFTestクラスのインスタンス生成
Dim IFTestObj As New IFTest

当然ながら、プロパティ「Msg」,プロシージャ「ShowMsg」を使用することができます。

次に何も考えずにIMyIF1を型として宣言してみましょう。

‘Interfaceの宣言
Dim IMyIF1Obj As IMyIF1

※InterfaceはNewすることは出来ません。

‘すると以下のように見事Interfaceのプロパティや、プロシージャにアクセスできます。
IMyIF1Obj.Msg = “test”
IMyIF1Obj.ShowMsg()

が、実行すると「オブジェクト参照がオブジェクト インスタンスに設定されていません。」

というエラーが出ます。
.NET触り始によく出したエラーですね(笑)

ここからが本題です。

上記コードでは、Interfaceのみを宣言した形になります。

ここで魔法の1行。

Dim IFTestObj As New IFTest
Dim IMyIF1Obj As IMyIF1
IMyIF1Obj = IFTestObj
IMyIF1Obj.Msg = “test”
IMyIF1Obj.ShowMsg()

あら不思議。

見事”test”とメッセージボックスが表示されましたね。

ここで僕の大好きな@ITから引用させてもらうと
@IT:連載 オブジェクト指向プログラミング超入門 最終回 オブジェクトをつなぐためのインターフェイス

インターフェイスを実装しているクラスは、そのインターフェイスの型の変数にキャストなしで代入することができます。

ふむふむ。

ここで@ITを呼んで理解できた人はすごい。

正直僕はいまだに理解してません(^^;;

本当にInterfaceを実装していればキャストせずに代入できるのか!?
ためしにもう一つInterfaceを作ってみます。

‘IFTestクラスに新たにShowMsg2を実装させるためのInterface
Public Interface IMyIF2
Sub ShowMsg2()
End Interface

実際にIFTestクラスに実装しましょう。
Public Class IFTest
Implements IMyIF1, IMyIF2
Private strMsg As String

Public Property Msg() As String Implements IMyIF1.Msg
Get
Return strMsg
End Get
Set(ByVal Value As String)
Me.strMsg = Value
End Set
End Property

Public Sub ShowMsg() Implements IMyIF1.ShowMsg
MsgBox(strMsg)
End Sub

Public Sub ShowMsg2() Implements IMyIF2.ShowMsg2
MsgBox(“ShowMsg2:” & strMsg)
End Sub
End Class

結局こんな感じになりました。

それではここから実験。

Dim IFTestObj As New IFTest
Dim IMyIF1Obj As IMyIF1
Dim IMyIF2Obj As IMyIF2

‘IMyIF1
IMyIF1Obj = IFTestObj
IMyIF1Obj.Msg = “test”
IMyIF1Obj.ShowMsg()

‘IMyIF1
IMyIF2Obj = IFTestObj
IMyIF2Obj.ShowMsg2()

どうでしょうか。
なんとなくわかっていただけたでしょうか?

正直本人すらよく分かってないものを一生懸命説明しても仕方ないんですが。。。

説明を書いている過程でひらめくかなと思った次第だったのですが、

あまりひらめきませんでしたorz

とりあえず、個人的なまとめとして、
・Javaのように使うことが出来る。
・Interfaceを実装しているクラスは、実装済みのInterfaceに代入できる。
・代入後、型として指定したInterfaceのメソッドや、プロパティを利用できる。

といったところでしょうか。

良いサンプルでなくて申しわけないのですが。

補足させていただくと、最近MSHTMLをよく触っていまして、
そこにIHTMLDocument,IHTMLDocument2,IHTMLDocument3,IHTMLDocument4,
IHTMLElement,IHTMLElement2などといったたくさんのインターフェースが
あったわけです。

この場合IHTMLDocument系のインターフェースはすべてHTMLDocumentClassというクラスが実装しています。(親クラスとでも言うんでしょうか)

それで何気なく、bodyにアクセスしたいときはIHTMLDocumentをつかうとか、
writeメソッドやwritelnメソッドを使いたいときはIHTMLElement2を使うなど、
適当にいじっていたわけです。

それで、どうも.NETというか、COM(?)のインターフェースは何か違うと感じ、
この記事にいたったわけです。

※もちろん、MSHTMLは8Mほどのファイルを再配布する必要があるので、
TypeクラスやとType.InvokeMembeなど駆使して利用していますが。。。

そのうちMSHTMLを使ったDOMHTMLでのHTML解析のサンプルも載せたいと思います。

最後に・・・

もしこの記事を読まれた方で、誤りを見つけられた方や、ご指摘のある方は、コメントの方へお願いしますm(_ _”m)ペコリ

まだまだ僕も勉強が足りてないなぁと思う今日この頃でした。

ではでは。またの機会に。

まゆたまらん・・・・

どうも~。こんばんは。

今日はやたら暑かったですね。

暑い時にはアイスに限ります。

アイス。

http://www.glico.co.jp/ice/cm/index_ma.htm

ま・まゆたまらん・・・。

個人的に君の最後の笑顔がたまらん。

ちなみにこの娘 緑 友利恵ちゃんっていうらしいです。

てっきりなんとかまゆって名前だと思い込んでました。

ブログはこちら
http://blogs.yahoo.co.jp/hajimeteno_000

それから、今日のyahooニュースにsoweluの記事が載ってましたね♪

ついでに貼っておきます。

私のターニングポイント 連載第7回 Sowelu「友だちのプッシュがなかったら、いまの私はなかったと思う」

個人的には前にどこかで読んだような気もしますね。

いきなり気温も上がり、ちょうど体調を崩しやすい時期ですので、体調管理に気をつけてください。

ではでは。またの機会に。

夜中に響く猫の鳴き声

夜中に、鳴く猫がいる。

窓を閉め切ってるので、こんなにはっきり聞こえるはずないんだが、

どうも人なつっこいような、どこか悲しそうに鳴いている気がする。

若干怖い。

ほら猫って化けるっていうし。。。

みゃー

みゃー

まぁなんてことはない。

Officeの猫だとさっき気づいたから。

保存するたびにドキッとしてた俺の緊張感を返せ。

やっぱりカイルにするかな。

お前クビ>ミミー

化けて復讐とか勘弁ね。。。

いきなり文書破壊とか。。。

まぁそんな感じのGW最終日でした。

数時間後には学校です。

ではでは。

またの機会に。

かっちゃった!

どうも~。こんばんは。

実はですね。

今日何気なくニュースサイトを見てたら・・・

九十九電機、フリースケールと協業で「8ビット・マイコン評価キット」を販売
http://japan.zdnet.com/news/ir/story/0,2000056187,20103867,00.htm?rss=ref

速攻通販サイトへ・・・。

「売り切れました」

Σ(T□T)

と、とりあえず次の販売予定はないのかと問い合わせメールを。

10分後・・・

WEB更新しました。
ぜひご確認ください。

との返信が!

対応はえーw

俺の個人的顧客満足度一気に加速!

と、いうわけで。

買いました。

買ってしまいました。

6000円だし。開発環境付いてくるし。
九十九の会員だから2000ポイント(2000円分)のキャッシュバックキャンペーン中だし。

制御系の開発やりたいし。

んでまぁとりあえず

目標:「携帯からIR経由で操作できるラジコンを作ろう!」
(激しく既出のよかーん。ならば青歯でwいやいや無線LANか?w)

そしてあわゆくばコンテストにだしちゃおう!

※コンテスト概要
http://www.freescale.co.jp/abstract/contest_e.html

で、大問題が。

俺プログラムはなんとか組めるけど、

電子工作とかやったことない。

中学校の技術の時間にタッチセンサー付き電気スタンドをつくったっきりだ。

てか、どう考えても半田付けとかいりそうな予感。

あれれ?

あれれれ?

そかはあれですよ。

同じ学校の電子科卒業生のY君にいろいろ教えてもらおうw

まぁこれが世に言う衝動買いなんだね♪

早く商品こないかな~♪

ちなみにこちらから購入できます。
http://www.rakuten.co.jp/tsukumo/435956/737054/737056/
いま見ると残り4個ですね。

僕が見たときは残り8個でした。

よーし。この連休中にいろいろ部品とか工具とかそろえるぞ!

楽しみ♪

やっぱりなんだかんだで男の子ですから。

ロボットとか、部品とかパーツとかそんな言葉に弱いのかな。

そんな感じです。

そして仲間募集w

ちょwwwおまいらwwww一緒に電子工作やろうぜwww

俺素人だけどw

子供の頃コロコロの後ろにのってた電子工作キットを思い出した今日この頃でした。

ではでは。
またの機会に。

なんとか。

どうも。こんにちは。

やっと風邪が治ったんですが、

今日は鼻水がひどい(笑)

朝から垂れ流し状態です。

まぁ熱があるよりはだいぶましなんですが。

とりあえず、だいぶ元気も出てきたし、天気もいいので

かるーく部屋の掃除でもします。

ではでは。またの機会に。

GW初日?

どうも。こんにちは。

やっと風邪も落ち着いてきました。

今日予定してくれてた、つとむちゃん、きたぐ、そのちゃんごめん!

また連休中に時間が合えばそのときにお願いしますm(_ _”m)ペコリ

そんなかんじで、なんとも出だしの悪いGW初日でした。

とりあえず今回のGWに特に予定もないので、出来れば部屋の掃除とコタツの片付けをしたいですね。

とりあえず、明日一日はゆっくり養生するつもりですが。

皆さんはGW初日どうお過ごしでしたか?

せっかくの大型連休ですので、有意義にすごしましょう♪

ではでは。

またの機会に。

うーん。

どうも。

寝込んでます。ともです。

いまふと目が覚めました。

熱が上がりました。

体温計曰く38度らしいです。

はからなきゃよかった。

それいにしてものどが痛い。

おそらく今回は風邪というより咽頭炎みたいですね。

つばを飲むだけで痛いですし、そのうえ咳がでるのでもっと痛いです。

とりあえず、飯を食べないとと思いつつも食欲0の今日この頃でした。

また少し寝ます。

風邪引いた。

どうもこんばんは。

風邪ひきました。

頭痛と咳。

普通にしんどいです。

とりあえず、食べたし、リポピタンDも呑んだし、

ポカリスエットも呑んだし、ビタミン剤も呑んだので。

なおるでしょう。

唯一の失敗は風邪薬がきれてたこと。

もう寝ます。

ではでは。またの機会に。。。

自称ネットワーク屋の独り言。 16th Seasons(Since 2005/01/11)