とりこらぼ。

Learn from yesterday,
live for today,
hope for tomorrow.

目次

Blog 利用状況

ニュース

プロフィール

  • 名前:とりこびと
    とるに足らない人間です。

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

My を使うかどうか考える。その1。

Visual Basic 2005 には My という機能があります。開発の生産性の向上を謳っているようですが、実際のところどうなのでしょう?と、いうわけで自分なりに判断すべく実際にいろいろやってみます。おそらくマトモな資料になんかなりゃしませんけどねw

このあたり↓を参考にやります。

MSDN:My による開発(http://msdn2.microsoft.com/ja-jp/library/5btzf5yk(VS.80).aspx)

とりあえずVisual Studio 2005 でのインテリセンスを頼りに以下のようなコードを書いてみました。キーボードとマウスの状態を取得する内容です。

Imports System

Namespace Torikobito.DevelopmentWithMy
  Public Class Program
    <STAThread()> _     Public Shared Sub Main()
      If My.Computer.Keyboard.CapsLock Then
        Console.WriteLine("CapsLock が On ですね。")
      End If
      If My.Computer.Keyboard.CtrlKeyDown Then
        Console.WriteLine("Ctrl キーを押してますね。")
      End If
      If My.Computer.Mouse.ButtonsSwapped Then
        Console.WriteLine("マウスの左ボタンと右ボタンの機能を入れ替えましたね。")
      End If
      If My.Computer.Mouse.WheelExists Then
        Console.WriteLine("マウスにスクロール ホイールが付いていますね。")
      End If
    End Sub
  End Class
End Namespace

コレを My を使わずに書いてみますと・・・

Imports System
Imports System.Windows.Forms

Namespace Torikobito.DevelopmentWithoutMy
  Public Class Program
    <STAThread()> _     Public Shared Sub Main()
      If Control.IsKeyLocked(Keys.CapsLock) Then
        Console.WriteLine("CapsLock が On ですね。")
      End If
      If Control.ModifierKeys = Keys.Control Then
        Console.WriteLine("Ctrl キーを押してますね。")
      End If
      If SystemInformation.MouseButtonsSwapped Then
        Console.WriteLine("マウスの左ボタンと右ボタンの機能を入れ替えましたね。")
      End If
      If SystemInformation.MouseWheelPresent Then
        Console.WriteLine("マウスにスクロール ホイールが付いていますね。")
      End If
    End Sub
  End Class
End Namespace

・・・まぁまぁですね。(なにがだ?w

ただ、上の二つを書くに当たって大きな違いがありました。それは、My の方が直感的であることです。私の知識不足によるものでしょうが、Control クラスにIsKeyLocked メソッドModifierKeys プロパティがあることよりも(ましてやSystemInformation クラスの存在よりも)、My.Computer.Keyboard とタイプすることのほうがわかりやすいのが正直なところです。(My.Computer.KeyboardはMicrosoft.VisualBasic.Devices.Keyboard クラスです。)

しかし、おそらくこんな上澄みでは My を判断したことにはならないですね。なんだかいろいろ 'それっぽいもの' が出てきそうな予感がしますw なので次回以降に向けていろいろ調べてきます。(今からかよ!


# もし、これが.NET の誕生とともに存在していたなら数多くある批判も少しは減っていたかもしれませんね。(「こういう言語仕様なのだ。」というむりくりな納得を以ってw)後から出てきたものって考えると若干「なくてもできる部分はなくてもいいかも。」って気も。

投稿日時 : 2007年4月17日 16:21

Feedback

# re: My を使うかどうか考える。その1。 2007/04/17 16:27 シャノン

> Control クラスにIsKeyLocked メソッド や ModifierKeys プロパティがあること

嫌よねー。
あと MouseButtons とか MousePosition とか CompanyName とか ProductName とか。
Control と何の関係があるんだっつうの。

この前 CreateDirectory について書いたけど、IsKeyLocked もそう。
「キーがロックされているか?」っていう質問は、誰に対して投げるのが適切だろう?
答えは明らか。キーボードです。
だから Keyboard クラスの存在は高く評価したい。

# re: My を使うかどうか考える。その1。 2007/04/17 19:40 とりこびと

シャノン さん、コメントありがとうございます。

シャノンさんは来てくれると思っていましたww

>嫌よねー。
>あと MouseButtons とか MousePosition とかCompanyName とか ProductName とか。

イヤというか、不思議ではありますねw

>「キーがロックされているか?」っていう質問は、誰に対して投げるのが適切だろう?
>答えは明らか。キーボードです。

ですね。ただ、今回のエントリ的には別にMyぢゃなくて(Microsoft.VisualBasic.Devices.Keyboard クラスで)よかったのかなぁ?とも思っています。

>だから Keyboard クラスの存在は高く評価したい。

同意です^^

# re: My を使うかどうか考える。その1。 2007/04/18 10:21 シャノン

> 今回のエントリ的には別にMyぢゃなくて

確かに俺が評価したのは Keyboard クラスであって My ではないわな。
ところで My って、明らかにデスクトップ上の「マイコンピュータ」とか「マイネットワーク」を意識していると思うのは俺だけ?
#その割に「My.Documents」がねぇんだよな。

# re: My を使うかどうか考える。その1。 2007/04/18 11:17 επιστημη

要はMediatorパターンてことかいな。
素敵だし爽やかなヘルパーですが、後付けになっちまったのが残念ですわね。
System.Environmentとかなんとかいう形でFrameworkにハナっから装備しときゃいいのに、って思う。

# re: My を使うかどうか考える。その1。 2007/04/18 13:40 とりこびと

コメントありがとうございます。

>>シャノンさん

>ところで My って、明らかにデスクトップ上の「マイコンピュータ」とか「マイネットワーク」を意識していると思うのは俺だけ?

なんとも Visual Basic な、といったところですねw

>#その割に「My.Documents」がねぇんだよな。

ん~、どんなクラスいれます?w



>>επιστημηさん

>要はMediatorパターンてことかいな。

すんなりパターンの詳細がでてきません!orz
なおこさんのとこ逝ってきます。ww

>素敵だし爽やかなヘルパーですが、後付けになっちまったのが残念ですわね。

実装がカブるんですよね。まぁ便利機能はどんどん付加されていくものでしょうけど。

>System.Environmentとかなんとかいう形でFrameworkにハナっから装備しときゃいいのに、って思う。

System.Environment.Devices.Keyboardだったら利用者増えるかもしれませんねぇ。
そもそもKeyboard クラスの名前空間Microsoft.VisualBasic.Devicesってのも違和感がw

う~ん、Microsoft.VisualBasicのユーティリティなクラスってMicrosoft だから Framework につっこめたって感じがしないでもないです。

# re: My を使うかどうか考える。その1。 2007/04/19 1:27 アクア

私も実はMyの使い方…というか意図は気にはなってるんですが、まだそこまで調べてないんですよねぇ~^^;

# re: My を使うかどうか考える。その1。 2007/04/19 10:39 とりこびと

アクア さん、コメントありがとうございます。

>私も実はMyの使い方…というか意図は気にはなってるんですが、まだそこまで調べてないんですよねぇ~^^;

正直私今まで使ったこと無かったんですが、意外と'おもしろい'ですよ。
ただ、まだちょっと足りないかなって感じもしますけどね。

.NET Framework に My が上からガッツリのっかかる感じでも面白いと思います。
My として .NET Framework の名前空間を再整理する意味でも。

タイトル
名前
Url
コメント