Welcome to MSDN Blogs Sign in | Join | Help

「すっかり更新が遅れて申し訳ありません」というセリフが決まり文句のようになってしまっております。本当にすみません。

次期バージョンのVisual Stuido(コードネームOrcas)の開発の方は、まだ軌道に乗り始めたばかりなのですが、むしろこういう初期段階のほうが忙しいものです。
・・・というのは言い訳ですね(笑)

さて、前回は「XMLを使いたいけれども新しい技術は使いたくない」という方のために、邪道な方法を紹介しましたが、今回はまともな方法でXMLを扱ってみたいと思います。

XMLは確かにテキストデータなので、前回テキストファイルとして読み書きすることも可能ではありますが、それではXMLの良さはほとんど生きてきません。
XMLデータは、あたかもデータベースにアクセスするかのように、必要なデータのみを持ってくるような使い方が、意味のある使い方かと思います。

そこで、今回の方法は、XMLをテキストデータとしてではなく、「オブジェクト」として、つまり実態がどういう構造なのかを知らなくても必要なデータが的確に引っ張ってこられるような物体として扱います。
そういうことをするための概念をXMLドキュメントオブジェクトモデル(XML DOM)と呼んでいます。

どうも、DOMなどという名前を聞くと難しそうですが、実際には簡単です。大雑把にいえば、やることは4つだけです。また必要なクラスはXmlDocument型、XmlNodeList型、XMLNode型の3つです。

  1. XmlDocument型のクラスをひとつ作る。(ここではxmlDocという名前にします。)
  2. そのxmlDocに、XMLデータを読み込む
  3. xmlDocから直接欲しいデータを引っ張ってくることはできないので、XMLNodeList型のクラスを作り、そこに先のxmlDocが示しているXMLデータの、実データを入れる。(ここではnodesという名前にします)
    このとき、必要なデータだけを取り出す(クエリする)ことも可能。
  4. 最後に、そのnodesにはいっているデータを表示したり、なにか処理したりするために、一つ一つのデータをループで取り出す。

たとえば、以下のようなXMLデータがファイルc:\temp\options.xmlに入っているとして、

<?xml version="1.0" encoding="utf-8"?>
<data>
  <option>
    <name>userid</name>
    <value>sa</value>
  </option>
  <option>
    <name>password</name>
    <value>testpass</value>
  </option>
</data>

このファイルの内容である<name>の値と<value>の値を表示させるためのコードは次のように書けます。

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("c:\\temp\\options.xml");
            string strXpathQuery = "/data/option";
            XmlNodeList nodes = xmlDoc.SelectNodes(strXpathQuery);
            foreach (XmlNode node in nodes)
            {
                foreach (XmlNode terminal_node in node)
                {
                    if (terminal_node.Name == "name")
                        Console.WriteLine( "名前は " + terminal_node.InnerText);
                    if (terminal_node.Name == "value")
                        Console.WriteLine( "値は " + terminal_node.InnerText);
                }
            }

簡単に説明します。
1行目で、XmlDocumentクラスの実体としてxmlDocを作り、2行目でそれに対してファイルからXMLデータを読み込んでいます。
3,4行目で必要なデータだけを絞り込んでXmlNodeListクラスの実体であるnodesにその結果を入れています。

ここで、string strXpathQuery = "/data/option";と記述されていますが、これが必要なデータだけを絞り込むための働きをするもので、XPathと呼ばれるものです。
XPathにはそれ自身の文法があり、非常に細かい設定が可能なのですが、ここでは簡単に紹介します。

もしもXPathに"/"と指定すると、そのXMLデータのもっとも高い位置から検索をします。この例のXMLファイルに"/"を使って検索すると、一回目に引っかかるのが<?xml version="1.0" encoding="utf-8"?>で、2回目が<data>~</data>になります。

もしもXPathに"/Data"と指定すると、<Data>と</Data>に囲まれた中だけを検索します。

もしもXPathに"/Data/Option"と指定すると、<Data>の中の、<Option>と</Option>に囲まれた中だけを検索します。この例では2つ<Option>~</Option>がありますので、2個ヒットします。

したがって、4行目までの段階で、nodesには<options>が2つ入っているような形になります。
      nodes[0] = (一個目の<opitons>)
      nodes[1] = (2個目の<options>)

5行目のforeachループで、nodesの中の2つの要素のそれぞれに対して処理をするようにしてます。

6行目のループではさらに、一個の<option>の中の、<name>と<value>を取り出しています。Name はタグの名前を、InnerTextはその内容を表わしています。

      

すっかり更新が滞ってしまいました。
Visual Studio2005を出荷して一息つけるかと思いきや、TeamFundationやWinFx、そして次期バージョンのVisualStudioと、プロジェクトが目白押しです。

さて、今回はちょっとだけ、邪道なテクニックを考えて見ます。

XMLファイルを、DOMなどの特別な知識なしで扱う方法です。
ここ数年、XMLのサポートは避けて通れないものになりつつあります。
しかし、新しいことを覚えている暇がない、それほど大規模なデータをXMLで扱うわけでもないのに大掛かりな仕組みはいらない、と思っていらっしゃるかたもいるかと思います。
そこで今回は、そういう方のために(場つなぎ的な方法ではありますが)、新しい知識なしでXMLファイルを扱う方法を取り上げて見ます

この方法は、大きなXMLファイルを使ってデータ処理をしたりするようなケースでは使い物になりませんが、たとえば、数十行程度のXMLファイルから、ちょっとしたデータを入力するだけならば使えるかと思います。

例: 次のようなXMLファイルを読み込みたいとします。
<Data>
 <Input>C:\Test\NyuuryokuData.txt</Input>
 <Output>C:\Test\SyutsuryokuData.txt</Output>
 <Operation>Copy</Operation>
</Data>

3つのデータ(Input, Output, Operation)が格納されているだけの、非常に単純なXMLファイルです。
この程度ならば、とりあえず普通にテキストファイルとして読み込んで、その中から必要な部分だけを取り出せばことが足りそうです。

そこで、以下のような方法でXMLファイルをテキストファイルとして読み込んで、必要な部分を取り出してみます。
1.まずXMLファイルに格納されているすべてのデータをString型変数xmlbufに読み込む。
2.たとえば<Input></Input>で囲まれているデータが必要な場合、<Input>という文字列を、xmlbufの中から探す。
3.その<Input>の次の文字から先を必要なデータとみなして、そこから</Input>が見つかるまでをString型変数parameterに取り出す。
4.parameterに欲しかったデータが格納されている。

・・・特に難しいことをするまでもなく、とりあえずXMLファイルを扱っている(ような気分??)のと同等な処理を実現できます。

 以下が、それをC#でコーディングした例です。途中に改行やスペースが入っていても問題ないように、それらを空データに置き換えています。

        static string get_parameter_from_xml(string xmlfilename, string target_tag)
        {
            string xmlbuf = "";
            StreamReader sr = new StreamReader( xmlfilename );
            while (sr.Peek() != -1) xmlbuf += sr.ReadLine().Replace("\r\n", "").Replace(" ", "");
            sr.Close();
            int p1 = xmlbuf.IndexOf("<" + target_tag.ToLower() + ">");
            if (p1 < 0)
                return "";
            p1 = p1 + target_tag.Length + 2;
            int p2 = xmlbuf.IndexOf("</" + target_tag.ToLower() + ">", p1);
            string parameter = xmlbuf.Substring(p1, p2 - p1 );
            return parameter;
        }

 

大変遅くなってしまいましたが、Webダウンロード版がやっとアップロードされました。

http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

なお、店頭でC#Expressを購入すると税抜き4800円で書籍つきとなります。Webからのダウンロードですと、もちろん書籍はつきませんが1年間は無料で入手できます。

また、無料で入手されたC# Expressを使って開発したものを商用として販売しても、とがめられることはありません。

 

私自身、製品版が完全にWebにアップロードされるまではあまり積極的にこのBlogを更新しなかったのですが、これからはもっと頻繁に更新するようにしたいと思っております。

日本語版のVS Whidbeyの製品群はおかげさまで今月中旬に開発を完了し、MSDN Subscriberのお客様には既にCD/DVDのイメージが提供されております。

さて、問題のExpressですが、Webページからのダウンロードの準備のほうがまだ完全ではないようです。製品そのものはすでに完成しており、CDイメージはダウンロードできるようになっていますが、Webから直接Setupを実行する形式にする準備がまだ整っていない状態です。

お急ぎの方はCDイメージ(ISOファイル)をダウンロードしていただいて、CDライティングソフトなどを使用してCDを作成していただければ、すぐに製品版Expressを使用することもできます。

大変ご迷惑をおかけしております。
完全に準備が整うまで、今しばらくお待ちいただければと思います。

最低一ヶ月に一度は更新しようとしているのですが、結局いつも月末にばたばたと更新して、自分の架したノルマを達成したことにしているような形になってしまっております。すみません。

さて、英語版のVisual Studio 2005(Express含む)は今月の7日にお披露目されて、Express版は既にダウンロードして使うことができます。

 

日本語版の開発は、ただいま最終段階に入っています。

ついさきほど、今の時期でさえも直さなくてはならない(つまり非常に深刻な)最後と思われるバグの修正が入って、それを含んだ最終ビルドを構築しようとしています。もしもこのビルドをテストして、出荷停止になるような大きな問題が見つからなければ、そのビルドを元にCDイメージ、DVDイメージ、Webダウンロード用のファイルが準備され、量産されることになります。

(注:通常、出荷直前になると、お客さまにとって深刻な事態を引き起こすようなバグ、例えばデータが消えてしまうとかインストールができないとかいう問題以外は、直さないで次のバージョンに先延ばしにしたり、READMEに書いたりすることで回避します。)

さて、無事明日のビルドが本当に最終のビルドになるのでしょうか・・・・

 

   またしても更新が遅れてしまいました。。。可能な限り、前回までの記事を読んでいただかなくても大丈夫なように書きましたが、内容の都合上、(2)の記事をもしご覧になっていない方は、そこだけ簡単に見返していただく必要があるかと思います。よろしくお願いします。

 前回は、テキストボックス上の文字データを暗号化してファイルにセーブする処理を考えました。
 今回は、逆にそのセーブされたファイルからデータを読み込み、暗号化されたデータを復元して、再びテキストボックス上に再現する処理を考えたいと思います。

 読み込む処理のほうがむしろ簡単です。
 暗号化されているといっても、要するに2バイトで構成されている各文字の上位バイトと下位バイトを入れ替えてセーブされているということと、各バイトデータが右または左に1ビットローテーション(=1ビットシフトして、はみだした1ビットをあいたところに差し込むこと)されているだけですから、読み込み時にも同じようなことをすればいいはずです。つまり、2バイトずつ読み込み、その2バイトの上位と下位を入れ替えて、それぞれを暗号化時と逆方向にローテーションして、文字として正しいものにしてから、テキストボックスに貼り付けていけばいいわけです。

 流れとしては、以下のような形にしてみました。

  1. 暗号化されたファイルを、バイナリファイルとして開く
  2. 1バイト目を読み込み、変数high_8(バイト型)に入れる
  3. 2バイト目を読み込み、変数low_8(バイト型)に入れる
  4. 変数high_8を左に1ビットローテーションする (暗号化時には右に1ビットローテーションされていたのでこれで元に戻る)
  5. 変数low_8を右に1ビットローテーションする (暗号化時には左に1ビットローテーションされていたのでこれで元に戻る)
  6. 変数out_16(unshort型=2バイト長の変数)の上位バイトに変数low_8の内容を入れ、下位バイトに変数high_8の内容を入れる。(これで上位・下位の入れ替えができる)
  7. 変数out_16の内容を文字型とみなして、テキストボックスに貼り付ける。
  8. バイナリファイルの最後まで、2~7の処理を繰り返す
  9. ファイルを閉じる

上記4,5のローテーションには、前回の(2)の記事で作成した関数my_rotateを使用しています。
7の貼り付け対象テキストボックスはtextBox1です。ただし、下記のプログラムの中では、一旦ファイルから読んで復元された文字はすべて変数testbufに入れて、ファイルを閉じた後でテキストボックスにコピーしています。

それでは、以下にプログラムリストを掲示します。 

FileStream fs = new FileStream(filename, FileMode.Open);
BinaryReader br = new BinaryReader
(fs);

string testbuf = ""
;
while
(br.PeekChar() != -1)
{
   byte
high_8 = br.ReadByte();
   byte
low_8 = br.ReadByte();
   my_rotate(
ref high_8, "left"
);
   my_rotate(
ref low_8, "right"
);
   ushort
out_16 = high_8;
   out_16 = (
ushort
)((out_16 << 8) | low_8);
testbuf +=
String.Format("{0}", (char
)out_16);
}
br.Close();

textBox1.Text = testbuf;

仕事があまりにも忙しく、すっかり更新する機会を逸していました。
今回は、前回の内容をあまり読んでいただかなくても大丈夫なように書きたいと思います。

まずは、テキストボックス上に書かれたテキストデータを、暗号化してファイルにセーブするための処理を考えたいと思います。

流れとしては、以下のようにしてみました。

  1. テキストボックスの内容を、1文字単位で拾ってくる。
  2. 一文字は2バイトである。.NETFrameworkでは、文字列はUnicodeで内部的に保存されているため、一文字は全角文字も半角文字も、2バイトになる
  3. その一文字の上位1バイトと、下位1バイトを別々の変数にそれぞれ入れる。
  4. それぞれの変数の内容を暗号化する(ここでは簡単に、ローテーションを使います)
  5. 暗号化の終わった2つの変数を、再び合成する。ただし、本来上位に入るべき変数の内容を下位に、下位に入るべき変数の内容を上位に入れるようにして、暗号度を高める
  6. この合成した内容を、ファイルに書き込む
  7. 上記の処理を、テキストボックスの文字の全てに対して行う

さて、上記の流れのうち、4の暗号化の部分がポイントになってきますが、ここでは変数の内容(8ビット)を1ビット、右か左にローテーション(シフトして、はみ出したビットを空き部分に入れる)することで、そのままでは文字として表示できないようにする方法を取ります。
この部分は別途関数を作ることで、全体を分かりやすいものにしたいと思います。

        public static void my_rotate(ref byte target, string direction)
        {
            if (direction.ToLower() == "right")
            {
                int onebit = (int)target & 0x0001;
                target = (byte)((int)target >> 1);
                if (onebit != 0)
                    target = (byte)((int)target | 0x0080);
                else
                    target = (byte)((int)target & 0x007f);
            }
            else //left
            {
                int onebit = (int)target & 0x0080;
                target = (byte)(target << 1);
                if (onebit != 0)
                    target = (byte)((int)target | 0x0001);
                else
                    target = (byte)((int)target & 0x00fe);
            }
        }
この関数は、第一引数に、ローテーションしたい変数(Byte型)を渡し、第二引数には"left"か"right"を渡すことで右ローテートなのか左ローテートなのかを指定します。


それでは全体の処理です。

            FileStream filename = new FileStream(common.file_location, FileMode.Create);
            BinaryWriter bw = new BinaryWriter(filename);
            string buf = textBox1.Text;

            for (int i = 0; i < buf.Length; i++)
            {
                ushort a = buf[i];
                byte high_8 = (byte)((a & 0xFF00) >> 8);
                byte low_8 = (byte)(a & 0x00FF);
                my_rotate(ref high_8, "right");
                my_rotate(ref low_8, "left");
                ushort out_16 = low_8;
                out_16 = (ushort)((out_16 << 8) | high_8);
                bw.Write(out_16);
            }
            bw.Close();

 インストールの話から時間がたってしまいましたが、今日こそは何か作って見ようと思います。

 ありきたりに「簡易エディタ」とか「画像Viewer」とかを作って無難に流すことも可能かとは思いますが、それでは面白くないので、本当に自分が欲しいツール、作りたいツールを作ることを前提にしていきたいと思います。
 欲しいツール・・・とりあえず今欲しいのは、人に見られたくないようなデータを書きとめておくことができるメモが欲しいですね。
 もちろんそういうツールは多数存在しますし、Officeの機能を使って機密データにすることも可能ですが、あくまで簡単に使えて、軽くて、かつデータは盗まれてもエディタなどでは見られない、そういうものにしたいと思います。

 では、今日は以下のような感じの、テキストボックスに書かれた文字をちょっとだけ細工して保存・読み込みするようなアプリケーションを作って見ます。


 とりあえず、Windowsアプリケーションを作成し、テキストボックスを貼り付け、ボタンを2つ貼ります。
 (この辺のコントロールの貼り付けは、あまり丁寧に書かないで先を急ぎます。)
 テキストボックスの名前はtextBox1、ボタンの名前は保存用ボタンがbutton1、読み込み用のボタンがbutton2です。
 テキストボックスの方は、プロパティのMultilineをTrueにして複数行の入力ができるようにして、ScrollbarsをVerticalに変更して、縦のスクロールバーが出てくるようにしました。


 さて、いよいよコードを書くことを考えます。まずは保存です。
 とりあえず、現在開かれているデザインの画面上で、先ほど作成した「保存」ボタンをダブルクリックしてください。
 保存ボタンを押した際に実行されるコードを書く画面になるはずです。
  今回のコードは、テキストボックス上の文字を、軽く暗号化?してファイルに保存するためのものです。
 単にテキストボックス上の文字を、テキストデータとしてTXTファイルに書き込むだけなら、StreamWriterというクラスを使って非常に簡単にファイル作成ができるのですが、今回はテキストデータとしてではなく、将来的には暗号化したデータとして保存したいので、バイナリファイルとして保存します。
 バイナリファイルを作成して書き込みをするには、BinaryWriterというクラスを使います。
 例えば、Dドライブの直下にTemp.binというファイルを作成して、16進数のFF08というデータを書き込みたいならば、こんな感じになります。

      FileStream filename = new FileStream("D:\\Temp.bin", FileMode.Create); 
      BinaryWriter bw = new BinaryWriter(filename); 
      ushort out_16 = 0xFF08; 
      bw.Write( out_16 ); 
      
bw.Close();

 1行目、2行目でファイルをオープンし、3行目で書き込み対象データを準備、4行目で書き込み、5行目でファイルをクローズしています。
 ただし、このコードを入力する前に、プログラム全体の先頭に、 using System.IO; と書く必要があります。
 これは、これからファイル系のクラスを使用するために、それらのクラスが含まれているNamespaceを結合するためのものです。前準備と思っていただければいいでしょう。

 それでは、これをベースに、今度はString型の変数に入っている漢字一文字を、バイナリファイルに出力するようにしてみましょう。
 String型の変数に入っている文字は、内部的にはUnicode形式で保存されています。したがって一文字で2バイト必要になります。また、String型の一文字目だけを参照するには、

      string buf = "山田"; 
      
ushort out_16 = (ushort)buf[0];

 のようにします。 ushortという型は2バイトの整数型、String型から取り出した1文字も2バイトなので、上記のようにキャスト(buf[0]の前に(ushort)と書くことで、buf[0]をあたかもushort型のようにだまして使うこと)をすれば代入ができます。

 では、これを先のコードと合成して、「山」一文字をバイナリファイルに出力するコードにすると

      FileStream filename = new FileStream(""D:\\Temp.bin", FileMode.Create); 
      BinaryWriter bw = new BinaryWriter(filename); 
      string buf = "山"; 
      ushort out_16 = (ushort)buf[0]; 
      bw.Write(out_16); bw.Close();

 こんな感じになります。 さて、せっかくですから保存されたファイルの中を見て見ましょう。メモ帳(Notepad.exe)を開いて、D:\Temp.binをドラッグ&ドロップしてみると、おそらく q\ のように、意味不明のデータが表示されたかと思います。
 まだ、暗号化もなにもしていないのに、ただUnicodeのままファイルに出力しただけなのに、なぜこうなるか?それは、本来ならば、Unicode文字列の先頭には16進数のFEというデータを付加して、この文字列がUnicodeであることを示さなければならないのですが、我々の作ったコードには、その16進数のFEを書き込む動作が入っていないからです。
 しかし、今回はこの方が好都合なので(簡単には読めないデータを作りたい)、そのまま使うことにします。

(つづく)

 やっと実際のインストールの話を書くことができます。

 C#Expressのインストールパッケージは約45個のファイルから構成されています。さらにそのファイルの中にはMSIファイル(インストールすると多数のファイルに展開される)も入っているので、インストール後のファイル数は結構な数になります。

 また、そのインストールパッケージの中には前途の.NET Framework2.0、ヘルプドキュメントのMSDN Express、SQLサーバーのExpress版、64ビットマシン用のアプリケーションの開発を支援するためのリモートデバッガが入っています。
 これらは本体のインストール時に、同時にインストールするかを選択することができます。(後から追加することももちろんできます。)

 それでは、インストールを開始して見ます。

 

 以下のように、ヘルプドキュメントとSQLサーバーのExpress版をインストールするかどうかは、途中で聞かれるので、自分で選択することができます。

 

 僕はドキュメントもSQLサーバーもインストールするように選択して、次へ進みました。
 すると、以下のように、Microsoft .NET Framework 2.0 とランゲージパック日本語版が自動的にインストールされるようになっていることがわかります。

 

 インストール中の画面です。

 

 インストールが完了すると、ユーザー登録を30日以内に済ませるように促せられます。
 ユーザー登録をWebで済ませて、無料のライセンスキーを取得しないと、C#Expressを使用できるようになりません。

 さて、次回からは実際のプログラム作成に入りたいと思います。

さて、C# Expressをインストールすると必然的に新しいバージョンの.NET Framework (バージョン2.0)がインストールされてしまいますが、既に以前のバージョンの.NET Framework、バージョン1.1や1.0が入っている場合は安全のためにアンインストールなどしたほうがいいのでしょうか?もしくはアンインストールしないでインストールすれば、勝手に上書きされて2.0になるのでしょうか?

素朴な疑問ですが、誰も自分のマシン環境を不安定にしたくないので、インストールは安全に行いたいものですよね。

答えは、.NET Framework2.0は、旧バージョンの.NET Framework1.1や1.0とは違うフォルダにインストールされますし、別製品として取り扱われますので、前のバージョンは特に気にする必要はありません。
なお、前のバージョンの.NET Frameworkは通常消すべきではありません。というのは、前バージョンの.NET Framework用に作られたソフトは、前バージョンの.NET Frameworkに依存して動作するからです。

WindowsがC:\Windowsにインストールされている場合、.NET Framework2.0をインストールすると、それらは
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215
にインストールされます。
旧バージョンの.NET Framework1.1は、
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
にインストールされていますので、干渉することはありません。

なお、.NET Framework1.1のインストールされているフォルダのサイズは約70MB、.NET Framework2.0は126MBでした。
(ただし1.1の方は、僕は日本語LangPackをインストールしていないので、若干小さくなっているものと思われます。)

こんにちは。

 僕は毎日このVisual Studio 2005(Whidbey)に関わることをしているのですが(それが仕事ですから当然ですね)、意外と直接この製品を使い込んで何かをする、という機会は少ないものです。

 それで、自分がメインで使用しているマシンにはいまだにこのWhidbeyBeta2をインストールしていなかったりします。
 これでは話にならない!と思い、早速インストールしてみました。
 僕が使用しているマシンは英語版のWindowsXP Proですが、日本語版Whidbeyを英語版XP上で動かしても、日本語Fontさえ正しくインストールされていれば、基本的には問題ないことになっています。(万が一僕がこの環境でバグを見つけてしまったら、それはそれで製品版までに直せるように報告したいと思います。。。)

 さて、C# Expressをインストールする前にあらかじめインストールしておかなければならないソフトなどは、WindowsXPを使っている限り特にありませんが、Windowsアップデートをかけてからインストールしたほうが無難です。
 WindowsXPはSP2以上が、Windows2000はSP4以上が適用されている必要があります。

 必要なハードディスクやメモリは、今までのVisualStudio.NETに比べれば、Express版に限って言えば軽いです。
 ハードディスクは1.3GBの空き容量が必要、メモリは最小128MB・推奨256MBが必要となっています。

 また、C# Expressをインストールすると、同時に.NET Framework2.0をインストールすることになります。
  .NET Frameworkとは、平たく言えばWindowsを拡張するためのもの(正しい説明はこちらをご覧ください)ですが、これから先、C# Expressを使って作成したプログラムはその.NET Framework2.0がインストールされていないと動作しません。
 したがって、もしもみなさんが自分でプログラムを作り、それを例えば友達のマシンで動作させたい、と思った場合は、その自作プログラム以外に、.NET Framework2.0を友達のマシンにインストールする必要があります。
 もちろん.NET Framework2.0は無料で再頒布することができますし、これをインストールしたために友達のWindowsが極端に遅くなる、ということはありませんのでご安心ください。
 なお、旧バージョンの.NET Framework1.0もしくは.NET Framework1.1とは共存できますので、それらをアンインストールする必要はありません。

 

 それでは次回、実際のインストールの様子を書きたいと思います。

はじめまして

マイクロソフト本社で、VisualStudioなどの開発ツールを開発するチームで、ソフトウェアローカリゼーションエンジニアとして働いています 山田昌良 です。

マイクロソフトに入社する前は、一人のユーザーとしてVisualStudioを使っていました。
ずいぶんとこの製品に思い入れを持ち、たくさんのプログラムを書いてきました。

今ももちろん仕事でこの製品を使っていますが、やはり開発の規模が大きいため、本来のプログラミングの楽しみや、ちょっと便利なツールを手軽に作る、というような機会が少なくなり、少しさびしく思っていました。

また、社内に閉じこもってばかりいると、本当のユーザーさんの気持ちや、ユーザーさんが製品に対して求めるものが見えなくなってしまうという危険もあります。

そこで、もう一度自分自身が一人のユーザーの立場に返り、ユーザーの視点からもう一度我々の製品を使い、あえて高価な製品ではなく無料で配布されているExpress版を対象にすることで、何か有益な情報をこのブログを通してみなさんにお伝えすると同時に、私自身も我々の製品をよりよいものにするためのきっかけが見つけられたら、と思い、このブログを立ち上げました。

どのくらいの頻度で更新できるかは保証できませんが(笑)、できるだけがんばって更新していきたいと思いますのでよろしくお願いします。

---
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。
本ブログ上での発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。

 

 
Page view tracker