<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Masayoshi's Blog - C# Express を使ってみよう</title><link>http://blogs.msdn.com/myamada/default.aspx</link><description>簡単な実用プログラムを作って遊んで見たい人、今はまだプロのプログラマではないけれど、将来プロになれたらいいなと思っている人、コンピューター系の学校などに通っている学生さんなど、初心者以上プロ未満の方を対象に、このブログをはじめました。
何かお役に立てるような情報が提供できたら幸いです。
&lt;BR&gt;
&lt;BR&gt;
Visual C# 2005 Express Edition は&lt;A Href="http://www.microsoft.com/japan/msdn/vstudio/2005/express/vcsharp/"&gt;こちら&lt;/A&gt;から無料でダウンロードしてご利用いただけます。

</description><dc:language>ja</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>XML DOM超入門</title><link>http://blogs.msdn.com/myamada/archive/2006/07/27/682004.aspx</link><pubDate>Fri, 28 Jul 2006 04:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:682004</guid><dc:creator>msmyamada</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/myamada/comments/682004.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=682004</wfw:commentRss><description>&lt;P&gt;「すっかり更新が遅れて申し訳ありません」というセリフが決まり文句のようになってしまっております。本当にすみません。&lt;/P&gt;
&lt;P&gt;次期バージョンのVisual Stuido（コードネームOrcas）の開発の方は、まだ軌道に乗り始めたばかりなのですが、むしろこういう初期段階のほうが忙しいものです。&lt;BR&gt;・・・というのは言い訳ですね（笑）&lt;/P&gt;
&lt;P&gt;さて、前回は「XMLを使いたいけれども新しい技術は使いたくない」という方のために、邪道な方法を紹介しましたが、今回はまともな方法でXMLを扱ってみたいと思います。&lt;/P&gt;
&lt;P&gt;XMLは確かにテキストデータなので、前回テキストファイルとして読み書きすることも可能ではありますが、それではXMLの良さはほとんど生きてきません。&lt;BR&gt;XMLデータは、あたかもデータベースにアクセスするかのように、必要なデータのみを持ってくるような使い方が、意味のある使い方かと思います。&lt;/P&gt;
&lt;P&gt;そこで、今回の方法は、XMLをテキストデータとしてではなく、「オブジェクト」として、つまり実態がどういう構造なのかを知らなくても必要なデータが的確に引っ張ってこられるような物体として扱います。&lt;BR&gt;そういうことをするための概念をXMLドキュメントオブジェクトモデル（XML DOM）と呼んでいます。&lt;/P&gt;
&lt;P&gt;どうも、DOMなどという名前を聞くと難しそうですが、実際には簡単です。大雑把にいえば、やることは４つだけです。また必要なクラスはXmlDocument型、XmlNodeList型、XMLNode型の３つです。&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;XmlDocument型のクラスをひとつ作る。（ここではxmlDocという名前にします。）&lt;/LI&gt;
&lt;LI&gt;そのxmlDocに、XMLデータを読み込む&lt;/LI&gt;
&lt;LI&gt;xmlDocから直接欲しいデータを引っ張ってくることはできないので、XMLNodeList型のクラスを作り、そこに先のxmlDocが示しているXMLデータの、実データを入れる。（ここではnodesという名前にします）&lt;BR&gt;このとき、必要なデータだけを取り出す（クエリする）ことも可能。&lt;/LI&gt;
&lt;LI&gt;最後に、そのnodesにはいっているデータを表示したり、なにか処理したりするために、一つ一つのデータをループで取り出す。&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;たとえば、以下のようなXMLデータがファイルc:\temp\options.xmlに入っているとして、&lt;/P&gt;
&lt;P&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;BR&gt;&amp;lt;data&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;option&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;userid&amp;lt;/name&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value&amp;gt;sa&amp;lt;/value&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/option&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;option&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;password&amp;lt;/name&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value&amp;gt;testpass&amp;lt;/value&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/option&amp;gt;&lt;BR&gt;&amp;lt;/data&amp;gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;このファイルの内容である&amp;lt;name&amp;gt;の値と&amp;lt;value&amp;gt;の値を表示させるためのコードは次のように書けます。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;XmlDocument xmlDoc&lt;/FONT&gt; = new XmlDocument();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;xmlDoc&lt;/FONT&gt;.Load("c:\\temp\\options.xml");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;string strXpathQuery = "/data/option";&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;XmlNodeList nodes&lt;/FONT&gt; = &lt;FONT color=#008000&gt;xmlDoc&lt;/FONT&gt;.SelectNodes(strXpathQuery);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (&lt;FONT color=#ffa500&gt;XmlNode node&lt;/FONT&gt; in &lt;FONT color=#0000ff&gt;nodes&lt;/FONT&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (XmlNode terminal_node in &lt;FONT color=#ffa500&gt;node&lt;/FONT&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (terminal_node.&lt;FONT color=#a52a2a&gt;Name&lt;/FONT&gt; == "name")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine( "名前は " + terminal_node.&lt;FONT color=#a52a2a&gt;InnerText&lt;/FONT&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (terminal_node.&lt;FONT color=#a52a2a&gt;Name&lt;/FONT&gt; == "value")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine( "値は " + terminal_node.&lt;FONT color=#a52a2a&gt;InnerText&lt;/FONT&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;簡単に説明します。&lt;BR&gt;１行目で、XmlDocumentクラスの実体としてxmlDocを作り、２行目でそれに対してファイルからXMLデータを読み込んでいます。&lt;BR&gt;３，４行目で必要なデータだけを絞り込んでXmlNodeListクラスの実体であるnodesにその結果を入れています。&lt;/P&gt;
&lt;P&gt;ここで、&lt;STRONG&gt;string strXpathQuery = "/data/option";&lt;/STRONG&gt;と記述されていますが、これが必要なデータだけを絞り込むための働きをするもので、&lt;STRONG&gt;XPath&lt;/STRONG&gt;と呼ばれるものです。&lt;BR&gt;XPathにはそれ自身の文法があり、非常に細かい設定が可能なのですが、ここでは簡単に紹介します。&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;もしもXPathに&lt;STRONG&gt;&lt;FONT color=#0000ff&gt;"/"&lt;/FONT&gt;&lt;/STRONG&gt;と指定すると、そのXMLデータのもっとも高い位置から検索をします。この例のXMLファイルに"/"を使って検索すると、一回目に引っかかるのが&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;で、２回目が&amp;lt;data&amp;gt;~&amp;lt;/data&amp;gt;になります。&lt;/P&gt;
&lt;P&gt;もしもXPathに&lt;STRONG&gt;&lt;FONT color=#0000ff&gt;"/Data"&lt;/FONT&gt;&lt;/STRONG&gt;と指定すると、&amp;lt;Data&amp;gt;と&amp;lt;/Data&amp;gt;に囲まれた中だけを検索します。&lt;/P&gt;
&lt;P&gt;もしもXPathに&lt;STRONG&gt;&lt;FONT color=#0000ff&gt;"/Data/Option"&lt;/FONT&gt;&lt;/STRONG&gt;と指定すると、&amp;lt;Data&amp;gt;の中の、&amp;lt;Option&amp;gt;と&amp;lt;/Option&amp;gt;に囲まれた中だけを検索します。この例では２つ&amp;lt;Option&amp;gt;~&amp;lt;/Option&amp;gt;がありますので、２個ヒットします。&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;したがって、４行目までの段階で、nodesには&amp;lt;options&amp;gt;が２つ入っているような形になります。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nodes[0] = （一個目の&amp;lt;opitons&amp;gt;）&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nodes[1] = （２個目の&amp;lt;options&amp;gt;）&lt;/P&gt;
&lt;P&gt;５行目のforeachループで、nodesの中の２つの要素のそれぞれに対して処理をするようにしてます。&lt;/P&gt;
&lt;P&gt;６行目のループではさらに、一個の&amp;lt;option&amp;gt;の中の、&amp;lt;name&amp;gt;と&amp;lt;value&amp;gt;を取り出しています。&lt;FONT color=#a52a2a&gt;Name&lt;/FONT&gt; はタグの名前を、&lt;FONT color=#a52a2a&gt;InnerText&lt;/FONT&gt;&lt;FONT color=#000000&gt;はその内容を表わしています。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=682004" width="1" height="1"&gt;</description></item><item><title>もっとも簡単にXMLファイルを扱う方法</title><link>http://blogs.msdn.com/myamada/archive/2006/04/09/572015.aspx</link><pubDate>Sun, 09 Apr 2006 22:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:572015</guid><dc:creator>msmyamada</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/myamada/comments/572015.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=572015</wfw:commentRss><description>&lt;P&gt;すっかり更新が滞ってしまいました。&lt;BR&gt;Visual Studio2005を出荷して一息つけるかと思いきや、TeamFundationやWinFx、そして次期バージョンのVisualStudioと、プロジェクトが目白押しです。&lt;/P&gt;
&lt;P&gt;さて、今回はちょっとだけ、邪道なテクニックを考えて見ます。&lt;/P&gt;
&lt;P&gt;XMLファイルを、DOMなどの&lt;STRONG&gt;特別な知識なしで&lt;/STRONG&gt;扱う方法です。&lt;BR&gt;ここ数年、XMLのサポートは避けて通れないものになりつつあります。&lt;BR&gt;しかし、新しいことを覚えている暇がない、それほど大規模なデータをXMLで扱うわけでもないのに大掛かりな仕組みはいらない、と思っていらっしゃるかたもいるかと思います。&lt;BR&gt;そこで今回は、そういう方のために（&lt;FONT color=#808080&gt;場つなぎ的な方法ではありますが&lt;/FONT&gt;）、新しい知識なしでXMLファイルを扱う方法を取り上げて見ます&lt;/P&gt;
&lt;P&gt;この方法は、大きなXMLファイルを使ってデータ処理をしたりするようなケースでは使い物になりませんが、たとえば、数十行程度のXMLファイルから、ちょっとしたデータを入力するだけならば使えるかと思います。&lt;/P&gt;
&lt;P&gt;例：　次のようなXMLファイルを読み込みたいとします。&lt;BR&gt;&amp;lt;Data&amp;gt;&lt;BR&gt;&amp;nbsp;&lt;FONT color=#0000ff&gt;&amp;lt;Input&amp;gt;&lt;/FONT&gt;C:\Test\NyuuryokuData.txt&lt;FONT color=#0000ff&gt;&amp;lt;/Input&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;FONT color=#0000ff&gt;&amp;lt;Output&amp;gt;&lt;/FONT&gt;C:\Test\SyutsuryokuData.txt&lt;FONT color=#0000ff&gt;&amp;lt;/Output&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;FONT color=#0000ff&gt;&amp;lt;Operation&amp;gt;&lt;/FONT&gt;Copy&lt;FONT color=#0000ff&gt;&amp;lt;/Operation&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&amp;lt;/Data&amp;gt;&lt;/P&gt;
&lt;P&gt;３つのデータ（&lt;FONT color=#0000ff&gt;Input, Output, Operation&lt;/FONT&gt;）が格納されているだけの、非常に単純なXMLファイルです。&lt;BR&gt;この程度ならば、とりあえず普通にテキストファイルとして読み込んで、その中から必要な部分だけを取り出せばことが足りそうです。&lt;/P&gt;
&lt;P&gt;そこで、以下のような方法でXMLファイルをテキストファイルとして読み込んで、必要な部分を取り出してみます。&lt;BR&gt;&lt;FONT color=#000080&gt;１．まずXMLファイルに格納されているすべてのデータをString型変数xmlbufに読み込む。&lt;BR&gt;２．たとえば&amp;lt;Input&amp;gt;&amp;lt;/Input&amp;gt;で囲まれているデータが必要な場合、&amp;lt;Input&amp;gt;という文字列を、xmlbufの中から探す。&lt;BR&gt;３．その&amp;lt;Input&amp;gt;の次の文字から先を必要なデータとみなして、そこから&amp;lt;/Input&amp;gt;が見つかるまでをString型変数parameterに取り出す。&lt;BR&gt;４．parameterに欲しかったデータが格納されている。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;・・・特に難しいことをするまでもなく、とりあえずXMLファイルを扱っている（ような気分??）のと同等な処理を実現できます。&lt;/P&gt;
&lt;P&gt;　以下が、それをC#でコーディングした例です。途中に改行やスペースが入っていても問題ないように、それらを空データに置き換えています。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static string get_parameter_from_xml(string xmlfilename, string target_tag)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string xmlbuf = "";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StreamReader sr = new StreamReader( xmlfilename );&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (sr.Peek() != -1) xmlbuf += sr.ReadLine().Replace("\r\n", "").Replace(" ", "");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sr.Close();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int p1 = xmlbuf.IndexOf("&amp;lt;" + target_tag.ToLower() + "&amp;gt;");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (p1 &amp;lt; 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p1 = p1 + target_tag.Length + 2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int p2 = xmlbuf.IndexOf("&amp;lt;/" + target_tag.ToLower() + "&amp;gt;", p1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string parameter = xmlbuf.Substring(p1, p2 - p1 );&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return parameter;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=572015" width="1" height="1"&gt;</description></item><item><title>C# Express Web ダウンロード版リリース</title><link>http://blogs.msdn.com/myamada/archive/2006/02/08/531511.aspx</link><pubDate>Thu, 09 Feb 2006 05:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:531511</guid><dc:creator>msmyamada</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/myamada/comments/531511.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=531511</wfw:commentRss><description>&lt;P&gt;大変遅くなってしまいましたが、Webダウンロード版がやっとアップロードされました。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/"&gt;http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;なお、店頭でC#Expressを購入すると税抜き４８００円で書籍つきとなります。Webからのダウンロードですと、もちろん書籍はつきませんが１年間は無料で入手できます。&lt;/P&gt;
&lt;P&gt;また、無料で入手されたC# Expressを使って開発したものを商用として販売しても、とがめられることはありません。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;私自身、製品版が完全にWebにアップロードされるまではあまり積極的にこのBlogを更新しなかったのですが、これからはもっと頻繁に更新するようにしたいと思っております。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=531511" width="1" height="1"&gt;</description></item><item><title>製品版C#Expressについて</title><link>http://blogs.msdn.com/myamada/archive/2005/12/29/508126.aspx</link><pubDate>Fri, 30 Dec 2005 03:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:508126</guid><dc:creator>msmyamada</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/myamada/comments/508126.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=508126</wfw:commentRss><description>&lt;P&gt;日本語版のVS Whidbeyの製品群はおかげさまで今月中旬に&lt;STRONG&gt;開発を完了&lt;/STRONG&gt;し、MSDN Subscriberのお客様には既にCD/DVDのイメージが提供されております。&lt;/P&gt;
&lt;P&gt;さて、問題のExpressですが、&lt;STRONG&gt;Webページからのダウンロード&lt;/STRONG&gt;の準備のほうがまだ完全ではないようです。製品そのものはすでに完成しており、CDイメージはダウンロードできるようになっていますが、Webから直接Setupを実行する形式にする準備がまだ整っていない状態です。&lt;/P&gt;
&lt;P&gt;お急ぎの方はCDイメージ（ISOファイル）をダウンロードしていただいて、CDライティングソフトなどを使用してCDを作成していただければ、すぐに製品版Expressを使用することもできます。&lt;/P&gt;
&lt;P&gt;大変ご迷惑をおかけしております。&lt;BR&gt;完全に準備が整うまで、今しばらくお待ちいただければと思います。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=508126" width="1" height="1"&gt;</description></item><item><title>日本語版Visual Studio 2005完成間近。。。</title><link>http://blogs.msdn.com/myamada/archive/2005/11/30/498702.aspx</link><pubDate>Thu, 01 Dec 2005 05:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:498702</guid><dc:creator>msmyamada</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/myamada/comments/498702.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=498702</wfw:commentRss><description>&lt;P&gt;最低一ヶ月に一度は更新しようとしているのですが、結局いつも月末にばたばたと更新して、自分の架した&lt;STRONG&gt;ノルマ&lt;/STRONG&gt;を達成したことにしているような形になってしまっております。すみません。&lt;/P&gt;
&lt;P&gt;さて、英語版のVisual Studio 2005（Express含む）は今月の７日にお披露目されて、Express版は既にダウンロードして使うことができます。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/visualcsharp/download/"&gt;&lt;FONT face=Arial size=2&gt;Visual C# 2005 Express&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/visualc/download/"&gt;&lt;FONT face=Arial size=2&gt;Visual C++ 2005 Express&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/vwd/download"&gt;&lt;FONT face=Arial size=2&gt;Visual Web Developer 2005 Express&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/vb/download/default.aspx"&gt;&lt;FONT face=Arial size=2&gt;Visual Basic 2005 Express&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/visualJ/download/"&gt;&lt;FONT face=Arial size=2&gt;Visual J# 2005 Express&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/vstudio/express/sql/download/"&gt;&lt;FONT face=Arial size=2&gt;SQL Server Express&lt;/FONT&gt;&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;日本語版の開発は、ただいま&lt;STRONG&gt;最終段階&lt;/STRONG&gt;に入っています。&lt;/P&gt;
&lt;P&gt;ついさきほど、今の時期でさえも直さなくてはならない（&lt;EM&gt;つまり非常に深刻な&lt;/EM&gt;）最後と思われるバグの修正が入って、それを含んだ最終ビルドを構築しようとしています。もしもこのビルドをテストして、出荷停止になるような大きな問題が見つからなければ、そのビルドを元にCDイメージ、DVDイメージ、Webダウンロード用のファイルが準備され、量産されることになります。&lt;/P&gt;
&lt;P&gt;（注：通常、出荷直前になると、お客さまにとって深刻な事態を引き起こすようなバグ、例えばデータが消えてしまうとかインストールができないとかいう問題以外は、直さないで次のバージョンに先延ばしにしたり、READMEに書いたりすることで回避します。）&lt;/P&gt;
&lt;P&gt;さて、無事明日のビルドが本当に最終のビルドになるのでしょうか・・・・&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=498702" width="1" height="1"&gt;</description></item><item><title>暗号化テキストエディタを作る（３）</title><link>http://blogs.msdn.com/myamada/archive/2005/10/31/487393.aspx</link><pubDate>Mon, 31 Oct 2005 21:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:487393</guid><dc:creator>msmyamada</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/myamada/comments/487393.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=487393</wfw:commentRss><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;またしても更新が遅れてしまいました。。。可能な限り、前回までの記事を読んでいただかなくても大丈夫なように書きましたが、内容の都合上、（２）の記事をもしご覧になっていない方は、そこだけ簡単に見返していただく必要があるかと思います。よろしくお願いします。&lt;/P&gt;
&lt;P&gt;　前回は、テキストボックス上の文字データを暗号化してファイルにセーブする処理を考えました。&lt;BR&gt;　今回は、逆にその&lt;STRONG&gt;セーブされたファイルからデータを読み込み&lt;/STRONG&gt;、暗号化されたデータを復元して、再びテキストボックス上に再現する処理を考えたいと思います。&lt;/P&gt;
&lt;P&gt;　読み込む処理のほうがむしろ簡単です。&lt;BR&gt;　暗号化されているといっても、要するに２バイトで構成されている各文字の上位バイトと下位バイトを入れ替えてセーブされているということと、各バイトデータが右または左に１ビットローテーション（＝１ビットシフトして、はみだした１ビットをあいたところに差し込むこと）されているだけですから、読み込み時にも同じようなことをすればいいはずです。つまり、２バイトずつ読み込み、その２バイトの上位と下位を入れ替えて、それぞれを暗号化時と逆方向にローテーションして、文字として正しいものにしてから、テキストボックスに貼り付けていけばいいわけです。&lt;/P&gt;
&lt;P&gt;　流れとしては、以下のような形にしてみました。&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;暗号化されたファイルを、バイナリファイルとして開く 
&lt;LI&gt;１バイト目を読み込み、変数high_8（バイト型）に入れる 
&lt;LI&gt;２バイト目を読み込み、変数low_8（バイト型）に入れる 
&lt;LI&gt;変数high_8を左に１ビットローテーションする　（暗号化時には右に１ビットローテーションされていたのでこれで元に戻る） 
&lt;LI&gt;変数low_8を右に１ビットローテーションする　（暗号化時には左に１ビットローテーションされていたのでこれで元に戻る） 
&lt;LI&gt;変数out_16（unshort型＝２バイト長の変数）の上位バイトに変数low_8の内容を入れ、下位バイトに変数high_8の内容を入れる。（これで上位・下位の入れ替えができる） 
&lt;LI&gt;変数out_16の内容を文字型とみなして、テキストボックスに貼り付ける。 
&lt;LI&gt;バイナリファイルの最後まで、２～７の処理を繰り返す 
&lt;LI&gt;ファイルを閉じる&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;上記４，５のローテーションには、前回の（２）の記事で作成した関数my_rotateを使用しています。&lt;BR&gt;７の貼り付け対象テキストボックスはtextBox1です。ただし、下記のプログラムの中では、一旦ファイルから読んで復元された文字はすべて変数testbufに入れて、ファイルを閉じた後でテキストボックスにコピーしています。&lt;BR&gt;&lt;BR&gt;それでは、以下にプログラムリストを掲示します。　&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt; fs = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt;(filename, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileMode&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;.Open);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;BinaryReader&lt;/FONT&gt;&lt;FONT size=2&gt; br = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;BinaryReader&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;(fs);&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; testbuf = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;""&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;while&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt; (br.PeekChar() != -1)&lt;BR&gt;{&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt; high_8 = br.ReadByte();&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt; low_8 = br.ReadByte();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;my_rotate(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ref&lt;/FONT&gt;&lt;FONT size=2&gt; high_8, &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"left"&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;my_rotate(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ref&lt;/FONT&gt;&lt;FONT size=2&gt; low_8, &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"right"&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ushort&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt; out_16 = high_8;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;out_16 = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ushort&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;)((out_16 &amp;lt;&amp;lt; 8) | low_8);&lt;BR&gt;testbuf += &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt;.Format(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"{0}"&lt;/FONT&gt;&lt;FONT size=2&gt;, (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;char&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;)out_16);&lt;BR&gt;}&lt;BR&gt;br.Close();&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;textBox1.Text = testbuf;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=487393" width="1" height="1"&gt;</description></item><item><title>暗号化テキストエディタ作る（２）</title><link>http://blogs.msdn.com/myamada/archive/2005/09/17/470812.aspx</link><pubDate>Sun, 18 Sep 2005 07:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:470812</guid><dc:creator>msmyamada</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/myamada/comments/470812.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=470812</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Tahoma&gt;仕事があまりにも忙しく、すっかり更新する機会を逸していました。&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Tahoma&gt;今回は、前回の内容をあまり読んでいただかなくても大丈夫なように書きたいと思います。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma&gt;まずは、テキストボックス上に書かれたテキストデータを、暗号化してファイルにセーブするための処理を考えたいと思います。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma&gt;流れとしては、以下のようにしてみました。&lt;/FONT&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT face=Tahoma&gt;テキストボックスの内容を、１文字単位で拾ってくる。&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Tahoma&gt;一文字は２バイトである&lt;STRONG&gt;。.NETFrameworkでは、文字列はUnicodeで内部的に保存されている&lt;/STRONG&gt;ため、一文字は全角文字も半角文字も、２バイトになる&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Tahoma&gt;その一文字の上位１バイトと、下位１バイトを別々の変数にそれぞれ入れる。&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Tahoma&gt;それぞれの変数の内容を暗号化する（ここでは簡単に、ローテーションを使います）&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Tahoma&gt;暗号化の終わった２つの変数を、再び合成する。ただし、本来上位に入るべき変数の内容を下位に、下位に入るべき変数の内容を上位に入れるようにして、暗号度を高める&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Tahoma&gt;この合成した内容を、ファイルに書き込む&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Tahoma&gt;上記の処理を、テキストボックスの文字の全てに対して行う&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;FONT face=Tahoma&gt;&lt;/FONT&gt;&lt;FONT face=Tahoma&gt;
&lt;P&gt;さて、上記の流れのうち、４の暗号化の部分がポイントになってきますが、ここでは変数の内容（８ビット）を１ビット、右か左にローテーション（シフトして、はみ出したビットを空き部分に入れる）することで、そのままでは文字として表示できないようにする方法を取ります。&lt;BR&gt;この部分は別途関数を作ることで、全体を分かりやすいものにしたいと思います。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void my_rotate(ref byte target, string direction)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (direction.ToLower() == "right")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int onebit = (int)target &amp;amp; 0x0001;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; target = (byte)((int)target &amp;gt;&amp;gt; 1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (onebit != 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; target = (byte)((int)target | 0x0080);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; target = (byte)((int)target &amp;amp; 0x007f);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else //left&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int onebit = (int)target &amp;amp; 0x0080;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; target = (byte)(target &amp;lt;&amp;lt; 1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (onebit != 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; target = (byte)((int)target | 0x0001);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; target = (byte)((int)target &amp;amp; 0x00fe);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;/STRONG&gt;この関数は、第一引数に、ローテーションしたい変数（Byte型）を渡し、第二引数には"left"か"right"を渡すことで右ローテートなのか左ローテートなのかを指定します。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;それでは全体の処理です。&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face=Verdana&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileStream filename = new FileStream(common.file_location, FileMode.Create);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BinaryWriter bw = new BinaryWriter(filename);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string buf = textBox1.Text;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; buf.Length; i++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ushort a = buf[i];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte high_8 = (byte)((a &amp;amp; 0xFF00) &amp;gt;&amp;gt; 8);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte low_8 = (byte)(a &amp;amp; 0x00FF);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my_rotate(ref high_8, "right");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my_rotate(ref low_8, "left");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ushort out_16 = low_8;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out_16 = (ushort)((out_16 &amp;lt;&amp;lt; 8) | high_8);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bw.Write(out_16);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bw.Close();&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=470812" width="1" height="1"&gt;</description></item><item><title>暗号化テキストエディタを作る（１）</title><link>http://blogs.msdn.com/myamada/archive/2005/08/02/446997.aspx</link><pubDate>Wed, 03 Aug 2005 06:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:446997</guid><dc:creator>msmyamada</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/myamada/comments/446997.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=446997</wfw:commentRss><description>&lt;P&gt;　インストールの話から時間がたってしまいましたが、今日こそは何か作って見ようと思います。 &lt;/P&gt;
&lt;P&gt;　ありきたりに「簡易エディタ」とか「画像Viewer」とかを作って無難に流すことも可能かとは思いますが、それでは面白くないので、本当に自分が欲しいツール、作りたいツールを作ることを前提にしていきたいと思います。 &lt;BR&gt;　欲しいツール・・・とりあえず今欲しいのは、人に見られたくないようなデータを書きとめておくことができるメモが欲しいですね。&lt;BR&gt;　もちろんそういうツールは多数存在しますし、Officeの機能を使って機密データにすることも可能ですが、あくまで簡単に使えて、軽くて、かつデータは盗まれてもエディタなどでは見られない、そういうものにしたいと思います。 &lt;/P&gt;
&lt;P&gt;　では、今日は以下のような感じの、テキストボックスに書かれた文字をちょっとだけ細工して保存・読み込みするようなアプリケーションを作って見ます。 &lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://www.k2.dion.ne.jp/~myamada/easyapp01.JPG"&gt;&lt;/CENTER&gt;
&lt;P&gt;&lt;BR&gt;　とりあえず、Windowsアプリケーションを作成し、テキストボックスを貼り付け、ボタンを２つ貼ります。&lt;BR&gt;　（この辺のコントロールの貼り付けは、あまり丁寧に書かないで先を急ぎます。）&lt;BR&gt;　テキストボックスの名前はtextBox1、ボタンの名前は保存用ボタンがbutton1、読み込み用のボタンがbutton2です。&lt;BR&gt;　テキストボックスの方は、プロパティのMultilineをTrueにして複数行の入力ができるようにして、ScrollbarsをVerticalに変更して、縦のスクロールバーが出てくるようにしました。 &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;　さて、いよいよコードを書くことを考えます。まずは保存です。&lt;BR&gt;　とりあえず、現在開かれているデザインの画面上で、先ほど作成した「保存」ボタンをダブルクリックしてください。&lt;BR&gt;　保存ボタンを押した際に実行されるコードを書く画面になるはずです。&lt;BR&gt;　 今回のコードは、テキストボックス上の文字を、軽く暗号化？してファイルに保存するためのものです。 &lt;BR&gt;　単にテキストボックス上の文字を、テキストデータとしてTXTファイルに書き込むだけなら、StreamWriterというクラスを使って非常に簡単にファイル作成ができるのですが、今回はテキストデータとしてではなく、将来的には暗号化したデータとして保存したいので、バイナリファイルとして保存します。&lt;BR&gt;　バイナリファイルを作成して書き込みをするには、BinaryWriterというクラスを使います。&lt;BR&gt;　例えば、Dドライブの直下にTemp.binというファイルを作成して、１６進数のFF08というデータを書き込みたいならば、こんな感じになります。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;FileStream filename = new FileStream("D:\\Temp.bin", FileMode.Create);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BinaryWriter bw = new BinaryWriter(filename);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ushort out_16 = 0xFF08;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bw.Write( out_16 );&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/B&gt;&lt;B&gt;bw.Close(); &lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;　&lt;/STRONG&gt;１行目、２行目でファイルをオープンし、３行目で書き込み対象データを準備、４行目で書き込み、５行目でファイルをクローズしています。&lt;BR&gt;　ただし、このコードを入力する前に、プログラム全体の先頭に、 &lt;B&gt;using System.IO;&lt;/B&gt; と書く必要があります。&lt;BR&gt;　これは、これからファイル系のクラスを使用するために、それらのクラスが含まれているNamespaceを結合するためのものです。前準備と思っていただければいいでしょう。 &lt;/P&gt;
&lt;P&gt;　それでは、これをベースに、今度はString型の変数に入っている漢字一文字を、バイナリファイルに出力するようにしてみましょう。 &lt;BR&gt;　String型の変数に入っている文字は、内部的にはUnicode形式で保存されています。したがって一文字で２バイト必要になります。また、String型の一文字目だけを参照するには、 &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string buf = "山田";&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/B&gt;&lt;B&gt;ushort out_16 = (ushort)buf[0];&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;　のようにします。 ushortという型は２バイトの整数型、String型から取り出した１文字も２バイトなので、上記のようにキャスト（buf[0]の前に(ushort)と書くことで、buf[0]をあたかもushort型のようにだまして使うこと）をすれば代入ができます。 &lt;/P&gt;
&lt;P&gt;　では、これを先のコードと合成して、「山」一文字をバイナリファイルに出力するコードにすると &lt;/P&gt;
&lt;P&gt;&lt;B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FileStream filename = new FileStream(""D:\\Temp.bin", FileMode.Create);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BinaryWriter bw = new BinaryWriter(filename);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string buf = "山";&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ushort out_16 = (ushort)buf[0];&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bw.Write(out_16); bw.Close(); &lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;　&lt;/STRONG&gt;こんな感じになります。 さて、せっかくですから保存されたファイルの中を見て見ましょう。メモ帳（Notepad.exe）を開いて、D:\Temp.binをドラッグ＆ドロップしてみると、おそらく q\ のように、意味不明のデータが表示されたかと思います。&lt;BR&gt;　まだ、暗号化もなにもしていないのに、ただUnicodeのままファイルに出力しただけなのに、なぜこうなるか？それは、本来ならば、Unicode文字列の先頭には１６進数のFEというデータを付加して、この文字列がUnicodeであることを示さなければならないのですが、我々の作ったコードには、その１６進数のFEを書き込む動作が入っていないからです。 &lt;BR&gt;　しかし、今回はこの方が好都合なので（簡単には読めないデータを作りたい）、そのまま使うことにします。 &lt;/P&gt;
&lt;P&gt;（つづく） &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=446997" width="1" height="1"&gt;</description></item><item><title>インストール</title><link>http://blogs.msdn.com/myamada/archive/2005/07/08/437028.aspx</link><pubDate>Sat, 09 Jul 2005 03:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:437028</guid><dc:creator>msmyamada</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/myamada/comments/437028.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=437028</wfw:commentRss><description>&lt;P&gt;　やっと実際のインストールの話を書くことができます。&lt;/P&gt;
&lt;P&gt;　C#Expressのインストールパッケージは約４５個のファイルから構成されています。さらにそのファイルの中にはMSIファイル（インストールすると多数のファイルに展開される）も入っているので、インストール後のファイル数は結構な数になります。&lt;/P&gt;
&lt;P&gt;　また、そのインストールパッケージの中には前途の.NET Framework2.0、ヘルプドキュメントのMSDN Express、SQLサーバーのExpress版、６４ビットマシン用のアプリケーションの開発を支援するためのリモートデバッガが入っています。&lt;BR&gt;　これらは本体のインストール時に、同時にインストールするかを選択することができます。（後から追加することももちろんできます。）&lt;/P&gt;
&lt;P&gt;　それでは、インストールを開始して見ます。&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://image.blog.livedoor.jp/livingseattle/imgs/a/7/a7c292f7.jpg"&gt;&lt;/CENTER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;　以下のように、ヘルプドキュメントとSQLサーバーのExpress版をインストールするかどうかは、途中で聞かれるので、自分で選択することができます。&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://image.blog.livedoor.jp/livingseattle/imgs/b/3/b38825fe.jpg"&gt;&lt;/CENTER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;　僕はドキュメントもSQLサーバーもインストールするように選択して、次へ進みました。&lt;BR&gt;　すると、以下のように、Microsoft .NET Framework 2.0 とランゲージパック日本語版が自動的にインストールされるようになっていることがわかります。&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://image.blog.livedoor.jp/livingseattle/imgs/7/a/7a958806.jpg"&gt;&lt;/CENTER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;　インストール中の画面です。&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://image.blog.livedoor.jp/livingseattle/imgs/5/4/5411ce35.jpg"&gt;&lt;/CENTER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;　インストールが完了すると、ユーザー登録を３０日以内に済ませるように促せられます。&lt;BR&gt;　ユーザー登録をWebで済ませて、無料のライセンスキーを取得しないと、C#Expressを使用できるようになりません。&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://image.blog.livedoor.jp/livingseattle/imgs/a/b/ab995d60.jpg"&gt;&lt;/CENTER&gt;
&lt;P&gt;　さて、次回からは実際のプログラム作成に入りたいと思います。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=437028" width="1" height="1"&gt;</description></item><item><title>前のバージョンの.NET Frameworkと共存できるか？</title><link>http://blogs.msdn.com/myamada/archive/2005/06/23/432091.aspx</link><pubDate>Fri, 24 Jun 2005 08:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:432091</guid><dc:creator>msmyamada</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/myamada/comments/432091.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=432091</wfw:commentRss><description>&lt;P&gt;さて、C# Expressをインストールすると必然的に新しいバージョンの.NET Framework （バージョン２．０）がインストールされてしまいますが、既に以前のバージョンの.NET Framework、バージョン１．１や１．０が入っている場合は&lt;STRONG&gt;安全のために&lt;/STRONG&gt;アンインストールなどしたほうがいいのでしょうか？もしくはアンインストールしないでインストールすれば、勝手に上書きされて２．０になるのでしょうか？&lt;/P&gt;
&lt;P&gt;素朴な疑問ですが、誰も自分のマシン環境を不安定にしたくないので、インストールは安全に行いたいものですよね。&lt;/P&gt;
&lt;P&gt;答えは、.NET Framework2.0は、旧バージョンの.NET Framework1.1や1.0とは&lt;STRONG&gt;違うフォルダにインストール&lt;/STRONG&gt;されますし、別製品として取り扱われますので、前のバージョンは特に気にする必要はありません。&lt;BR&gt;なお、前のバージョンの.NET Frameworkは通常消すべきではありません。というのは、前バージョンの.NET Framework用に作られたソフトは、前バージョンの.NET Frameworkに依存して動作するからです。&lt;/P&gt;
&lt;P&gt;WindowsがC:\Windowsにインストールされている場合、.NET Framework2.0をインストールすると、それらは&lt;BR&gt;&lt;FONT color=#0000ff&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215&lt;/FONT&gt;&lt;BR&gt;にインストールされます。&lt;BR&gt;旧バージョンの.NET Framework1.1は、&lt;BR&gt;&lt;FONT color=#0000ff&gt;C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322&lt;BR&gt;&lt;/FONT&gt;にインストールされていますので、干渉することはありません。&lt;/P&gt;
&lt;P&gt;なお、.NET Framework1.1のインストールされているフォルダのサイズは&lt;STRONG&gt;約70MB&lt;/STRONG&gt;、.NET Framework2.0は&lt;STRONG&gt;126MB&lt;/STRONG&gt;でした。&lt;BR&gt;（ただし１．１の方は、僕は日本語LangPackをインストールしていないので、若干小さくなっているものと思われます。）&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=432091" width="1" height="1"&gt;</description></item><item><title>インストールの準備</title><link>http://blogs.msdn.com/myamada/archive/2005/06/15/429643.aspx</link><pubDate>Thu, 16 Jun 2005 07:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:429643</guid><dc:creator>msmyamada</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/myamada/comments/429643.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=429643</wfw:commentRss><description>&lt;P&gt;こんにちは。&lt;/P&gt;
&lt;P&gt;　僕は&lt;B&gt;毎日&lt;/B&gt;このVisual Studio 2005（Whidbey）に関わることをしているのですが（それが仕事ですから当然ですね）、意外と直接この製品を使い込んで何かをする、という機会は少ないものです。&lt;/P&gt;
&lt;P&gt;　それで、自分がメインで使用しているマシンにはいまだにこのWhidbeyBeta2をインストールしていなかったりします。&lt;BR&gt;　これでは話にならない！と思い、早速インストールしてみました。&lt;BR&gt;　僕が使用しているマシンは&lt;B&gt;英語版のWindowsXP Pro&lt;/B&gt;ですが、日本語版Whidbeyを英語版XP上で動かしても、日本語Fontさえ正しくインストールされていれば、基本的には問題ないことになっています。（万が一僕がこの環境でバグを見つけてしまったら、それはそれで製品版までに直せるように報告したいと思います。。。） &lt;/P&gt;
&lt;P&gt;　さて、C# Expressをインストールする前にあらかじめインストールしておかなければならないソフトなどは、WindowsXPを使っている限り特にありませんが、Windowsアップデートをかけてからインストールしたほうが無難です。&lt;BR&gt;&lt;B&gt;　WindowsXPはSP2以上&lt;/B&gt;が、&lt;B&gt;Windows2000はSP4以上&lt;/B&gt;が適用されている必要があります。 &lt;/P&gt;
&lt;P&gt;　必要なハードディスクやメモリは、今までのVisualStudio.NETに比べれば、Express版に限って言えば軽いです。&lt;BR&gt;　ハードディスクは&lt;B&gt;１．３GB&lt;/B&gt;の空き容量が必要、メモリは最小&lt;B&gt;１２８MB&lt;/B&gt;・推奨&lt;B&gt;２５６MB&lt;/B&gt;が必要となっています。 &lt;/P&gt;
&lt;P&gt;　また、C# Expressをインストールすると、同時に&lt;B&gt;.NET Framework2.0&lt;/B&gt;をインストールすることになります。&lt;BR&gt;　 .NET Frameworkとは、平たく言えばWindowsを拡張するためのもの（正しい説明は&lt;A href="http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpovrIntroductionToNETFrameworkSDK.asp"&gt;こちら&lt;/A&gt;をご覧ください）ですが、これから先、C# Expressを使って作成したプログラムはその.NET Framework2.0がインストールされていないと動作しません。&lt;BR&gt;　したがって、もしもみなさんが自分でプログラムを作り、それを例えば友達のマシンで動作させたい、と思った場合は、その自作プログラム以外に、.NET Framework2.0を友達のマシンにインストールする必要があります。&lt;BR&gt;　もちろん.NET Framework2.0は&lt;STRONG&gt;無料で再頒布&lt;/STRONG&gt;することができますし、これをインストールしたために友達のWindowsが極端に遅くなる、ということはありませんのでご安心ください。 &lt;BR&gt;　なお、旧バージョンの&lt;B&gt;.NET Framework1.0&lt;/B&gt;もしくは&lt;B&gt;.NET Framework1.1&lt;/B&gt;とは共存できますので、それらをアンインストールする必要はありません。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;　それでは次回、実際のインストールの様子を書きたいと思います。 &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=429643" width="1" height="1"&gt;</description></item><item><title>はじめまして</title><link>http://blogs.msdn.com/myamada/archive/2005/06/11/428344.aspx</link><pubDate>Sun, 12 Jun 2005 06:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:428344</guid><dc:creator>msmyamada</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/myamada/comments/428344.aspx</comments><wfw:commentRss>http://blogs.msdn.com/myamada/commentrss.aspx?PostID=428344</wfw:commentRss><description>&lt;P&gt;はじめまして&lt;/P&gt;
&lt;P&gt;マイクロソフト本社で、VisualStudioなどの開発ツールを開発するチームで、ソフトウェアローカリゼーションエンジニアとして働いています 山田昌良 です。&lt;/P&gt;
&lt;P&gt;マイクロソフトに入社する前は、一人のユーザーとしてVisualStudioを使っていました。&lt;BR&gt;ずいぶんとこの製品に思い入れを持ち、たくさんのプログラムを書いてきました。&lt;/P&gt;
&lt;P&gt;今ももちろん仕事でこの製品を使っていますが、やはり開発の規模が大きいため、本来のプログラミングの楽しみや、ちょっと便利なツールを手軽に作る、というような機会が少なくなり、少しさびしく思っていました。&lt;/P&gt;
&lt;P&gt;また、社内に閉じこもってばかりいると、本当のユーザーさんの気持ちや、ユーザーさんが製品に対して求めるものが見えなくなってしまうという危険もあります。&lt;/P&gt;
&lt;P&gt;そこで、もう一度&lt;FONT color=#0000ff&gt;自分自身が一人のユーザーの立場に返り、ユーザーの視点からもう一度我々の製品を使い、あえて高価な製品ではなく無料で配布されているExpress版を対象にすることで&lt;/FONT&gt;、何か有益な情報をこのブログを通してみなさんにお伝えすると同時に、私自身も我々の製品をよりよいものにするためのきっかけが見つけられたら、と思い、このブログを立ち上げました。&lt;/P&gt;
&lt;P&gt;どのくらいの頻度で更新できるかは保証できませんが（笑）、できるだけがんばって更新していきたいと思いますのでよろしくお願いします。&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;--- &lt;BR&gt;この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。&lt;BR&gt;本ブログ上での発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=428344" width="1" height="1"&gt;</description></item></channel></rss>