更新履歴
2010/02/11 サイト開設
2010/03/26 memoWI [Ver. 0.5.2.0] 公開
2010/06/13 @asiram専用ページ開設【こちら
   
   


 asiramのひとりごと

2011/5/8  リニューアルサイト公開

 どうもです。なんとかGW最後(今日は最後ってことでいいんだろうか)で公開にこぎつけました。とは言っても、前回のエントリでも語ったようにすべての機能が使えるわけではないので、ご了承くださいませ。リニューアルサイト↓
 @asiram
 このサイトの今後の扱いですが、新サイトがこのサイトの機能を全て含むことができた時点で閉鎖しようと思っています。なので、それまでしばらくの間は残しておくことにします。エントリについては、今日をもってこのサイトでの更新を停止します。新サイトにて更新を行います。
 これで、このページを更新するのに使っていたExpression Webとはしばらくおさらばですかねぇ。これからはVWDとBlendが主力になると思うので、自然とそういう流れになりそうです。
 約1年、CsBDNよ、ありがとう!

2011/5/2  リニューアル準備中

 ちゃんとリニューアルのために動いております。とはいってもやはり時間がかかりそうで、GW明けにすべて完成した状態でお披露目というわけにはいきそうにありません。なので、中途半端ですが一部のみ公開していきたいと思っています。
 ASP.NETとSilverlightで作っているんですが、久しぶりに触ったASP.NETで思い出しながらプログラムを組みました。まず最初に、エントリ用XMLの出力をするための管理者用ページを作りました。これがなかなかくせ者で、エントリのタイトル・カテゴリ・日付などは簡単にXMLに落とし込めるのですが、本文はそうはいきません。エントリの本文は、文章+画像+リンク文字列 等で構成されており、それをXMLに出力しサイトのページで復元しなければなりません。さてさて、どうすれば実現できるでしょうかね?
 サイトを作っていると、プログラムのロジックも実装するのは大変ですが、ページのデザインを作るのも大変です。特に、ASP.NETのデザインは結局のところHTMLと同じデザイン方法なので、大変です。Silverlightはそれと比べれば相当柔軟で、かなりやりやすいのですが、綺麗につくろうとするとそれなりに神経を使います。とても時間をかけてしまうのです。
 もうすぐ、この見栄えが極めてわるいページともおさらばです。すっきりしたいです。あ、リニューアル後のサイトはSilverlightを使っているので、インストールしておいてもらえるとありがたいです! →Silverlight

2011/4/24  いいかげんに改修

 おお、10日も経っている... 調子を崩してたのもあって、なかなか更新できませんでした。
 いやぁ、しかし動画を上げるごとに総再生数が減っている気がすr...  さてさて、ゴールデンなウィークが迫っていますね。今度は本気でゴールデンウィーク中にHP改修やりますよぉー 乞うご期待。
 最近はもっぱらSilverlightが自分の中ではブーム&勉強中なわけですが、ここにきてやっとBlendにさわったりしています。Blendの他にExpression StudioファミリにはDesignというものあがあり、その役割はSilverlightやWPFで使う図形などを作るという感じです(他にも機能があるんでしょうが、まだよくわかりません)。ちょっとだけですが、Designに触りました。Designでは図形が作れると書きましたが、それだけの機能ならほかのペイントソフト等でも十分です。Designのすごいところは、作った図形をXAMLで出力できるところです。複雑な図形を作っても、ちゃんとXAMLで2Dグラフィックスとして扱えるのです。これは、画像として扱うのではなくあくまでXAMLコード内で図形として定義できるということを示しています。その図形をオブジェクトととして扱うことも出来るし、アニメーションを定義して動かすことができます。
 マスターすれば、いろいろ使えるかも・・・? みなさんも、機会があったら触ってみてくださいませー

2011/4/14  Webサービス

 C#たんのvol.1はもう少し...と思われます。 さてさて、少しですがWebサービスの実装をしてみました。Webサービスは、ASP.NETで実装します。クライアントサイドのアプリケーションからサーバーのリソース(サーバー内のファイル等)を使いたい場合や、他のサイトからサーバーのリソースにアクセスしたい場合などに使います。今回は前者の理由で実装しました。ずばり、silverlightで使うためです。silverlightはクライアント側で動作するので、自分がホストされている(配置されているページの)サーバーのリソースを知ることができません。そういう時にはWebサービスを使って、サーバー内の欲しいリソースなどにアクセスします。
 結論から言うと、ASP.NETで単純なWebサービスを作るのは簡単でした。しかしながら、コードを書く事自体は非常に簡単なんですが、少し迷ってしまった部分がありました。まずは、サービスを作っただけではだめで、ちゃんとsilverlight側で「サービスの参照」を行わないとだめな点です。これは、.NETのライブラリ(アセンブリ Syste.IOなど)の追加と同じ要領です。また、サービスのソースファイル上のコードで、新しいサービスを追加したときは、ちゃんと「サービスの更新」みたいなメニューで更新してやらないと、更新してくれないという点です。次に、そのままの設定でサービスを作っていると、そのサービスはlocalhostで動くサービスとして(サービス参照で)登録されてしまうということです。これは、よく考えれば当たり前で、テスト環境で試すときは開発サーバで動かさなければならないので、サービスはlocalホストで動いていることになっているのです。本番環境で動かすときにはそのサーバーのドメイン等を指定してあげないとだめです。
 なんというか、具体例を挙げて書いてないので非常にわかりにくいですねw うー、やはり画像を交えて記事を書きたいですね。早く改修工事をしろってことですねw

2011/4/6  とりあえずXAMLの勉強終了

 C#たん、進めないと!  SilverlightとWPFで使うXAMLですが、Visual Studioで編集する方法とExpression Blendで編集する方法(もちろん、シンプルなエディタでもできます)があります。どちらかというと、Visual Studioでロジックを実装してBlendでデザインを行うという使い方をするようです。SilverlightでもBlendが使えるといろいろと便利なようなので、早く慣れたいです。ちなみに、Expression BlendはExpression studioの一部で、有料の製品なので注意が必要です。(Dream Sparkを使えば学生は無料です! しかもUltimate!)
 いろんなWebを見ているとBlendはデザイン面で優秀なだけでは無いようで、いろいろと便利なようです(具体的にはまだはっきり言えませんがw)。Blendに慣れてきたら、話題を書きたいと思います。

2011/4/1  XAMLと言えばアニメーション

 もうそろそろXAMLの勉強も終わりです。まだやってたんですね、これが。どうしてもこういう勉強をするときは時間をかけてしまい(かかってしまい)、ほかのことが手に付かなくなってしまいます。もう少しさくっと出来るようにならないとだめですね~
 さて、なんども言っているとおりXAMLはWPFやSilverlightに使われます。XAMLを使うと、Windows Formでは馴染みのないアニメーションを定義することができます。アニメーションといっても、もちろん深夜にやっているアニメのことではありません。わかりやすいのは、ある図形などが初期位置から指定された位置に、指定された時間をかけて移動するようなアニメーションでしょうか。
 自分はXAMLを使えばアニメーションが出来るのは知っていましたが、どんな風の設定をしてやればアニメーションをしてくれるのかは知りませんでした。XAMLの勉強をして、納得しました。XAMLのアニメーションは、各オブジェクトのプロパティの値を時間毎に変化させることによって行っています。例えば、円オブジェクトがあったときに、その位置を決定するプロパティの値をアニメーションによって時間ごとに変化させてやれば、円が指定した場所までアニメーションによって動くといった具合です。
 この仕組は使いようによってはかなり強力です。XAMLで複雑な図形を描写するときに、その図形の一部の直線部分オブジェクトのPointプロパティを時間ごとに変化させてやれば、複雑な図形が時間によって変化するわけです。それこそ、アニメみたいなアニメーションも・・・?(ちょっと言い過ぎですね~)
 XAMLのアニメーション機能を早くマスターしたいですね~

2011/3/26  ”タダ”ってすばらしい

 どうもです。久しぶりに動画を投稿しました~(C#たんが教えるプログラミング Vol.0
 動画投稿に合わせて、ついにニコニコ動画のプレミアムになってしまいました。んー、ついに銭を出してしまったです。
 お金といえば、自分は今までプログラミング関係でお金をかけたことはほとんどありません。開発環境だって無料のVisual Studio Expressを使えばよかったし、勉強するための本は図書館で借りてました。まったくもって、いい時代ですね。今の時代、情報はWeb上にごろごろ転がっていて、その情報をかき集めれば本なんてなくても、知識が付いちゃいますよね。実際自分もかなりWebの情報に助けられています。しかも、C#はライブラリの解説がとても充実しているのでMSDNだけで事足りるときも多いです。
 前にも触れたと思いますが、学生であればDream Sparkという仕組みを使って無料でMicrosoft製のソフトウェアを使うことができます。Visual StudioのProffessinal、Expression Studioなどなど。
 自分はそんなに性能の良くないノートパソコン一つでずーっとやっていますが、そんなに不自由なくプログラムを組めています。これは、いろいろなことが当然のように無料でできるからですね~ 高いソフトを買わなくてもいいし、わかりにくい本を読まなくていい。こんなに素晴らしい環境なんですから、みなさんもばんばんプログラミングしましょう!

2011/3/21  XAMLって深い

 地震の爪痕、すごいですね... 自分たちに出来ることをしていきましょう。  自分は静かにXAMLの勉強を続けています。XAML、すごいです。触れれば触れるほどいろんな仕組みがあることが分かり、勉強量がどんどん増えていきます...。しかしながら、やっていておもしろいです。現在、データバインドについて勉強しているんですが、あるコントロールとコントロールのプロパティを結ぶだけではなく、コントロールーオブジェクトやコントロールーXMLなどのデータバインドもできるようです。
 データバインドというのは、あるコントロールのプロパティと、他のコントロールなどのプロパティの値を結びつける(同期させると言ってもいいかもしれません)ことです。よく見かける例は、TextBlock(Windows Formで言うLabelコントロール)とTextBoxをデータバインドさせる例です。具体的には、このふたつのコントロールそれぞれが持つ、Textプロパティをデータバインドさせます。そうすると、TextBoxに文字列を入力したときにそれと連動してTextBlockの表示内容が変わるということです。
 これが、使い方次第でとても強力なんだそうで、ぜひともマスターしたいところです。 かぁぁ、サイト改修がどんどん遅れていく... なんとかせねば。

2011/3/16  地震関連の情報を気にしつつ

 地震からは数日経っているのにかかわらず、まだまだ気をつけなければいけないことが多いですね。情報には気をつけましょう。
 さて、いつまでも滅入ってても仕方がありません。XAMLの勉強を続けています。XAMLについて掘り下げていくと、いろんな便利な機能があるのがわかってきました。XAMLはマークアップ言語(HTMLのようにタグ 例:<TextBlock ~>を使用する)なので、やはりHTMLと似ていて扱いやすいです。要素がオブジェクトに該当し、属性がプロパティになっているのが面白いですね~。
 XAMLはデザイン担当(C#はロジック担当)ということもあって、デザイン関連で便利な機能が沢山あるようです。”スタイル”という仕組みがあるのですが、これはCSSにそっくりで該当オブジェクトの外見・デザインを変えることができます。また、”トリガー”と言って特定の時に設定してあるスタイルを適用させる仕組みがあります。これを使えば、ありきたりですがマウスがコントロールの上に乗ったときにデザインを変える、といったCSSのような使い方ができます。もちろん、CSSよりかなり様々なことができます。
 XAMLを書いていると、どんどん行が増えていきます。これは、大規模なアプリケーションになったときはすごそうです... そういう時はどうするんでしょうかね~ まだまだ勉強が必要です。

2011/3/12  地震

 みなさん、大丈夫でしたでしょうか? 自分は結構な揺れを体験しましたが、なんともなかったです。余震がしばらく続くようなので気をつけてください。  いろんなところで影響が出ているようで、博麗神社例大祭も中止になったようです。これからの情報にくれぐれも気をつけていきましょう。

2011/3/10  ちょくちょくSilverlight勉強中

 ┐(´∀`)┌ヤレヤレ いつものぱたーんですね。 Silverlightの勉強というよりは、今はXAMLの勉強中です。今までもSilverlightはいじってきましたが、Windows Formの流れで触っていました。なので、XAMLのことはあまり気にせずにコードビハインドのC#の方でがりがり書いて動かしていました。本格的にやるんだったらXAMLの方も分かっていたほうが良いに決まっています。前からよくわかっていなかった名前空間の意味やデータバインドについて少し理解できたかな~ という感じです。XAMLでは名前空間の定義(読み込み:using System;みたいなものです)を”xmls:sdk=”http://~”のように書いて使うのですが、”:sdk”の部分がずっと謎でやっと今日意味がわかってすっきりしました。名前空間の読み込みと同時に”sdk:”が読み込んだ名前空間に置き換わり、”<sdk:DatePicker  ~>”のように、~名前空間のクラス という指定をすることができるわけです。ちょっと分かりにくいですねw 
 データバインドは、あるコントロールのプロパティにほかのプロパティを連結させるような仕組みで、ここも少し理解が足りないので勉強していきたいです。

2011/3/3  あうう

 どうもです。このペースが通常ではないようにしなければ。  さてさて、動画作成ですがもうほとんどできている(と思う)んですが、もう少しお待ちを~ 最近は、忙しい+動画作成などで、自分のためのプログラムを書く機会がまったくないのです。楽しくのびのび(?)プログラミングをしたいものです。とりもあえずは目先の目標のためにSilverlightのアニメーションまわりから試してみたいです。
 最近、前にも書いた内輪サーバーのお引越しをしました。お引越しというのは、中身のアプリケーションはもちろん、ハードウェアも変更したということです。ハードウェアは自分で用意したものでは無いのですが。サーバーに使ったOSは”Windows Server 2008 R2”で、前のは”Windows Server 2008”なのでバージョンが違います。後者のOSはVistaベースで作られていて、前者は7ベースで作られており、デスクトップの外見(タスクバーだけかw)も少し変わっていました。まぁ、お察しのとおりサーバーについての知識は殆ど無いのであまりたいしたことは言えません。しかし、アプリケーションファイル(.aspxや.xap)などを移してそのファイルにアクセスしたところ、エラーが出てしまいました。.configファイルの.NETのバージョンが悪い みたいなエラーが出てしまい、少し焦りました。なにせサーバーありきでやってきましたからね~。で、結論を言うと.NET Frameworkが有効になっていなかったようです。前はこんな事あったかなぁ、R2になったから変わったのかな? とか思いつつ、これでちゃんと作動したのでよしとします。
 いろいろ書いたけど、やっぱり微妙なエントリですねぇ

2011/2/26  C++の”->”やら”.”やら

 おっと、1週間も経ってしまった。ただいま動画を鋭気作成中です。もう少しお待ちくださいませ。
 さて、前にも少し書いたような気がしますがC++を使う機会があったので、その時の話を。C++を使うとほとんど必ず->(アロー演算子)を使います。これは、”ポインタ”のためにある演算子で、ポインタで構造体のメンバを指定するときに使います。”ポインタ”と”構造体”を無理やりC#やJavaに当てはめると、”ポインタ”は”参照(型)”、”構造体”は”クラス”でしょうか。もっとも、C#にも構造体はあるのですが普通はクラスを作ってその役割を担わせます。
 C++では、ポインタと構造体が初心者の山場と言われているのは良く聞きますよね。実際にそのとおりで、分かりづらいと思います。しかしながら、他の言語(C#やJava)を知っていればそんなに苦労せずに理解できると思います。実際自分も、ポインタ+構造体=クラス みたいな考えでいます(もちろん、厳密には違うでしょうが)。
 で、一体何を言いたいのかというと「C++の”->”と”.”の使い分けが面倒」ということです。C++ではC#でも使う”.”を構造体のメンバに対して使います。Car car; のとき、car.gas = 100; のように使います。そして、Car* car; のようにcarをポインタ型にした場合、gasにアクセスする場合は car->gas = 100; のように書くのです。これだけでも面倒ですよねぇ。これで、gasがさらに構造体でポインタ型の変数を持っていたときは car->gas->maxCap = 100; で、gasが持っているのがただの変数なら car->gas.maxCap = 100; のように書くわけです。この使い分けが実に面倒です。C#やJavaなら”.”一つで済むので、全く迷う必要がありません。C++はこんな感じなので、とりあえずコンパイルしてそういうエラーが出たら、”->”と”.”を入れ替えればいいかw とか考えてしまいました。C#最強だね! みなさんもC++を使うときは気をつけましょう。

2011/2/19  ノベルゲームやら

 今日書店で”吉里吉里”の本をちらっと読みました。なんでも、友人が作るサークルでノベルゲームを作るということになっているようで、”吉里吉里”を使って作るらしいのです。吉里吉里とは、ノベルゲーム・アドベンチャーゲームなどを作るためのツール(?)です。ツールと呼んでいいのかわかりませんが、すこしばかりHTMLのようなプログラミングのようなことをしなければならないようです。そうすることによって、様々な表現や機能が提供されているというわけですね。
 ノベルゲームの特徴的な作りとして、「プレイヤーがクリックをして次の文章に進める」というものがあります。これは、動画などと違いプレイヤーが好きなとき(タイミング)に次の文章に進めるという利点があります。ひぐらしとかもそういう形ですよね。もう一つ特徴的なのは、「分岐」だと思います。ひぐらしにはありませんが、ノベルゲーム・アドベンチャーゲームなどでは一般的に選択肢を選ぶと、ルートが変わります。この二つの機能が最大の特徴だと思います。
 本をちらっと(最初の部分だけ)読みましたが、どうもHTMLのようなタグを使うみたいです。こうなると、HTMLがわかる身としては入りやすいのかな~ とか思いました。ちょっといじってみたいと思いましたが、今の自分には全く必要ないので置いておきます。
 さて、一つ思ったことがあります。それは吉里吉里を使わずに、例えばC#でノベルゲームを作るとしたらどうなるかな~ ということです。さっき書いた二つの機能の実装はさほど難しくはなさそうです。クリックは、フォーム等のクリック系のイベントでキャッチすればいいし、分岐についてはif文で簡単にできそうです。難しそうなのは、効率よく場面を切り替えたりすることです。パッと思いつくのは、あらかじめフォームにPictureBoxをいくつか配置しておいて、それをレイヤーの代わりに使うという手段です。一つの場面を構成するクラスを作っておいて、そのオブジェクトを配列またはコレクションに入れます。その配列から場面が移ったら該当のオブジェクトを取り出してPictureBoxにセットする。といったところでしょうか。この場合だと、コレクションはQueueクラスがいいかもしれませんね~ 場面が進めば、一つ前に戻ることはありませんでしょうし(前に戻れる機能を作るなら別ですね)。
 とまぁ、無理やり想像をしてみるとなんとか作れそう? な気がします。セーブデータとかは、XMLに保存して、LINQで読めばいいですね~ でもやっぱり、吉里吉里のような専用なものを勉強して使ったほうが効率が良いんだろうなぁ 今日もニコニコ微妙な記事!

 /*******友人の同人サークル************/
 Triple Excellent 開発BLOG
 /**********************************/

2011/2/18  ふっかつ!

 とりあえず生き残りました~ さて、これからやることとやりたいことが山積みです。まずは動画を作ります! 内容はできてからのお楽しみです。今月中...はどうでしょうかねぇ 頑張りたいと思います。
 このサイトの改装、Silverlightの勉強も早くやりたいですね~ サーバーも借りたまま、なにもしていないので早くとりかからねば。エントリの更新も定期的にがんばります! (って、最初のうちはそう言うんだよなぁ

2011/2/2  修羅場

 生きてます。大丈夫だ、問題ない←死亡フラグ  非常に申し訳ないです。もう少し余裕ができると思ったんですけど...
 2月の中旬までの辛抱なので、がんばって乗り切ります! 俺、これが終わったらSilverlight勉強するんだ・・・

2011/1/12  HTML5

 い、忙しい。。。コミケが終わったことだし、これでやっと~ と思いましたが、ところがどっこいだったみたいです。
 さて、最近少しだけHTML5の解説がしてある本を読む機会がありました。読んでて思ったのが、やはりHTML5の恩恵を最大限に受けるためにはjavascriptの知識が必須だということです。その本にはjavascriptが分かっていることが前提で書かれていました(まぁ、当然のことでしょうが・・・)。しかしながら、javascriptを知っていると相当いろんなことが出来るようです。その本の動画を扱う章では、HTML、CSS、javascriptを使って動画にテロップを表示する例があり、もう少しいじればそのテロップを右から左へ流すということもできるそうです。すごいですねぇ、FlashもSilverlightもなしでそんなことが出来るなんて~  と思うものの、やはり「Silverlight」でやればいいじゃんけ? と思ってしまうのもあります。
 もちろん、そのような土俵で比べるのはよくありません。HTML5の良いところは、HTML+CSS+javascript で色んなことが出来ることにあります。Silverlightなどはスマートフォンなどで搭載されていない場合がありますが、HTMLだったら表示できるというのがほとんどです。全プラットフォーム向けに作るなら断然HTML5だね! ってことになるわけです。
 これからはHTML+CSS+javascriptですごいアプリケーションができるだろうなぁ 

2011/1/09  次は?

 ここに書くネタが無いので、@asiramのおはなしを。2010年夏はC#でプログラミング入門、冬はHTML+CSS入門を取り扱いましたが、さて次はどうしましょうか。もちろん、次の夏コミもでるつもりです(当選するかどうかはわかりませんが)。前にも書いたような気がしますが、冬コミをHTML+CSSにした時も悩んだ結果そうなりました。それなりにネタは思いつきますが(ASP.NETやSilverlight、夏コミの発展編などなど)、それらはだいたいC#の基本がある程度分かっている人向けになってしまいます。もちろん、同人なのですからマニアックな方向に持っていくのもありなのでしょうが、こちらとしてはそれなりにもとは回収できないと辛いです。
 ましてや、むりやり東方のジャンルで参加しているのでプログラミングでマニアックネタやってもしょうがないような~ とか思ったりします。わからない人がほとんどだろうし... @asiramが東方のジャンルで参加しているのにはそれなりに意味があります。東方島であれば多くの人に見てもらう機会が増えます。これは、私自身が東方に興味がある人はプログラミングに興味がある人がそれなりにいるんじゃないか? と思っているからです。そう考えるとやはり入門系動画の作品を作るべきだと思ってしまうのです。
 結局、”次はこれにしよう” っていうのはまだないんですが、どうしたらいいですかねぇ ...なんかすごく微妙なエントリにw なにか良い案があったら教えてくださいませ~

2011/1/02  これから

 年末のお祭りも無事に終わり、2011年になってしまいました。今年もどうぞよろしくお願いします。
 さて、今年はどんな年になるでしょうね~  とりあえずの目標は、このサイトの大幅改装です。この、エントリを1ページにすべて書いている状況をなんとかしないとまずいし、もっと面白いものにしたいです。世間にはブログ用のアプリケーション(WordPressなど)がたくさんありますが、自分ですべて作るつもりです。もちろん、ASP.NETなどをおりまぜて作っていきたいと思っています。勉強にもなりますしね~
 自分を追い込む目的なども込めて、サーバーを年末にレンタルしました! 前にも紹介した「Express Web」です。すこしクチコミを調べたのですが、良い評判ばかりなのでとりあえず申し込みました。12月はキャンペーン期間中ということで、だいぶお安く借りられましたし、ドメインも取得しました。ドメインについての知識ははっきり言ってあまり無いのですが、「at-asiram.net」というドメインを取得しました。これもキャンペーンで、無料でした。しかし、すごいですね、これで「at-asiram.net」というアドレスが自分専用というのはすごくテンションが上がりますね! 感動です。
 結構意気込み良く書いていますが、サイト改装は2月~3月末あたりまでで行う予定です。正直どれくらい時間がかかるかわからないので、なんとも言えませんが。 ちゃんとこのサイトの更新もやっていかないとですね、がんばります。

2010/12/27  C79へ

 かつて無いほど更新が滞りました。実に申し訳ないです。
 さて、C79の準備ですがお陰さまでなんとかなりそうです。恐ろしくタイトなスケジュールでしたが何とかなりそうです(まだ完全には終わってませんw)。中身はどうよ? という話ですが、ちゃんと予定通りHTML+CSS講座で仕上がりました。構成はHTML編、CSS編、実践編 の3編で構成しました。 今回は、いつものニコニコに上げる動画より親切設計にしました(したつもりです)。それなりに、わかり易く解説できたかなー と思ってたり思ってなかったり。
 さぁて、どれくらいの人に手にとってもらえるのかどきどきしつつ、当日を楽しみにしています! もしよかったら覗いていってくださいませ。配置場所を再掲しておきます。
配置場所:2日目 東2ホール Qブロック - 39b

2010/12/09  近況報告

 すみません、現在多忙中です。プログラミングの話は今日はお休み。
 あってはならないことですか、C79頒布物を完成させられるかどうかの瀬戸際です。とは言え、諦める気は全く無いのでご安心を~ さすがは師走といったところでしょうか・・・
 がんばります。

2010/12/01  ファイルの入出力

 最近忙しいです。頒布物はなんとかなるんだろうか・・・。いやいや、なんとかC79に間に合わせるように頑張っています。
 さて、今回はファイル入出力のおはなしを。言語仕様がある程度分かってきて、最初にやる(やりたい)ことがファイルへの書き出し/読み出しだったりしますよね。私もjavaでその道をたどりました。C++のファイル入出力処理を書いてみて、言語によって違うなぁとしみじみ思ってしまったわけです。とは言っても、用途によって使うクラス・構造体は変わるんでしょうけどね~(しかし、基本は同一のクラス・構造体を使うはずです)。C#の場合は、FileクラスのWriteAllText()メソッドを使うとテキストを指定したファイルに出力してくれるという大変親切なメソッドがあります。ちなみに、File.WriteAllText()メソッドはmemoWIのテキストボックス内の文字列を保存するのに使いました。たったの1行でファイルへ出力できるのはすごく便利です。ただしこの方法では、”文字列”しか保存できません。
 ”文字列”以外何を保存するの? と思うかもしれませんが、そのようなケースは多々有ります。例えば、MP3などの音声データ、MP4などの動画データなどです。これらの場合は、文字列ではなく”バイナリ”の形で保存する必要があります。分かりやすく言えば、0と1の生データと言ったところでしょうか。MP3などは、その中に文字列を意味するデータが入ってたりしますが、それをひっくるめて”バイナリ”形式で出力します。C#ではBinaryWriterクラスなどを使ったりしますが、これはさっき1行で済んだものと比べるとやや複雑です。詳しく知りたい人はがんばって調べてくださいw
 今日はなんか中途半端な話のような・・・ いやぁ、各言語ごとに入出力処理を書こうかとも思ったんですが、javaなんかはうろ覚えだったのでやめておきました。

2010/11/24  融通が利かない

 ふぅ・・・。 どうもです。
 前にも書いたとおり最近C++を触る機会があるんですが、そこで発見したことをひとつ。次のC#のコードの結果(dの中身)はどうなるでしょうか。
	double d = (double)100/3;
 それはもちろん、「33.3333333・・・」となります(3がいくつ続くかは省略)。これは当たり前のようですが、これと同じことをC++でやると「33」になってしまうのです。C++の方では計算結果が強制的にint型にされてしまって、キャスト変換しても「33」のままなのです。最初は何か他のところでエラーが発生して、33になったのかと思いましたがそうではなくC++の仕様だったというわけです。
 では、どうすれば正しい結果が得られるか・・・ それは、片方の値をdouble型にすればいいのです。なので、C++の場合は
	double d = ((double)100)/3;
のようにすればいいんですね。もちろん、100の代わりにdouble型の変数を使ってもOKです。んー、C++って融通が利かないなぁ。

2010/11/19  HTML

 5日間あけるのはよくないな、うん。 さてさて、C79の準備もそれなりに進んできています。今回はHTML+CSSということで、いつもとは少し違う題材なので作っていておもしろいです。私がHTMLやCSSを触るときに必ずそばに置いてある本があるんですが、その本のなかで再確認した事実がありました。知っている人も多いと思いますが、HTMLの最新バージョンは結構前にできたものなのです。なんと1997年! コンピュータの業界では、13年前というと、相当前の気がします。現行のバージョンは4.01です。また、XHTMLというものもあり、こちらは最新でも2002年らしいですが、XHTMLでも出来ることはHTMLと変わりません。ちなみに、このサイトはXHTMLで書いています。XHTMLと大仰に言っても、正直そんなにHTMLと変わりありません。
 HTMLはご存知のとおり、様々な技術が上に乗っかって今の形にあるわけです。javascript、PHP、Perl、ASP.NET、Flash Player、Silverlightなどなど・・・ でも、土台は1997年に作られてから変わっていないというのを聞くとびっくりですね。
 しかし!、知っている人も多いと思いますがHTMLのバージョン5の標準化が進められています。正直なところ、何が出来るのかはあまり把握していないのですが、アニメーションとかも出来ちゃうそうです。FlashやSilverlightの一部の機能が食べられちゃうかもしれないですね~。でも、Silverlightにはもっと良い機能があるぜ☆ どうやってうまくHTML5とSilverlightが共存していくかですね。住み分けも重要になってきそうです。HTML5の動向を気にしておきましょー

2010/11/14  サイト改装

 平常ペースに戻ってきたかな?  本題に入る前に少しお知らせです。memoWI用の簡易掲示板ですが、閉じることにしました。理由はもうmemoWIをいじることはなさそうだし、なにより荒れてきたからです。いやぁ、掲示板って何もしないとあんなふうになるんですねぇ。自分で掲示板作るときは、英語・数字のみの本文の投稿のときは弾くようにしようかなー。掲示板でmemoWI以外の意見をくださった方もいましたが、今度からはメールでどうぞー。現在メールはすかすかですw
 さて、タイトルにもあるようにサイトを改装しようと目論んでるわけですが、前にも行ったとおりコミケに受かったので先送りです。とは言いつつ少し案はあります。・・・ブログなどのすでにある部品を使ってやるつもりはなくて、ほとんで全部自分で作るつもりです。プログラミングが好きなんだから、それぐらいやろうぜ☆ って感じです。使うのはもちろんASP.NETとSilverlightです。で、まずはじめに問題になるのが1日1日のエントリをどうやって扱うかです。現状では1つのHTMLファイルにすべて詰め込んでるわけですがw 正直この方式は最悪の極みだと分かっているんですが、このページを作った当時はこれが限界だったのです。その時はWebプログラミング(ASP.NET)も全然わかりませんでしたしね~
 で、結論から言うとXMLで対処しようと思ってます。XMLに直接エントリを描くのではなく、管理者専用フォームみたいのをASP.NETで作って、そこで入力した内容がXMLファイルとして出力されて、それをサイトのエントリ用ページで読み取ってページを生成しようと思ってます。もちろんXMLファイルの名前は日付にします。ここでLINQが大活躍するわけですね~。最高だよ、LINQ。

2010/11/10  C#の擬人化

 もう結構前のことですが、「CodeZine」というサイトにてC#入門の記事が公開されました。このサイト、私も大変お世話になっているサイトで、実用的なTipsやHowToなどがわかりやすく掲載されています。C#全般はもちろん、ASP.NETやSilverlightなど的を絞った実用的な解説・コードがたくさんあります。で、そのC#の入門記事の名前が、「C#たんと学ぶ/わりと硬派なソフトウェア開発講座」というものです。最初は、Silverlightについて調べていたときに「最新記事」という欄に載っていたのを発見し「C#たん?」とその記事へ飛びました。
 リンクへ飛べばすぐに分かりますが、”C#たん”なるキャラクターが登場しています。名前の通りかわいいキャラクターで、下の方には少しですが紹介が書いてあります。C#もついに擬人化か・・・  と思ったら、”C++たん”というキャラクターも出ています。他にもいるのかと調べたら、”VBたん”というキャラもいました。知らない間にこんなことになっているとはw  東方などの文化とプログラミングが好きな私にはばっちりなとりあわせで、興奮しますねw
 残念なのは、最初のページと最後のページにしかC#たんが登場していないことです。記事自体は非常にしっかりしていています。第一回の今回は「C#でできること」という記事で、題名どおり何が出来るのかが書かれています。これを読めば、C#のすごさがわかるぜ! という内容です。正直言ってすべてを読んだわけではありませんが、ASP.NETやSilverlightもちゃんと紹介されており、読んだ人もC#を始めるモチベーションが上がったのではないでしょうか。絵がもう少し多いともっと上がりますけどw
 C#たんの情報、というか生みの親?のページを見てみるとおもしろいです。イラストもたくさんあって、いいかんじです(ここ)。C#たんに動画出演してもらったらいいかもしれないなぁ そういうことしていいのかなぁー  とりあえずマークしておきましょう~

2010/11/06  C79に参加します

 今回もコミケに参加することになりました~ 詳細は@asiramに書いてあります。今回は、受からなかったらこのサイトをリニューアルしようと考えていたのですが、受かったので先送りです。さて、今回の頒布物ですがHTML+CSSの講座モノにしようと思っています。え?もっと早くから作っておけって? そうしたかったのはやまやまだったんですがね~ 貧弱なもんでw
 まずは、今連載中のシリーズを終わらせることが先です。がんばって終結させます。

2010/10/30  わからぬ

 どうもです。大丈夫、生存してます。体長は言わずもがなです。
 さてさて、やっぱりちょくちょくいじくっているsilverlightなんですが、最近ちょっと困っています。それは、「silverlight-サーバー間での通信」です。ご存じのとおり、silverlightはクライアントサイド(ブラウザで実行される)なので、ASP.NETのようにサーバー内のデータ(XMLファイルなど)を様々な条件によって整形・抽出などができないのです。XMLファイルそのものは、HTMLのように直接アクセスしてクライアント側にダウンロード(ユーザーが任意でダウンロードするわけではありません)することができますが、例えばその1つのXMLファイルの一部を抽出したデータが欲しい場合、丸々1つのXMLファイルをダウンロードするのは非効率的です。ダウンロード量もかさみますし、抽出処理もクライアント側で行わなければなりません。
 このようなことに対処するために、”webサービス”や”WCF”などがあります。正直言って、これがどうやっていいのかわからないのです。いろいろ調べたつもりですが、難しいことばかり載っているような・・・ 実は、見つけた記事の多くはデータベースを前提したものが多く、そっち方面が全然わからない自分にひじょーに読む気にならなかったのです。確かにsilverlightとデータの連携をしたいならデータベースを使うのが当たり前なんでしょうね~ くうう。
 この課題は何としても突破せねば。もう少し頑張りたいと思います!  んーデータベースの勉強しなきゃダメかなぁ

2010/10/20  うはぁ

 やっぱり回復しきってなかったasiramです。うああ、やりたいことがあるのにがりがりできない苦痛ってのはひどいです。うう。。。
 そういえば、最近衝撃的なレンタルサーバーを発見しました。ここです。これはすごい。30GBでASP.NETが使えて何と月263円~ 安すぎるぅ。しかも今なら12カ月無料! なんか販促してるみたいですねw でも、前回紹介したことがあるここは1GB+ASP.NETで525円~ なので、比べ物になりませんね~
 美味しすぎるような気がしますが、実際はどうなんでしょうかねぇ とりあえずマークしておきませう。しかし、いったいいつASP.NETを使ったサイトを作るんだろうか。 いや、でもSilverlightを使いたいのでそっちで攻めるかもしれません。Silverlightでサイトを作るのはいいけど、なにか主力のコンテンツが欲しいですよね~ 考えどころです。

2010/10/12  需要

 やっと体調が回復(たぶん)したけど、忙しいasiramです。かつてないほど長い間更新していませんでしたねw がんばって元のペースに戻します。
 ニコニコに上げた動画の続きですが、ちゃんと続けますよ! 今までは調子悪くてほとんど作れませんでしたが、これからはそれなりに進めていけそうです。とはいっても、最近はいそがしいのですが。。。
 さて、タイトルの「需要」ですが、ニコニコ動画ではどんな需要があるんでしょうか。もちろんプログラミングでの話です。知っての通り、C#入門動画の”Vol.1”は結構な再生数でした。やっぱり、プログラミング関係の入門動画の第一回はみんな「やってみようかな~」と、軽い気持ちで見るんでしょうね~ 一般の人にウケる、プログラミング関連の動画はやっぱり「入門」だけなんでしょうか。他に無いのかなぁ
 マニアックに攻めれば、いくらでもいけます。ASP.NET、WPF、Silverlight・・・ でも、絶対に一般ウケはしませんよね~ それでも、マニアックに攻めるのも面白いかもしれませんよね。でも、再生数もほすぃ   ・・・何が言いたいんだかw まぁ、さらっと聞き流してくださいませ。

2010/10/03  SilverlightかWPFか

 調子悪いの治らない・・・ んなこたどうでもいいですね。 さて、ここでもずいぶん取り上げているSilverlightですが、よくWPFと比べられたりします。知っての通りSilverlightはブラウザ上で動作するアプリケーションですが、それに対してWPFはデスクトップで直接動くアプリケーションです。この点から見ると、どちらかというとデスクトップアプリの方が身近ですよね。当然のことながらいちいちブラウザを起動しなくてもOK。 二つが比べられる理由はいくつかありますがまずは、アプリケーションを開発する下地が同じということです。Silverlightで使うことが出来るコントロールはほとんどがWPFでも同じように使うことが出来、もちろん両者はXAMLとC#のコードビハインドで開発します。
 ここまで読んで、ブラウザ上で動作・デスクトップで動作 で比べる土俵が違うんじゃないの?と思う方もいるかもしれませんが実は最近、Silverlightが土俵入りを果たしたのです。それは、「ブラウザ外実行」というSilverlightの機能が追加されたからです。この機能はその名の通り、本来ブラウザ上で動くSilverlightアプリが、デスクトップで直接動いてしまうのです。 しかし、これではデスクトップで動くWPFと変わりがないんじゃ?という疑問が出るところですが、よく考えるとそうではないのです! Silverlightは、サーバーに配置しておきユーザーがそれをダウンロード・実行して動作するものです。「ブラウザ外実行」されたSilverlightでもそれは変わりません。ということは、実行するたびに、サーバーにアクセスしてSilverlightアプリをダウンロード・実行していることになります。ここがミソなんですね~  こうすることによって、そのアプリがアップデートされたとき、いちいちユーザーはアップデート操作を行わなくて済むのです!
 これでもう、アプリを起動したら「新バージョンがあります」のようなメッセージを見なくて済みます。 とまぁ、良いことばかり書きましたが手放しで喜ぶことはまだちょっと早いです。Silverlightは、.NETのサブセットで実行されているので、すべての.NETのクラス等をカバーしている訳ではありません。なので、なんでもできるわけではありません。
 ん~、でもまだ世の中でこの仕組みはあまり利用されてないようだし、やってみたいなぁ。

2010/09/27  動画

 非常に更新がおろそかになっていたasiramです。最近、調子が安定していなくてなかなか更新する気になりませんでしたが、今はそれなりに回復してやっと更新をした次第でございます。全く、急に気温が変わるのはやめてほしい...
 さてさて、一部の人(相当一部だろうなぁ)はニコ童祭の動画を見た人もいると思います。今回は画像ビューワーを作っています(まだ完成していませんがw)。 いやぁ、毎度ながら「久しぶり~」っていう米には元気をもらいます。実にうれしいです!
 ん~、とは言ってもあんまり伸びなかったですねぇ~ よくよく考えると、祭りに講座ものを投稿するのはどうかとおもいますよねぇw 何か東方に関するプログラムを作れば良かったんでしょうが、何も思いつかなかったのです。講座物はあんまり受けませんね~ でも、ウケだけを狙って作るのもどうかと...   どぅああ! なにがいいたいんじゃぁ、わたくしは。
 プログラムがそれなりに組める者としては、何かウケる動画を作ってみたいものです。でも、一体何を・・・? 動画に出来そうで、しかもすぐにウケそうなのはやはりゲームを作ることでしょうか... ゲーム方面のプログラムは全く知らないというのもありますが、ゲームを作るのは大変ですよね。絵や音楽なども必要ですし、プログラムの量も恐ろしくなるだろうし。なにか出来るものはないですかねぇ~
 今日の更新は何を言いたいんだか分りませんが、許してやってくださいw

2010/09/18  なんという勘違い

 ううむ、わたくし、C++のことについてまったくの勘違いをしていました。超有名なC++ですが、私は全く勉強したことがなく、ほとんど知識がありません。C++はCの強化版という認識は大丈夫らしいのですが、「クラス」というものが存在していたとは知りませんでした。自分的には、C++はとりあえず「ポインタ」と「構造体」がメインなんだべ? とか思ってましたが、一概にそうとも言い切れないようなのです。もちろんC++にもその二つは残っていて、ちゃんと主力であることもCから変わらないようです。 Cではそうではありませんでしたが、C++はオブジェクト指向言語です。このために(?)、C++では「クラス」の機能が足されたようなのです。なので、当然のごとくアクセス修飾子(publicなど)も存在するようです。クラスがあるということは、「参照型」もあるようで、なんだかポインタと競合しているような気がしてなりません。
 とまぁ、多少知ったかで書きましたが、間違ってる箇所があるかもしれないのでご了承ください。 ところで、なぜそんなことを知ったかというと、asiramがC++の勉強をしなくちゃいけない環境になってしまったからです。正直なところ、勉強したくありませんがしょうがないようですねぇ~ いままでのjavaやC#のように細かい言語仕様まで勉強しなくてよい感じなので、必要なところだけを勉強するつもりです。 これからはそれで気づいたことなんかを書くかもしれません~
 しかし、このサイトのひとりごとは、ほんとうに独り言だなぁ なんというか、一つのテーマに統一されてないしw

2010/09/13  Silverlightの出番はまだまだ増える?

 みなさま、AndroidやiOSなどのことをご存知でしょうか? どちらも今流行りのスマートフォンに搭載されているOSで、前者はdocomoの「experia」が有名です。後者はあの「iPhone」に搭載されているOSです。最近では、スマートフォンにこれらのOSを積むことが流行りになっているようです。とはいっても、従来の携帯電話にもちゃんとOSは入っていたんですが、それらは機種によってばらばらに独自開発されたものが多く、また、サードパーティ製のソフトウェアを入れることが出来ないなどの制約が多くありました。これに対して、AndroidやiOSなどのOSなどを入れることによって、対応した言語・方法で開発されたソフトウェアを導入することができるのです。Androidはexperia以外にもスマートフォンに搭載されています。それらの端末は、同じソフトウェアを使うことが出来るわけです。 これ以外にも利点があるんでしょうが、やはり一番大きい点としてはいろんなソフトウェアを取りこんで、自分の好きな環境に改造、アプリケーション(ゲーム等)を楽しむことだと思います。
 で、前ふりが長くなりましたが本題ですw。Androidはgoogle、iOSはApple社が提供するOSです。じゃあ、Microsoftは? もつろんあります。今まではWindows mobileというOSが、スマートフォン業界でもスタンダードでした。それが今では、先の2つのOSに押され気味で影を落としています。この状況を打開すべく、Microsoftも新しいスマートフォン向けOSを開発しています(開発は終わったっぽいです)。それが「Windows Phone 7」です。
 まだまだしっかりとした情報が少ないこのOSですが、一つはっきりしている点があります。それは、「Silverlightで開発が出来る」というものです。いやぁ、やっとタイトルとつながりましたねw いままでのWindows mobileでは、(あまりよく知らないのですがw).NET Compact Framworkというものを使って開発をしていたものが、なんと次はSilverlightです! あのきれいで自由度が高いコントロールを使えるんでしょうかねぇ~ 楽しみです。しかしながら、このOSあまり良くない噂も聞きます。例えば、Windows mobileで動作したソフトウェアが一切動かないとか...(部分的に動く・完全に動く など、いろいろな話が出回ってるようです) とにもかくにも、様子見するしかなさそうです。なにせ、まだ日本での発売は未定らしいので~

2010/09/8  なんじゃこりゃぁぁ

 わたくしasiramは衝撃事実を知ってしまいました! Silverlightの本をさらっと読んでいたんですが、そこには「Accordionコントロールが~」と書いてあるのです 「Accordionコントロール? そんなものはツールボックスにないけどなぁ。」とか思ってその本の最初の方を見ると、「Silverlight toolkit をインストールしてください」と書いてあるではありませんか。しかし、私はそれってVisual StudioでSilverlightを開発できるようにするものじゃないの? とか思いましたが、よくよく調べると、それは「Silverlight Tools」というものらしく、微妙に名前が違いました。
 で、「Toolkit」がなんなのかというとMicrosoftが開発中のSilverlight用コントロールをまとめたものなのです。「開発中」とは言いますがほとんどがばっちり使えるものが多く、かなり多くのコントロールが含まれています。「Accordionコントロール」もその中の一つで、これはアコーディオンのじゃばら(?)のようにメニューが折りたたみ可能なコントロールです。 いや、もう本当にたくさんのコントロールがあってびっくりしました。URLはこちら。ここの右にある「Download」というボタンをクリックすれば、ファイルをダウンロードできます。そのファイルをダブルクリックすれば、簡単にインストールが出来ます。
 Toolkitを使うに当たって注意することは、「開発中」なのでMicrosoftの公式サポートが受けられない、ということです。つまり、MSDNのライブラリにはToolkitのコントロールの項目が無く、日本語の解説を見ることが出来ないのです。Toolkitをインストールすると、各コントロールの解説文(?)が付いては来るようですが、もちろん英語です。 ぬおお、ではどうやって使えば・・・ という質問にはとりあえず、フィーリングだ! と答えませう。Windows FormやWPFをそれなりに触ったことがある人は、だいたいどのプロパティがどんな役割をするかは検討が付くはずです。しかし、それでは細かいところまでは使えませんよね。こんなときに役立つページを用意してくれているのだから、Microsoftはすばらしい! こちら(このページはさっきのページのSee More... をクリックすれば行けます)です。このページも思わず、「すげぇ」とうなってしまうすごさです! これ、Silverlightで出来てるんだぜ... この感動は、URLにジャンプして味わってみてください!
 なんでもっと早く気付かなかったかなぁ。もったいない~

2010/09/04  Expression BlendとDream Spark

 皆様、Expression Blendというソフトウェアを知っていますか? このソフトはMicrosoftが発売している有料のソフトウェアです。で、このソフトウェアは何をするためのものかというと、ずばり「WPF or silverlightのデザインをする」という機能に尽きます。Microsoftとしては、WPFもしくはSilverlightのデザインは「Expression Blend」で行い、ロジックは「Visual Studio」で行うのが理想の形としています。でもって、私はBlendを触る機会がありながらずーっと触っていなかったのですが今日お遊び程度に触ってみました。とは言ったものの、使い方が全く分からなかったのであまり肝心な機能は使っていないのですが、その感想をとりあえず書いておきます。
 まず最初に思ったのは、「UIかっこいいぃぃ」です。黒を基調としたきれいなデザインでした。実は、Blendは「Expression Studio」という商品の一部で(Officeがいくつかのソフトで構成されているのと同じ感じです)、他に「Expression Web」、「Expression Encoder」、「Expression Design」というソフトウェアがあります。商品としては、「Expression Studio」というのと、個別に売っているのがあるようです。前置きが長くなりましたが、これらのソフトのUIデザインは統一されていていずれも黒を基調としていてきれいです。普段このサイトを更新するときもExpression Webを使っています。 次に、「各コントロールのプロパティに説明がある!?」というものでした。前にも書きましたが、Visual StudioでのWPFやSilverlightのデザイナでは、各プロパティに対する説明文がありませんでした。Windows Formのデザイナでは簡単な説明文があるのになぜ!? と思っていましたが、これで疑問は解けました。ん~ 差別化を図ろうとしたんですかねー VSにも載せていいじゃんよぅ  あとは、やはりデザインに特化しているだけあって外見や配置の設定がしやすいです。おもしろかったのが、コントロールの回転や縮小などの設定でした。WPFやSilverlightでは、Windows Formに比べて外見にこだわれます。なので、そのような設定がたくさんあるのです。コントロールの回転はもちろん、カードのように回ったり拡大縮小なんてことも出来ちゃいます。このような仕組みをうまく使うにはアニメーションを使いこなす腕(知識)が必要ですが、残念ながら私にはまだありません(T_T) 早く勉強して出来るようになりたいです! 時間をくれー
 さてさて、冒頭でExpression Studioは”有料”のソフトウェアと書きましたが、実はこのソフト、無料で手に入れる手段があるのです! それがタイトルにもある「Dream Spark」なのです。Doream  SparkはMicrosoftが運営していて、「学生は提供ソフトウェアを無償で使うことが出来る」というものです。無償でですよ? む・しょ・うで。学生っていいね~ すらばしい。詳細はこちら 使えるソフトはVisual Studio 2010 Proffessional やWindows Server 2008 、Expression Studio 4(最新版!)など、とっても豪華です。学生の皆様、ぜひともご利用くださいませ で、学生だということを証明しなきゃなわけですが、いろいろと方法があるみたいです。ここでは詳細には触れませんが良いものがあるなら使うべきです!  ん~ 動画とかでも取り上げたいなぁ

2010/08/30  第2回東方ニコ童祭参加表明

 ちょいと我が家を外していたので、更新が遅れました。さてさて、第二回東方ニコ童祭の参加登録(これをすると、公式サイトや告知動画で紹介されるというだけ)をしました!(締め切りが昨日で、23時くらいに申請しましたw) これで引き下がれないぜ☆ 今回は、メモ帳のようなヘビーなものではなく、もっと軽く行きたいと思ってます。目標は動画4つで終わることです。まぁ期待しないで、お祭りのついでにでも見てくださいませ。
 ニコ童祭、今回も盛り上がりそうですね。まだ第3次募集までですが、かなりの数の人が登録していますね~ 9月25日が楽しみです!  今回は生放送も行うようで、それも要チェックです!  

2010/08/24  サンプル2つ目

 さてさて、またしてもサンプルのネタですよー。今回は、WPFで作られたカラーパレット(カラーピッカー)のサンプルについて書きたいと思います。
 まずは、前回同様サンプルページのURL(8/19のエントリ参照)に行って「ColorPicker Custom Control Sample」という項目の「Download」から以前書いた手順でサンプルプロジェクトをVisual C# 2010で開いてみましょう。・・・と思ったら、前回とは違う点がありました。zipファイルを解凍し、csフォルダを開くと「~.csproj」というファイルではなく「ColorPickerSample.sln」というファイルがあります。「.sln」はソリューションを構成するためのファイルの拡張子です。「ソリューション」は、複数の「プロジェクト」から構成されて、今回のサンプルも二つのプロジェクトから構成されており、それで一つのアプリケーションになっています。今回も、この「ColorPickerSample.sln」をダブルクリックしてVisual C#を起動します。ソリューションエクスプローラーを見ると、二つのプロジェクトがあるのがわかりますね。とりあえず「ColorPickerSampleプロジェクト」の「MainWindow.xaml」をダブルクリックして開いてみましょう。なんだかへんなウィンドウが出てくるはずです。さぁ、「Ctrl + F5」で実行してみましょう! 
 実行すると出てくるのは、「ペイント」で言うパレットが右側に配置されていてそこにはすでに丸や四角が描かれています。これらの図形をドラッグすると、移動することができます。さらに、左側のツールボックスのような場所からDraw~ を選択すると、パレットに任意の図形を書くことができます。これだけでも、なかなかですがさらに驚くべきはカラーパレットが実装されているところです! 左下の灰色の部分をクリックすると、選択されている図形の塗りつぶし色もしくは境界線色を変えるメニューが出てきます。そのメニューをクリックすると、カラーパレットが出てきて、色を選択できます。 ん~、このカラーパレット欲しい・・・ 透明度も選べるなんてすばらしいです。これは、自分で作るアプリケーションに組み込むとかしてもいいんだろうか~。ライセンスが英語だったので自分には理解しきれません。誰か教えて~w
 さてさて、WPFらしいカラーパレットを見ましたが、やっぱりすごいですね~。自分で実装したら死んじゃいそうですねw いまさらですが、このサイトのエントリには全く画像が使われていません。その理由はひとえにasiramが面倒くさいがりだからですw 画像で説明すればもっとわかりやすいんでしょうね~ ん~、ブログとか既存のサービスを使えば楽なんだろうなぁ ASP.NETでがんばってかいけつしようかな・・・ 時間があればぁ  さて、次回はどうしましょうかね~

2010/08/19  平常運転に

 やっと落ち着いた感じなので、また普通にこのページを更新していきます! しかし、1ページにエントリをずらずら書くのは良くないよなぁ。とりあえず始めたサイトだったので、ぜんぜん考えていませんでした。あわよくば、ASP.NETで自動的に複数ページになるようにするとか・・・ どうしましょー。 さて、今回は久しぶりの更新なのでちょっと長めに行きたいと思います。
 3週間前にもちょろっと書きましたサンプルプログラムのネタです。ちょっと探し物をしている時に、MSDNのサンプルが置いてある所に迷い込んで、面白いサンプルをいろいろ見つけました。URLは、ここです。実は、サンプルと言ってもWPFのサンプルです。WPFを全然触ったことがない人にはよくわからないかもしれませんが、WPFの威力を知るには十分です。是非お試しくださいませ。
 とりあえず一つ目に紹介するのは、「WPF Controls Gallery Sample」というプログラムです。このサンプルは、WPFの威力を知るというよりは、WPFで使えるコントロールがよくわかると言った感じです。サンプルを実行するまでの一連の流れを書いておきます。
 まずは、前述したURLへ行き、「WPF Controls Gallery Sample」の欄を探してください。そこの「Download」というリンクをクリック、ページ下の「I Agree」(もちろん、同ページにあるライセンス条項に同意するという意味です)をクリックするとzipファイルをダウンロードできます。ダウンロードしたzipファイルを解凍すると、「cs」と「vb」というフォルダが入ったフォルダが解凍されます。もちろん、これは「C#」と「Visual Basic」という意味です。「cs」フォルダの中に、「SdkXamlBrowser.csproj」というプロジェクトファイルがあるので、それをダブルクリックして、Visual Studioを起動してください。そうすると、プロジェクトが読み込まれます。ソリューションエクスプローラーを見てください。読み込まれた項目があるはずです。このプログラムのメインウィンドウである、「Scene1.xaml」をダブルクリックしてデザイナを起動させてください。そうするとなんだかごちゃごちゃしたものが表示されますが、とりもあえずは「Ctrl + F5」で起動してみましょう。(Visual Studio 2010(Visual C# 2010)で実行してください。このプログラムは、.NET4.0を対象に作られているので、2008では実行できません。)
 実行すると、「XAMLPad Express」というものが起動するはずです。左の折りたたみメニューから、参照したいWPFのコントロールを選ぶとその見本とソースコードが右側の領域に表示されます。まぁ、これだけのことなんですがちょっとおもしろいですよね。Windows Formでみたことがあるようなコントロールが結構ありますね。Windows Formにはないコントロールとしては「Expander」なんか、外見は普通ですが簡単に折りたたみの項目を実装できていいですよね~ 一番驚いたのは「InkCanvas」ですね。これだけのXAMLコードで、ペイントのようなお絵描きができるなんて驚きです。何に使うのかはさておきw なんというか、「WPFにはどんなコントロールがあるか」というのもありますが、「このWPFコントロールの外見はどんなだろう?」ってときに使えそうですね。とは言っても、すべてのコントロールが載っている訳ではありませんが。
 とりあえず今回はここまで。次回もサンプルネタでいこうかな~ いろいろ試してみると面白いですよ!

2010/08/9  ハードだった・・・

 すみません、ずっと更新ができませんでした。もちろん、C78の準備です。いやぁ、もっと早めに済ませる予定でしたが結局ぎりぎりになってしまいましたw  ちょっと違うことに時間を取られすぎ(取りすぎ)てしまいました。見通しが甘かったです、はい。ちなみに、まだ全行程が終わったわけではなく、まだ作業が残っています。これから頑張ります!
 前回のエントリで「サンプルプログラムが~」とか書いていますが、ちょっと今は余裕が無いので、また今度のネタにしたいと思います。今回の更新で@asiramを少し更新しておくので、良かったら見てくださいませ~。

2010/07/26  第2回東方ニコ童祭!

 ついにやってきました第2回東方ニコ童祭! 2010/9/25に開催予定だそうです。 いやぁ、正直なところすっかり忘れていたんですが、こうちゃんさんのマイリス登録で気づきました。気が付いたらあれからもう1年近くになるんですね~ 時間が経つのは早いものです。
 もちろん参加します! ネタはどうするか全く決まってませんけどw だってC78で忙しいんだもの。前回は「C# でプログラミングを始めよう!」で動画デビューしたわけで、自分にとっても忘れてはならない大事なお祭りです。東方のネタでプログラムを組みたいなぁとか思うけど、一体何を作れば…? 本家のようなすごいシューティングなプログラムは作れないし・・・ う~む  なにかいい案があったら是非教えてください! といっても、私の技量で何とかなるレベルでお願いしますw
 次回のエントリは、WPFのコントロールについてでいこうと思ってます。おもしろいサンプルプログラムを見つけたので、それを紹介したいと思います!

2010/07/21  Silverlightいじり

 こりずにちょくちょくsilverlightをいじってます。やぁ~、silverlightおもしろいですねぇ~。前にも話題に出した内輪サーバーに乗せるのを作っているんですが、これがなかなかおもしろい。 現在作っているのは、サーバーの中の音楽データをブラウザのsilverlightで聴こう! みたいなのを作っています。ブラウザ版メディアプレイヤーみたいなのを想像してもらえば良いかと。でも、まだまだ機能は貧弱なんですけどね~ silverlightで音楽ファイルや動画ファイルを扱う事自体は非常に簡単にできます。MediaElementというクラスを使って、Sourceプロパティに音声データや動画データのURLをぶち込めばいいだけなので、単に再生するだけなら簡単にできます。問題なのは、再生・一時停止の制御やシークバーなどです。とはいっても、それぐらいだったらすこし頑張ればできちゃいます。
 シークバーの実装は、Rectangleクラスのオブジェクトを使いました。このオブジェクトは文字通り長方形を表し、幅を表すWidthプロパティの値を曲の進行具合によって増やしていくという方法を取りました。この実装をしていて思ったんですが、ニコニコ動画にうpした「C# でプログラミングを始めよう!」の後半で、自作の「Rectangleクラス」を作って解説したんですが、見事にかぶってますね~。 このときは、実際にRectangleが存在していることを知りませんでしたw(MSDNで調べればよかった~) まぁでも、RectangleクラスはWPFもしくはsilverlightで使うオブジェクトなので、いいべ☆
 あ~、WPFをまとめて勉強したいぃ~ そのためにはまとまった時間が必要です。細切れでやるのはどうにも性にあいません。 WPFを勉強すれば、その知識の一部はsilverlightでも使えるので一石二鳥です。早くやりたいです。

2010/07/16  コレクションやら

 更新の頻度がやばいなぁ。精進せねば。
 さてさて、ぜんぜん気にされていないかもですが@aisram進行中です。それなりに順調・・・です。時間が無くてちょっとやばいかもぉ がんばります。 今回頒布する予定のCDには、プログラミング講座な動画も収録しようと思っていて、実はそれは過去にニコニコ動画にうpしたもののリメイクにしようと思っています(っていうかします)。リメイクを作っていて思ったんですが、この一連の動画では「コレクション」と「ジェネリクス」については何も触れていません。ウィンドウアプリケーションを作るときにこれらは必須ではありませんが、知っているとかなり出来ることの幅が広がったり楽をすることができます。 ん~、CDに「コレクション・ジェネリクス編」みたいのを追加しようかなぁ。それぐらいだったら、こっそりニコ動にうpしてもいいかも~
 ちょっとコレクションについて解説すると、コレクションとは動的に要素数を変更することができる配列のようなものです。配列は、最初にサイズ(要素数)を指定してから値を入れていきますが、コレクションの場合は、サイズを指定せずにどんどん要素をメソッドで追加していきます。こうすることによって、無駄な領域を作らないで済みます。また、コレクションには様々な種類があって、配列に似ているList、キュー(要素を追加した順番で要素を取り出す)の役割をするQueue、スタック(一番新しく追加した順番で取り出す:食堂などのおぼんの取り出し方みたいなものです)を表すStack、キーと値のセットを管理するDictionary などがあり、用途に応じて使い分けることができます。他にも利点はあるのですが、わけがわからなくなるのでここら辺にしておきましょう。
 次は更新を早くしたいですね~ 

2010/07/11 うはぁ

 なんてこったい、前回の更新から一週間経ってしまった!申し訳ないです。 いやぁ、この一週間はなかなか忙しかった~ 勘弁してちょ
 @asiramも進めているんですが、これがなかなか大変で。。。がんばらねばぁ。
 さて、話題が尽きそうな今日この頃ですが、今日はVisual Studio 2010(以下VS2010) の素敵な機能第2段の紹介です。と言っても、すぐに終わりそうですが。 前にも書きましたがVS2008のWPFデザイナがちょっと不親切でした。それが2010だとすごく親切に! ・・・ってわけでもないんですよね~ ちょっと使った感じだけなんですけど。やっぱり、デザイナで各プロパティの簡単な説明は無し。Windows Formのように親切にしてほしいんだけどなぁ。まぁそれはいいとして(本当は良くない)、WPFデザイナで強化された点があるのです。それは、ブラシを設定できるプロパティをデザイナで設定する時によくわかります。なんと、デザイナ上でペイントソフトのようにグラデーションなどが簡単に指定できるのです。例えば、TextBlockというラベルのようなコントロールのForeGround(つづりが非常に怪しい)プロパティの値の項目をクリックすると、色が指定できるパレットが出てきます。そのパレットでグラデーションなどを指定できるのです。 いままでは、グラデーションを使いたいときはプログラマが自分で定義してそれを使わなければなりませんでしたが、この機能のおかげでより気軽にグラデーションが使えるようになりました。これは正直すごくうれしいです。 実際、プログラムにグラデーションを取り入れる人なんてめったに見ませんよね~  これは、グラデーションをプログラム中で取り入れるのが難しい&面倒 という要因が大きいんだと思います。あと、「プログラムは使いやすいインターフェース、シンプルなデザイン」が暗黙の了解になっている というのもあるかと思います。私は、この考えに逆らって、いろいろとやっていきたいと思っています(使いやすいインターフェースには逆らわないよw)。もっと面白い外見のアプリケーションとか、どんどん作っていきたいです! そのためにはいろいろな知識が必要で、ちょくちょくWPFやXAMLなどの本を読んで現在、燃料を溜めているところなので優しく見守ってね!
 あれ?VS2010の新機能の話のはずだったのに少し路線がずれたような~ ま、いいべさ~

2010/07/4  Visual Studio 2010

 そういえばまだVS2010についてはあまり触れていなかったような。実は主力PCにはVS2010未導入なのですが、私が使える別のPCには入っています。と言ってもVisual Web Developer 2010で、Visual C#ではないのですが。とりあえずVS2010を使ってみた感想を書くと、正直2008と大差ないです。しかし! 細かいところはもちろん変わっています。
 結構大きな要素としてはマルチモニタに強くなった点だと思います。これは画面一つで開発している人にはあまり関係ないかもしれません。俗に言うデュアルディスプレイ(PC一つに対して画面二つ)以上で開発している人にはとても便利になりました。VS2008でもプログラムファイル一つにつきタブで管理していましたが、2010ではタブ単位で別ウィンドウに分離できるのです。この機能によってメインモニタでロジックを映しておき、サブモニタにデザイナを表示させておく、なんてこともできちゃいます。もちろん、関係性が深いファイルを分離して交互に見ながらコーディングなんてことができます。 画面一つの場合はあまり関係ないみたいなこと書きましたが、最近では20インチ以上のディスプレイもだいぶ安価になってきましたから一つのディスプレイでも作業領域が広いものもありますよね。この場合でも、十分ウィンドウ分離機能は役に立ちます。
 他にもいろいろありますがそれはまたの機会にふれませう。 ってか、こんなこともうみんな知ってるかw

2010/06/28  あらためてC#

 さてさて、最近あまりプログラムに触れてないんですがなんとかネタをしぼりだしていきたいと思います。今回はC#はやっぱりすごいぜ! というのを再確認したいと思います。
 C#は.NET Frameworkが実行環境なわけですが、この.NETが良い働きをします。デスクトップで動くアプリケーションはもちろん、サーバー側で動くアプリケーションでも実行環境を提供します。これは、ご存じの通りデスクトップで使い慣れたライブラリをサーバーサイドアプリケーションでも使用することができるということです。これでウィンドウズフォーム開発しか経験のない人でも、C#さえ知っていればノウハウを学ぶだけでサーバーサイドアプリを開発できるわけです。これは、新しい言語の言語仕様等を新しく学ばなくてよいということですね。これは面倒くさがりな私にはぴったりなわけです。
 サーバーサイドアプリケーションはあくまでサーバーの中でしか動きません。サーバーの処理が終わってブラウザにページが表示されたあと、ページ遷移なしでプログラムを動かしたい場合があります。そのときに役立つのがSilverlightです。SilverlightのライバルはFlashなわけですが、とにもかくにもSilverlightはC#を使って記述できるわけです。Silverlightに関してはC#だけでは記述できないのですが(XAMLが必要)、それでもやはりC#を使うことができるので慣れた環境で.NETのライブラリを使うことができます。
 ざっと書きましたが私が一番言いたいのは、「デスクトップもサーバーサイドもクライアントサイドもC#でオールインワン!」ってことです。ここまでいろいろ出来る言語は少ないんじゃないでしょうか。最近、C#を主力にしてよかったー と思う今日この頃なのです。みなさんも、C#の素晴らしさをまわりに広めてくださいませ~

2010/06/22  そういえば

 最近は全然ASP.NETの話題は書いてませんね~。はっきりと書いていなかったんですが、とりあえずはASP.NETのお勉強はだいぶん前に一区切りつきました。前にも書いたんですが、ASP.NETの勉強に使ってた本はASP.NETのの部分が半分、(ASP.NETを使って)SQLサーバーの話が半分でした。実はこの前半部分しか終わらせていないんですが、とりあえずここで一区切りとしました。どうにもSQLサーバーを勉強する気になれませぬ。なんかデータベースってぱっとしない... もちろん、ビジネス系のプログラムにはつきものだと思いますが、そのような目的でプログラミングをしているわけではありませんし、大規模なサービスか何かをしなきゃ要り様になりませんよね(たぶん)。SQLを今回は勉強しなかった理由はもう一つあります。それは、「XML最強!」という理由です。LINQを知ってからは、面白いようにXMLが扱えるのでちょっとした情報を溜めるのには十分なのです。XMLは、正直言って詳しい仕様は知らないまま使っていますがこれは、逆に考えるとXMLの文法などに詳しくなくても、超簡単なルールさえ知っていればXMLを扱えるわけです。プログラムからはLINQで簡単にアクセスできますしね~(ここら辺の話は、前のエントリ参照) 動画でLINQ to XMLの簡単な話を作ろうかと本気で考えてたりします(後押ししてくれるとひょっとしたら本当に作るかも?)
 というわけでASP.NETの勉強は当分お休みです。しかしながら、もうそれなりのことはできると思っていますので、これからはわからない点が出てきたら適宜調べて補完するといった感じでしょうかね。あの本は実に参考になった... 今は、ちょっとWPFやらsilverlightをちょくちょくいじってみたり、サークル用の動画を作ったりですかね~  ここに書く話題がなくならなければいいけど。

2010/06/19  部分信頼

 同人サークル、いろいろと進んでいます。いろいろと書きたいところですが、それはまた今度。
 さてさて、今回のお話はsilverlightです。いまだにちょいちょいいじくっています。ちゃんと勉強をしたわけではないので、ちゃんとした知識がないんですが、少し触っているといろいろと試したくなってそれなりに調べてみたりします。それでわかったんですが、silverlightは「部分信頼」で動いているらしいのです。この部分信頼というのはそのままの意味で、プログラム(silverlight)は全てのことが信頼されているわけではないということです。これに対して、デスクトップで動く普通に使うアプリケーションは、いうなれば”全信頼”で動いてるわけです。で、結局”部分信頼”だとどうなるの? ってところですが、要はいろいろと制限がかかるということです。例えば、silverlightからはユーザーのHDDにアクセスしてファイルの操作などはできません。もしそんなことができれば、そのsilverlightが配置されているサイトにアクセスした人に対して、悪意のあるファイル操作が可能になってしまいます。これはとても納得できますね。 部分信頼として、制限されるのはそれだけではなく、silverlightから他ドメインへのアクセスも基本的にはできなくなっています。他ドメインにアクセス不可とは簡単にいえば、自分のサイト(そのsilverlightが配置されているサイト)以外の外部のサイトにはアクセスできないということです。これももちろん理にかなった機能です。他ドメインにアクセス許可があったら、そのサイトにアクセスした人は知らない間に他サイトに大量に要求を送って攻撃していることに。なんてこともありえます。
 しかしながら、この制限はしかたないのですが他サイトにアクセスできないというのはちょっと残念です。例えば、何らかの理由で動画で紹介したgetthumbinfo(ニコニコ動画の指定した動画の情報をXMLで返してくれるWeb APIです)から情報を取ってきたい時にも、制限のせいでsilverlightからはgetthumbinfoは外部サイトなのでアクセスできません。ちょっと歯がゆいですよね~  でも、このような仕様にしなければ悪意のある人は好き勝手やっちゃうわけですから、しょうがないですね。
 制限があるからと言って、silverlightがだめなわけではありません。むしろ当たり前の制限なんだと思います。もっとsilverlightいじりたいけど、時間はあるのか...?

2010/06/13  @asiram始動!

 水色の封筒の宛先に書かれていたのは自分の名前。そのすぐ下に書いてあるのは「配置場所:土曜日 東地区 ”テ” ブロックー58a」「サークル名:@asiram」。
 というわけで、コミックマーケット78に受かりました! 急に書いたので「?」がたくさん出ている人がいると思いますが、とにかくC78に出ます!頒布物の内容は、主にプログラミング入門+アプリケーションづくり といった感じにしようと思っています。目ざとい人はわかっていると思いますが、私のサークル@asiramの配置場所は東方島です。なので、お得意戦法の東方キャラがプログラミングを解説してくれるという内容で、東方島に乗り込みます(毎回ながら少し無理やりくさいですが、受かったからいいんでないのw)。
 この告知に合わせて、同人サークル@asiram専用ページを作りました(左のメニューの”@asiram”から行けます)。これからは@asiramの主な情報などはそちらに掲載していきます。この”ひとりごと”でもちょくちょく触れていくと思います。どうぞよろしく~
 ...しかし、来てくれる人はいるんだろうかw 心配ですw

2010/06/12  ちょいとつまみ食い

 あちゃー、前回の更新からだいぶ経ってしまいました。ちょっと今週は、いろいろと目まぐるしかったのです。
 さてさて、今回はsilverlightをつまみ食いしてしまいました。silverlightとは、Microsoftが提供しているブラウザのプラグイン(のようなもの)です。なので、当然ブラウザから利用する感じで、今現在ではsilverlightが埋め込まれたページを見るためには各々がsilverlightをインストールしなければなりません。しかしながら、結構普及してきているという記事をどこかで読みました。今ではあたりまえにお世話になっている.NET Frameworkも最初のころはOSにプリインストールされているわけではなく、利用するにはわざわざインストールが必要だったようなので、silverlightもそのうちWindowsのOSにプリインストールされるんじゃないでしょうか。
 で、silverlightってなにができるの? というお話ですが、とりあえず私は立ち位置的に最近では当たり前の技術「Flash」とほぼ同じものだと思っています(厳密に言うと違うかも)。というわけなので動画・音楽の再生はもちろん、2D・3D(といっても最近はやりの飛び出るやつじゃないです)の描写もできちゃいます。 そして、お察しの通りC#・VBを使ってコードを組むことができます。とは言っても、WPFと同じくXAMLでデザインを行います。C#+XAMLでsilverlightアプリケーションを作るわけです。
 silverlightを使うメリットとしては、まずは使い慣れたC#・VBを使ってコードを書くことができる点です。これは、新しい・知らない言語の仕様を覚えなおさなくてもよいということで、すぐに取りかかれますよね。実際silverlightの知識があまりないわたしでも、それなりにはsilverlightアプリケーションを作ることができました。 次のメリットとしては、開発環境が整っている点で、ここはやはりVisual Studioの力が大きいです。使い慣れたVSで、Windows Formを作っている感覚でデザインすることができます。 また、.NET Frameworkのライブラリを使えることも大きいメリットです。なので、もちろんLINQ to XMLもちゃんと使えます。
 とはいえ、手放しでは喜べません。ちょっとつまみ食いをしていてわかったんですが、silverlightで使用することができる.NETのライブラリは全てではない、ということが判明しました。ちょっとこれは残念ですね。今回いじっていて、やりたいことができない!ということがありました。ん~、でも全てのライブラリを使えるようにすると重くなっちゃうのかなぁ 、難しいところですね。 しかし、この点を抜いてもかなりおもしろい技術であることは間違いなさそうです。ASP.NETとsilverlightを組み合わせるという強力タッグも実現できます。これでjavascriptをがりがり勉強しなくてよさそうかな? また機会があったら続きを書きたいです~

2010/06/6  久しぶりの・・・

 久しぶりに動画をうpしました。(【プログラミング】C# で動画情報を取得!【さっと一品】) いやぁ、絶対再生数伸びないね、こりゃ。今日、閃いてその日のうちに動画を作ってうpしました。久しぶりに作ってもなんとかなりましたー。内容はニコニコ動画APIを使って動画情報を取得してみよう みたいな感じで、もちろんC#です。こんな対象者をしぼるような動画じゃあ伸びないだろうね...うん、わかってるよ。でも、誰かのためになるかもしれないじゃないか。そういうことにしておこう。 どうでもいいけど、「久しぶり~」コメントに泣いた。ああ、覚えてくれてる人いるんだ!ありがたいぜ!
 この動画、隠れたポイントはLINQです。またかい! って言わないでー。それほど感激したわけなんです。こうやって、お手軽に使えるのもLINQの魅力だと思います(とは言ってもSQLのLINQは全くわかりませんが)。やっぱり、”XMLファイルを扱える”というのは大きなメリットだと思います。今回のニコニコ動画のAPIもそうですが、Web APIは結果をXMLで返してくれるのが少なくないようで、LINQ to XMLの出番もそっち方面では多そうです。Web APIはほとんど触ったことがなく、正直言うと今回のニコニコ動画APIが初めてです。いやぁ、便利ですね~こんなに簡単にニコニコの動画情報が取得できるとは。しかしながら、少し調べても「検索結果を取得」するAPIは見つかりませんでした。例えば、検索キーワードと検索条件(タイトルなのかタグなのかなど)をAPIに指定して渡すと、検索結果の動画タイトルとURLの組み合わせ みたいな情報が取れるAPIなんてあったら便利かもねーと思う今日この頃です。 何に使うかはさておいてw そこは工夫次第ですね。
 今度作ってみるか・・・?とか思ったり思わなかったりです。

2010/06/4  もう少しXML

 感動ついでにLINQ to XMLをもう少し。XMLを読み取るのも必要だけど、やっぱり更新した部分を含んだものを保存したいですよね。これが簡単にできるんですなぁ。引き続き前々回のエントリで使った”schedule.xml”を使って、4月7日の予定を追加してみましょう。タイトルは「しなの日」、概要は「4と7ってだけだよ」で<april>にデータを挿入します。
 using System;
 using System.Xml.Linq;

 public class test{
  public static void Main(){

    XDocument doc = XDocument.Load(”schedule.xml”);
    
      XElement newElement = new XElement(”seven”,
      new XElement(”title”,”しなの日”),
      new XElement(”summary”,”4と7ってだけだよ”)
    );

    doc.Element(”schedule”).Element(”april”).AddFirst(newElement);
    doc.Save(”schedule.xml”);

  }
 }
 
 こんな感じです。あらびっくり、これだけで追加・保存ができちゃうのです。んー、強力。 まず1行目は前回と同様、XMLファイルをロードしています。その次は、追加するデータを作っています。このようにするとイメージとして、XElementオブジェクトnewElementは、
 <seven>
   <title>しなの日</title>
   <summary>4と7ってだけだよ</summary>
 </seven>
 という階層データを作ったことになります。わかりやすいですよね。 その次の行で、さっき読みこんだXMLの<april>要素の下に、作った階層データをAddFirstメソッドで追加しています。ちなみに、このメソッドを使うと同レベルの要素の一番初めに追加されます。 で、最後の行で更新したXMLのオブジェクトを保存しています。面倒なシリアライズなんて必要なく、Saveメソッドで保存するパスを指定してやればそれだけで保存できます。
 いや~ 実に便利です。LINQ to XMLはこの他にも強力な機能がたくさんあるらしいです。私が使ったのは前回と今回紹介したものだけなので、なんとも言えませんが、XMLファイルを検索したりもできるみたいです。詳しく知りたい人はいろいろ調べてみてください。 これにてLINQ to XMLのお話は終わりでっす。

2010/06/1  LINQ to XMLすごい!

 さてさて前回の続きを。需要があるのかどうかなんて知りませんw 前回掲載したXMLを”schedule.xml”という名前のファイルで保存してあるとしましょう。ちなみにXMLファイルを少し解説しておくと<schedule>がルート要素で、そこから階層が始まっていて、その下の要素は各月、その下は各日にちを表しています。日にちの下にある<title>と<summary>はその日のスケジュールのタイトル、概要をそれぞれ示しています。各月の下層要素にはそれぞれの日にちのスケジュールが書かれているイメージです。
 ここで、このXMLファイルから各日にちのスケジュール(タイトルと概要)をプログラムで取り出したいとします。ここでLINQが威力を発揮するわけです。例を見てみませう。(試す場合は、schedule.xmlをすべて半角で記述して文字コードをUTF-8で保存してください。C#のコードも、下記のものをコピペすることができないので、自分で打ってくださいませ。)
 using System;
 using System.Xml.Linq;

 public class test{
  public static void Main(){

    XDocument doc = XDocument.Load(”schedule.xml”);
    var query = doc.Element(”schedule”).Element(”april”).Elements();
    foreach(XElement xe in query){
      Console.WriteLine(xe.Element(”title”).Value);
      Console.WriteLine(xe.Element(”summary”).Value);
    }
  }
 }

 これで、<april>の下の階層の各日付にあたる各要素(この場合は<four>しかありませんが、この他に<five>や<six>などのそれぞれの日付の予定がある場合)のタイトル(<title>要素の値)と概要(<summary>要素の値)を表示することができます。これだけのコードでそこまでできます! ん?あんまり感動しなかったかな? XMLを使いたくなったらきっと感動するよ!
 最初は、XDocumentのオブジェクトを、XMLファイルを読み込んで作っています。その次の行で、ルート要素<schedule>の要素の下の階層の<april>要素を取得して、<april>以下の要素をコレクション(XElementの配列みたいなもの)で取得して変数queryに代入(参照)させています。この階層を下っていく感じ、わかりやすいですよね~ で、varってなんぞや? 型推論という便利な仕組みらしいです。勝手に型を右辺から推測して補完するというものらしいです(ちゃんと勉強したわけではないので少し怪しいです)。varの代わりにこれでも行けます”IEnumerable<XElement>”。 で、foreachでそれぞれのXElementを取得、その下の<title>と<summary>要素を指定して、そのXElementのValueプロパティでそれぞれの値を取得できます。
 これだけみても、LINQ to XMLの強力さが見えた感じがしませんか?  今回はちょっと初心者を置いていってしまってすみませんm(__)m でもきっと、がんばれば解読できるぜ☆

2010/05/30  C# 3.0のいいところ

 ん~ 最近更新をしようとして前回の日付を見ると、”もうこんなに経ったの!?”と思う今日この頃です。
 さてさて、C# 4.0がリリースされているのにかかわらず3.0の話をするのはちゃんと理由があります。ちょっと前にお世話になったC# 3.0のお話です。C#では3.0にバージョンアップするときに様々な機能が付け加えられました。WPF(Windows Presentation Foundation)やWCF(Windows Communication Foundation)などなど・・・。その新要素の一つ「LINQ」が今回のお話のネタです。
 LINQとは、簡単に言うとXMLやSQLサーバー等のデータベースに対する新たなアクセス手段 といった感じで、具体的にはライブラリに追加されたクラスを用いてそれぞれのデータにアクセスします。 で、ちょっと前にXMLで用いるLINQ(LINQ to XMLと呼ぶらしいです)を使ったんですが、これがとっても便利だったのです。 プログラムからXMLファイルにアクセスする方法はもちろん昔からあったようですが、これが結構面倒らしくちょっと解説してあるページ(MSDN)を読んだんですがすごくめんどくさそう・・・ で、良い方法はないかと探していたところ、LINQ to XMLが解説してあるページに行きつきました。LINQを使ってXMLにアクセスするのは、直感的に行えてわかりやすく、内容を追加してそれを保存するのもすぐにできます。これは便利だ! C#orVBでXMLを扱いたい人は絶対に知っておいてほしい技ですね! 
 え? どんなときにXMLが使いたくなるかって? ふむふむ、確かにそうです。ふつうのデスクトップで動くアプリケーションを作っているとあまり出番がないので、別段いままで困らなかった人も多いでしょうねぇ~(もちろん、デスクトップアプリでも出番はありますよ!) サーバーサイドのプログラムを作っていて、何かの情報を保存しておきたくなった時に、XMLくんはひょっこっと頭を出します。XMLはeXtensible Markup Languageという名前からわかるとおり、マークアップ言語です。ということはHTMLのようにタグ(<body>みたいな奴) を使うわけです。で、XMLでは自由に要素を作ったりして記述できます。たいていタグで階層を作って情報を管理しますが、様々な規則があります(この規則は私もあんまりわかりません。最低限のものであれば、そんなに規則を気にせずにXMLを記述できます)。例えばこんな感じにXMLファイルは記述できます。(ここに記載されているコードをそのままコピペしても使えません。<,>," を半角に直してください)
 <?xml version=”1.0” encoding=”utf-8” ?>
   <schedule>
      <april>
         <four>
            <title>学校へ行く</title>
            <summary>学校へ行きたいんだ!</summary>
         </four>
      </april>
      <may>
         <twelve>
            <title>会社へ行く</title>
            <summary>会社にも行きたいんだ!</summary>
         </twelve>
      </may>
   </schedule>
とまぁこんな感じで記述することができます。これをプログラムで扱いたいとき、どうやって各要素の値を指定して取ってきたり、登録したりするのかが問題です。それを解決してくれるのがLINQなわけですね~。今回は長くなってしまったので、LINQの話は次回!

2010/05/24  ASP.NETのいいところ

 よし!今回は前回の更新から2日しか経ってないぞ。これぐらいを保てるといいんですけどねぇ。
 ASP.NETの良さについて前回に引き続き語っちゃいます。 さて、Webアプリケーションをつくるとき、なにかと出番があるjavascriptですが私はjavascriptの勉強はしたことがなくあまりどのような仕組かわかっていません。もちろん、javascriptを理解していた方がより効率的でしょうが、ASP.NET(Visual StudioもしくはVisual Web Developer)で開発している場合、あまり知らなくてもVisual Studioが必要に応じて自動的にaspxファイルに自動的に挿入してくれます。これは、本当に便利な機能です。たとえば「TreeView」というコントロール(ツリー状に項目を表示するアレです)を追加した場合に、javascriptが自動挿入されます。 このjavascriptの自動挿入は、Visual Studioでの編集画面(aspxファイル)に挿入されるわけではなく、そのaspxファイルへの要求があったタイミングで、aspxの中身がHTMLに変換されるときに挿入されます(つまり、サーバーで処理されるときに自動挿入されます)。この仕組みのおかげで開発中のaspxの内容がごちゃごちゃにならずに済みます。 ふつう、このようなツリー状のコントロールは、HTMLだけでは実現できなく、javascriptの利用によって実現できます。これを自動的にやってくれるので、javascriptの知識がなくてもjavascriptが使えちゃうわけです。いやぁ、すばらしい。
 ちなみにjavascriptはWebアプリケーションにおけるクライアントサイドで動くプログラムです。ASP.NETやPHPなどのサーバーサイドで動くプログラムに対して、ユーザー側で動くわけです。クライアントサイドのjavascriptでは、通信を行わずに動作をするものが多く、ちょっとした動きなどに利用されます。サーバーサイドで動くプログラムは、通信が発生しなければ処理することができません。これだけだといろいろ細かいことができないので、クライアントサイドでうごくjavascriptを使うわけです。
 今日はこの辺で~。

2010/05/22  やばやば

 最近更新が遅れてる... 言い訳をすると、昨日更新しようと思っていたのですがしっぽり忘れてしまいました。
 さてさて、今日のネタはASP.NETの素晴らしさです! なぁんて、褒めすぎですね。 でもでも実際素晴らしいんだから仕方ないぜ☆ 以前にも書いた内輪サーバーに載せるサイトをASP.NETで作っているのですが、これがなかなかおもしろいです。閉じたサーバーだから、細かいことは考えずにいろいろ作れるのがいいですね~ 最近までは、個人をCookieで見分けて、それぞれのユーザーがアップロードした画像が、他のページの背景になる というものを作っていました。素敵な絵がページの背景にあると、テンション上がりますよぅ 具体的にどうやって実装しているのかというと、まずログインページでIDとパスワードを指定してログインしてもらいます。ログインが成功すればCookieを発行し、そのクッキーには入力してもらったIDの値を格納しておきます。 それぞれのページの<BODY>要素のid属性とrunat属性を設定して、HTMLコントロールとしてプログラムで扱えるようにしておきます(これがかなり便利)。こうしておくと、id=”BODY” runat="server"としたときにプログラム内で BODY.Attributes[”background”] = ”Img/marisa.jpg”; のように指定することができます。このコードでは何をしているかというと、<BODY>要素のbackground属性にImg/marisa.jpgという値を設定していることになるのです。画像ファイルの指定(コードの右辺)を動的(ランダムにアップロードされている画像を選択等)にすれば、アクセスするごとに背景画像が変わるように作れます。 これを個人単位で扱うときに、Cookieが役に立ちます。私の場合は、サーバーのあるフォルダの中にクッキーのIDに設定された値と同じ名前のフォルダを作り、背景画像を設定する際にその個人用フォルダから画像をランダムに選択するようにしました。
 これだけでも、結構おもしろいですよ~。 あとから考えたのですが、<BODY>要素のbackground属性を使えば、背景画像を設定できるのですが、細かく背景画像の位置(<BODY>要素に指定すると、画像が縦横にリピートされてしまいます。リピートなしや、右下に配置する)などは指定できないので、CSSを使うことにしました。HTMLではCSSを使う手段は3つあります。1.外部ファイルに記述、2.HTMLの各要素のstyle属性に直接指定する、3.HTMLファイルの<HEAD>要素内に<style>要素の中に記述する です。今のところ3.の手段で実装しています。実現の仕方は、さっきと似ていて<HEAD>要素の中のコードをプログラムで追加してやります。例えば(このときにも、id属性とrunat属性を設定しておく)、HEAD.InnerHtml = ”<style type=¥”text/css¥”> BODY{background-Image:url(¥”marisa.jpg¥”);} </style>” のようにします(InnerHtmlのつづりがおかしいかも)。こうすれば、背景画像が設定されます。このコードの右辺を動的になるように工夫すれば、背景画像の細かい配置設定もできるようになります。ちなみに、たまにある¥ですが、これは”をエスケープするためのものです。
 ずいぶんと長くなってしまいました。なんかすごい微妙な話をしてしまったような・・・ まぁいいべさ~

2010/05/17  そろそろ何か作りたい

 5日もサボってしまいました。ほんと最近は時間がないです。しかしながら、それを言ってばかりいても仕方がないので、がんばります!
 さてさて、それなりにASP.NETの知識も溜まってきたので、なにか作りたいと思う今日この頃です。とはいっても、このサイトで使うものはまだ少し作るのは早い気がします。そんなわけで、この前書いたサーバーでいろいろやってみようかなぁ~と考えています。 そんなことを考えていて思ったのですが、たとえばこのサイトをASP.NETを使ってものに変更するときは、どのツールを使うのでしょうか? このサイトを作ったときはWeb作成ソフト(Expression Web3)を使いましたが、ASP.NETを勉強するときはVisual Studio 2008を使っています。Visual StudioでもWebデザイン(CSSなどを使う)は出来るようですが、どう見てもやりにくそうです。かといってWeb作成ソフトでASP.NETを使ったサイト(C#でコードビハインドで書くことなど)を作れるんだろうか・・・ 簡単なものを作るのであればVisual Studioでも何とかなりそうですが、そうもいきません。
 これは、やり始めてみないとなんとも言えませんが、たぶん今使っているExpression Webで編集を行うような気がします。何を隠そうこのソフト、Microsoftが作っています。なので、「ツールボックス」にはちゃんとASP.NETのコントロール群が登録されています。しかしながら、まだExpression WebではASP.NETを使ったことがないので、コードビハインドの部分をどうするかなどはよくわかりません。ここら辺はわかったときにまた書きたいと思います。
 しかし、今日の記事は何を言いたいのかよくわからんw

2010/05/12  初めてのサーバー環境

 なかなか勉強が進まないasiramでございます。がんばるぜぇ~。
 さてさて、題名にもあるようにWindows Server 2008でASP.NETを動かせる機会を得たので、実際にそこでWebアプリケーションを動かした時の話をひとつ。このサーバー、自分のものではないのですが結構自由に使える環境なので、これからテストなどに使っていこうと思っています。おそらくこのサーバーが外部のネットワークにつながることはないと思います。現状はイントラネットのみで動いています。 で、Visual Studioで作成したWebサイト(Windows Formで言うプロジェクトのようなもの)をサーバー側の所定の位置に配置しなければ、他のパソコンに公開することができません。今回用いたのはVisual Web Developer(以下、VWD)です。ASP.NETはVisual C# Expressでは作成できません。ただし、Visual Studio のStandardエディション以上のエディションなら、ASP.NETでもWindows Formでも作れます。
 どうやって配置したかを簡単に言うと、サーバーの仮想フォルダにWebサイトの中身をそのまま突っ込んで、IISマネージャで突っ込んだフォルダを右クリック、「Webアプリケーションへ変換(項目の名前が怪しいですw)」を選択してやればOKでした。結構簡単にできたので少し拍子抜け。 サーバーのフォルダに突っ込む際に、今回はそれらのファイル・フォルダをサーバーにFTPで転送してから、サーバーのエクスプローラーで移動させました。
 どうも、Visual Studioの(Expressよりも)上位エディションには「Webサイトの発行」という項目があるようなのですが、無料版であるVWDにはその項目がありません。この「発行」を使えば、今回行った方法よりもスマートに済んだ様な気がします。
 そろそろ、データベースの勉強に入ろうかと(使ってる本の次の章がデータベースなのです)思っているので、気合いを入れて挑まねば~

2010/05/09  デバッグはすごかった

 ここに書くネタがなくなったらどうしようと思う今日この頃です。 さて、今日はデバッグのすごさを知ってしまったので、その話題です。ここで言う「デバッグ」とは、Visual Studioのでデバッグ機能のことで、バグを探す作業自体のことではないのでご注意を。
 Visual Studioのデバッグ機能は、その名の通りバグを探すための機能で、F5キーを押すと実行できます。何を隠そう、わたくしはこの機能をつい最近までまともに使ったことはありませんでした。何分、独学でやっているので後回しにしていました。ん~、今思えば実にもったいない。
 では、簡単にその機能と使い方を説明します。とりあえず、Visual Studio(Visual C#などもVisual Studioです)でプログラム(コンソールアプリでもWindowsフォームでもなんでも良い)を開いた状態で「F5」キーを押します。そうすると、Visual Studioはデバッグモードになります(何かウィンドウが出てきたら「はい」をクリックしてください)。このときに構文エラーなどがなければプログラムが実行されます。で、そのプログラムを動かしていきます(ボタンを押して、イベントを発生させるなど)。そして、その処理の途中でエラー(例外)が発生すると、Visual Studioが自動的に例外が発生したメソッドを示してくれます。 これだけでもすごいですが、その時コードエディタの下部にそのときの変数の状態(その変数に何が代入(参照)されているかがわかります!)、メソッドコールスタック(名前が不安:現在の処理がどの様な順番でメソッド呼び出しが行われているかが分かる)などが表示されています。特に変数の状態はエラーの解析に役立ちますよね。
 プログラムの途中でこの変数の中身がわかる機能などを使いたい場合は、プログラム中の任意の行を指定してその場所で機能させることができます。これは、実行させたい行に「ブレークポイント」を指定すればよいのです。ブレークポイントは、コードの左側の灰色の部分をクリックすれば設定でき、設定されると赤い丸が付きます。この状態でデバッグを行えば、該当の行でプログラムは一旦ストップし、変数の状態などを確認することができます。
 この他にも機能はあるようですが、たぶん頻繁に使う機能はこれなんだと思います。 んー、文章だけだとやっぱりわかりづらいですよねー。いつか動画で紹介できればいいなぁ

2010/05/6  ASP.NET勉強中⑩

 まだやってるのぉ? まだやってます。はい。 いやー、時間が欲しい今日この頃です。最近、それに加えてASP.NETの底の深さを実感して、さらに時間が足りないなぁと思ったりします。Web関係のプログラミングは、Windowsプログラミングに比べると気に掛けなければいけないことが多くあります。たとえば、リクエスト・レスポンスの仕組みや、似たようなページをいちいちオブジェクトを生成してHTMLを生成させないためにキャッシュを使ったり・・・ とにかく、いろいろと面倒なことが多いです。 それに、Webアプリケーションはとくにデータベースが一緒になることで威力を発揮する場合があります。たとえば、ユーザーに何かの情報を登録してもらうようなアプリケーションは普通データベースを使うことになりますよね。もちろん、テキストファイル形式や、XML形式のファイルなどに登録してもらった情報を蓄積していってもいいのですが、やはりその量や種類が増すごとに扱いずらくなってしまいます。データベースはそのような情報を効率的に扱う仕組みです。 ということで、ASP.NETやるなら、データベースの勉強もした方がいいべ? ってなわけです。ああ、面倒そうだぁ がんばらねば。

2010/05/2  ついったーってどうなの?

 しまったああああ。前回の更新から4日経ってしまいました。これぞGWの魔力? とは言っても休みは今日からだったのですが。
 さて、今日は今流行りのツイッターについて。 ここで衝撃事実を。わたくしasiramはツイッターをやったことがありません! さらに言うとmixiもやったことないぜ☆ なぜやらないのかを簡単に言えば、「面倒だから」につきます。いやぁ~、だってmixiは日記だしついったーはつぶやき、どちらも頻繁に更新しなきゃなりません。ちょっとそんな気合いは無いなぁ。
 まぁ、そんな私事はどうでもよいのです。今回はちょっと前(1,2カ月前)に読んだ「日経ソフトウェア」のとある記事に載っていたことについてです。たった1ページの記事なのですが、そこにはツイッターについて考えさせられることが書いてありました。その記事では、「ツイッターでつぶやくことによって、まとまったエントリが書けなくなる(ちょっと簡略化しすぎかも)」というものでした。ここで言う「エントリ」は、ブログに書く記事(日記)やこのページのこの記事などのことです。確かに、ブログの記事などはその日にあったことを書くことが多いですよね。ツイッターでつぶやくのは、今あったことや今の心情などです。これらをツイッターにつぶやき続けるとどうでしょう。ブログに書くことがなくなってしまう、ということです。
 その記事を書いた人は、「ツイッターでつぶやいたことで満足してしまう」と書いていましたが、全くその通りだと思います。やっぱり、いろいろなことをため込んでから、記事を書いたほうがよい記事を書けると思います。ツイッターで短くつぶやくことによって、溜めることなくだだもれにしてしまうのはもったいない。 また、ツイッターでつぶやくとブログで1日単位でエントリを書く場合と比べると、後で見直せないですよね。ツイッターでも履歴は残るとは思いますが、いちいち見直すのはかなり骨でしょう。それに比べ、ブログでは情報も整理されていて、検索サイトから欲しい情報を求めてやってくる人のためにも役に立ちます。
 んー、ツイッターが悪いものと言いたいわけではないんです。このようなことを頭に入れて使えば、きっとおもしろいツールなんだと思います。 ちなみに、この記事を書いた理由は、ちょくちょく見させてもらっているブログでそれまではほぼ毎日更新していたのに、「ついったー始めました!」というエントリから更新がストップしているのを見つけてしまい、日経ソフトウェアの記事を思い出したからです。
 ツイッターもいいけど、まとまったものも出していきましょうね!

2010/04/27  時間が経つのは早い

 最近の更新は3日おきになってますねw 最近すぐに3日経ちますなぁ まとまった時間で一気にASP.NETの勉強を進めたい今日この頃です。んー GWという金色の輝きがもうすぐありますね。ここでがばっと進めたいところです。
 しかしながら、ASP.NETを今勉強しているわけですがこの技術をニコニコ動画等で紹介とかできないよなぁ~。マニアック(?)すぎるし、それなりに基礎知識がないと理解できない部分が多いし・・・  でも、せっかく勉強したんだから、動画講座をまたやりたいです。見たい人っているのかな? 再生数はすごいことになるんだろうなぁ~ ま、しょうがないね。

2010/04/24  時間が欲すぃ

 休みが終わった後もそれなりに動画を作ろうと思っていたのですが、それも難しそうです。時間が足らない! とは言うものの、がんばれば時間は作れそうなんですがそうするとASP.NETの勉強がおろそかになりそうなので実現できていません。作る気持ちはあるんですけどねぇ。
 今日は、ちょっと前に読んだWPFの話題です。WPFについては過去の記事を参照してください。 本の名前は忘れましたが(XAML入門 みたいな本です)、その本に載っていた話題です。今までのアプリケーション(Win32APIや.NET Frameworkのウィンドウズフォーム)を描画するときの処理はCPUの仕事でした。このときの描画とは、ウィンドウの中の部品などをPCの作業領域に描写することです。これに対して、WPFアプリケーションを描画するのはGPUです(正しくは、GPUが使える状況であれば描画処理をGPUが担当し、使えなければCPUが描画します)。GPUとは、Graphics Processing Unit のことでグラフィックボードなどや、オンボードの状態で搭載されている場合があります。GPUは名前の通り画像処理を主な目的としたもので、画像処理を担当させればCPUよりもかなり高速に処理できます。 WPFではこのGPUを使うことができ、その性能を発揮することができます。
 これからは、アプリケーションが早く動くかもしれませんね~

2010/04/21  作りたいもの

 もう前回の更新から3日が経ってしまいました。月日が流れるのは早いものです。
 さて、自分は今ASP.NETの勉強をしているわけですが、やっぱり勉強するからには何かしら作りたいですよね。Webアプリケーションは、Windowsフォームなどと比べ作れるアプリのタイプが相当異なります。だから、作りたいものを想像するのも結構難しい気がします。
 とはいえ簡単に思いつくところでは、アクセスカウンターと掲示板ですかね。特にアクセスカウンターについては当サイトには無い機能なので、ぜひとも作成して使いたいです(アクセスカウンターの機能は、プロバイダ指定のCGIを使えばできるのですがあえてしませんでした)。掲示板もできればほしいところです。ちなみに、memoWI専用掲示板はプロバイダが指定するCGIを使っています。 そのほかに思いつくところでは、サイトの管理アプリケーションです。実を言うとこれが一番欲しい機能だったりします。このアプリでは、Webブラウザで専用のページに行き、専用のフォームなどに日記等の内容を入力すればサイトの該当ページを更新できます。つまり、専用のソフトウェアなどの環境なしにこの「ひとりごと」などを編集できるわけです(FTP等でほかのPCに移して編集、アップロードという手もありますが、わずらわしいです)。 現状、私はExpression Webが入ったPCでこのサイトの更新をしているのですが、最近ではそのPCとは別のPCを使うことが多くなっています。そのPCで気軽に「ひとりごと」を編集できればいいなぁと思う今日この頃です。そうすれば、外出先でも更新できますし。
 管理アプリなら、もう少しで作れそうなところまで来ている気がします。あとは、ログイン処理のやり方を勉強すればいけそうです。 これを目標にがんばります!

2010/04/18  ASP.NET勉強中⑨

 引き続きASP.NETを勉強しています。前にも書きましたが、教科書として使っているのは「基礎からのASP.NET」という本です。この本、実は1/2がASP.NETでもう半分がデータベース(SQLサーバー)のことについて書いてあります。SQLサーバーとはデータベースのことで、その本の後半ではASP.NETでSQLサーバーを利用する方法が掲載されています。 正直なところ、データベースは勉強するつもりはなかったんですが、最近はどうしようかと迷っています。
 データベースは大量のデータを効率よく扱うための仕組みです。Webアプリケーションを作るとき、ユーザーに様々な情報を入力してもらって、そのデータを保存、再びアクセスしたときにそのデータをWebフォームに適応させる必要があるときが多々あると思います。このようなときにはやはりデータベースが必要になってくると思います。こうやって考えていくとSQLサーバーは必要かなぁと最近思っています。
 とは言うものの、本を見る限りそれなりに面倒そうです。まずは、SQL文のことについて理解する必要があります。これは、データの作成、挿入、削除などの命令を出すときなどに使います。さらに、Visual Studio等でのSQLサーバーの設定方法、ASP.NETでSQLサーバーのデータを動的に扱う方法なども理解する必要があります。 さぁて、どうしたものかなぁ

2010/04/17  つまみ食い

 そろそろプチ勉強みたいな記事はやめて、いつも通り思ったことなどを書いていきたいと思います。もちろん、ASP.NETの話題は多くなりそうですがw。
 さて、今回はWPFをちょっといじくってみたときの話を一つ。WPFとは、「Windows Presentation Foundation」のことで、Windowsフォームの進化版(本当に進化しているのかどうかはわかりませんが)のようなもので、とくに見栄えやUI(ユーザーインターフェース)、メディア関連などがWindowsフォームより強化されています。これを使えば、テキストボックスの背景色を透明にするなんて朝飯前です。
 で、しつこくメモ帳っぽいものをWPFで作ってみようと思い、ちょっといじくりました。メモ帳にはなくてはならない「メニュー」を実装しようと思い、ツールバーから「Menu」を追加してさらに細かい項目も追加していきます。実はこの時点でかなり苦労をしているのですが、それは置いておきましょう(デザイナが不親切すぎる気がする! Visual Studio 2010に期待!)。一番苦労したのが、メニューの項目のショートカットキーを設定することです。これは、Windowsフォームでは、「ShortcutKeys」プロパティで指定すればいいだけなのですが、WPFではそう簡単にはいかないようなのです。ShortcutKeysに該当するプロパティはありません。 これを実現するためには、「コマンド」という仕組みを利用しなくてはならないらしいのです。これが非常に厄介で、最初はさっぱりわかりませんでしたが、なんとかそれなりに理解できました。それがどのようなものかはここでは書きませんが、参考にさせてもらったサイトのリンクを載せておきます。 http://w4ard.s26.xrea.com/weblog/2008/07/04T232149.html この記事を最初に読んだときはさっぱりわかりませんでしたが、最後にはなんとか理解できるようになりました。もうひとつ参照記事をhttp://bbs.wankuma.com/index.cgi?mode=al2&namber=48925 この二つをみれば何とかなる人も多いと思います。しかし、もっと単純にショートカットキーを割り当てることはできないんだろうか・・・。
 WPFで戸惑う点として、XAMLの存在もあると思います。少し調べてもらえばわかると思いますが、WPFはC#だけではなく、XAML(eXtensible Application Markup Language)と組み合わせて記述しなければなりません。 リンクの記事を見てもらえばわかりますが、後者はC#で実装を、前者はXAMLで実装をしています。このように、実現手段が二つあるのもWPFの特徴であり、初心者を戸惑わせる要素だと思います。しかしながら、それを克服すればきっとおもしろいアプリケーションを作れるのではないでしょうか。 WPF恐るべし!

2010/04/13  ASP.NET勉強中⑧

 さて、前回はASP.NETの独自のタグはHTMLタグに変換されて送信され、プログラムのコードなどはHTMLタグと一緒に記述されることを話しました。 そのようにHTMLタグと一緒のファイルにプログラムのコードを一緒に記述する形式のことを「インラインコード形式」と呼びます。これに対して「コードビハインド形式」と呼ばれ、HTMLタグなどが書かれたファイル(.aspxファイル)とは別のファイル(.aspx.csもしくは.aspx.vb)にプログラムのコードを分けて記述する形式があります。ふつうは、コードビハインドが用いられます。理由は、「デザインとロジックが分離できる(デザイナーとプログラマーが分業できる)」や「コードの可視性(見やすさ)が高まる」等です。欠点は、ファイルの数が増えてしまう点です。
 前回も話しましたが、ASP.NETの独自タグはHTMLタグに変換されてブラウザに送信されます。具体例を見てみましょう。次に示すのは、よく用いるLabelコントロールを追加したときに、記述されるタグです。
<asp:Label ID="Label1" runat="server" Text="うほっ"></asp:Label>
ラベルコントロールは、単に文字列を表示するためのコントロールです。このタグが、サーバーで以下のようにHTMLタグに変換され、ブラウザに送信されます。
<span id="Label1">うほっ</span>
これなら標準のブラウザでも処理できますよね。
 今回はここまで。これからはASP.NETの話ができますね~

2010/04/11  ASP.NET勉強中⑦

 そろそろASP.NETのお話を。 さて、みなさんはURLの最後に「.aspx」という拡張子がついたページを見たことがあるでしょうか。そのページこそ、ASP.NETで記述されたページなのです! とはいえ、もっともメジャーな「.html」の拡張子に比べれば、利用されているのはまだまだ少数です。これは、いつか書いたようにASP.NETは普通とは異なるサーバー環境がなければ動かないことに起因しているように思われます。
 さて、ここでポイントなのが普通と異なる「サーバー側の実行環境が必要」であって、「クライアント(ユーザー)側の実行環境」は特に意識せずにASP.NETが使われているページを閲覧できる点です。普通のブラウザはHTMLで記述された「.html」等の拡張子が使われたページを表示できます(CSSファイルなども適用できます)。とすると、ブラウザは「.aspx」の拡張子であるASP.NETのページを閲覧するためには、何か特別なプラグインのようなものを追加するなどしないといけないように見えます。が、お察しの通りそのような邪魔なものを導入する必要もなく、普通のブラウザでも「.aspx」ページを閲覧できます。これを実現するための仕組みを簡単に説明します。
 と言っても結論は「ASP.NETの独自の要素は、HTMLタグに変換されてブラウザに送信される」という簡単な仕組みです。実はASP.NETでは、通常のHTMLタグと混ぜて記述することになっています。しかし、これ自体はjavascriptやPHPなどでも用いられる方法です。ちなみに、混ぜると言ってもごちゃごちゃに混ぜるわけではなく、ちゃんとわかりやすく分離して記述します。 「混ぜる」というのは、HTMLタグが記述してある中に、C#もしくはVisual BasicのコードやASP.NET独自のタグなどを記述するということです。
 ASP.NETはHTMLに変換されるわけですが、これ以外にもASP.NETの仕組みはたくさんあります。それはまた今度。

2010/04/08  ASP.NET勉強中⑥

 今回はPOSTメソッドとGETメソッドのお話。 前回、HTTPのリクエストには様々な情報が書き込まれていることを取り上げました。その情報の中に、「通信方法(メソッド)」が含まれています。この通信方法には「GETメソッド」と「POSTメソッド」というものがあります。この二つはリクエストをする際に、追加のデータを付属させたいときに、どのようにリクエストと一緒に送信するかの方法を定めたものです。追加のデータとは、たとえば検索キーワードやテキストボックスに入力された内容などです。
 まずはGETメソッドについて。これは、実はすでに触れた方法で追加のデータを送る方法です。それは、「QueryString」です。追加データをURLの後に足すことでサーバーに送信するわけです。GETメソッドの利点は、「お気に入り」などでURLを保存するときに、QueryStringも一緒に保存されることです。このことによって、該当ページに再アクセスするときに追加データを復元して、ページ内容も同じにすることができます。 欠点は、大きいデータを送信できない点です。URLに追加することになるので、大きいデータを追加すると、とても長くなってしまいますよね。
 POSTメソッドでは、QueryStringは用いずに、リクエストパケットの「メッセージボディ」という場所に情報を格納してサーバーに送信します。リクエストパケットとは、今まで出てきた「リクエスト」の厳密な呼び方と思ってください。リクエストは「パケット」という1と0の組み合わせでできたもので構成されています。リクエストパケットは「ヘッダ」と「ボディ」に分かれており、この「ボディ」に追加するデータを書き込んでサーバーに送信するのがPOSTメソッドです。 ちなみに、GETメソッドではリクエストパケットの「ボディ」部分はカラの状態で送信します。 POSTメソッドはGETメソッドよりも送信できるデータ量の制限が少ないので、Webアプリケーションで多く用いられています。
 ちょっと長くなってしまいましたが、これはASP.NETでプログラムを書く場合に意識しなくてはならない重要なことです。長くなったのはしょうがないね~

2010/04/06  ASP.NET勉強中⑤

 この時期、いろいろなことが始まります。asiramもそれなりに新しいことがまわりで起き始めていますが、それはどうでもいい話。
 さて、HTTPのお話を。 普段私たちがブラウザでWebサイトを閲覧するとき、たいていの場合「リンク」をクリックして異なるページにジャンプしますよね。この処理はもちろんHTTPの仕様に従って行われています。リンクをクリックするなどして、他のページへ飛ぼうとするとき、Webブラウザから「リクエスト」がWebサイトが置かれているサーバーへ送信されます。この「リクエスト」には、ジャンプしたいページのURLや、Webブラウザの種類やバージョン、通信方法(メソッド)などの情報が書かれています。このリクエストを受け取ったサーバーは、そこに書かれている情報のURLのHTMLファイル等や、正常に通信ができたかどうか、サーバーのバージョンなどが書かれた「レスポンス」をWebブラウザに送信します。それぞれ日本語に直すと「要求」と「応答」になります。 HTTPは、この要求と応答を常にセットにして通信を行います。ちなみに、「リクエスト」がサーバーから送信されることはありません。常にWebブラウザから「リクエスト」が送信されて、サーバーが「レスポンス」を送信します。
 ASP.NETでも、もちろんこの仕組みを理解したうえでコードを書かなくてはなりません。いままで扱ってきたWindowsアプリケーションとは全く違う仕組みを踏まえてプログラムを書くので、この概念を把握しておくことが重要です。
 次はGETとPOSTメソッドあたりかな~

2010/04/04  ASP.NET勉強中④

 もう少しだけ基本的なことを。Webアプリケーションで大切なことの一つに「HTTP」の仕組みがあります。HTTPとは「Hyper Text Transfer Protocol」のことで、数あるプロトコルの一つです。プロトコルとは、「規約」などの意味で簡単に言うと決まりごとのようなものであり、HTTPは通信に関するプロトコルです。つまり、HTTPは通信に関する決まり事を定めているのです。
 URLの初めに、「http://」とありますよね。この「http」はそのまま「HTTP」のことを指しています。このように指定することによって、「HTTPを使った通信を行う」ということを指定しています。つまり、普通Webアプリケーションを用いるときに使われるプロトコルはHTTPであるということです。Webアプリケーションを作る際にはこの通信の仕組みを理解していないと、正しい動作をするアプリを作れません。というわけで、次回はその仕組みについて簡単に話します!

2010/04/03  ASP.NET勉強中③

 勉強の進行具合は、ぼつぼつといったところです。 さて、前回の話の続きを。
 「QueryString」は複数の値をプログラムに渡すためのものと説明しました。前回、googleで「まりさ」というキーワードを検索した結果のURLを書きましたが、searchプログラムに渡す値としてQueryStringがあるので当然検索キーワードの「まりさ」という文字列が含まれているはずです。しかし、ぱっと見てそのような値はありません。 答えをじらしても仕方ありませんので、答えを。「q=%E3%81%BE%E3%82%8A%E3%81%95」の部分が「まりさ」という検索キーワードを表す部分です。なぜ「まりさ」という文字列がこんなわけのわからないことになっているのかというと、URLにはASCII文字しか扱えないという制限があるからです。 ASCII文字とは、文字エンコードの種類の一つです。簡単に言うと、文字を0と1の組み合わせでどうやって表現するかの一つの方法です。 で、ASCIIはひらがなや漢字などには対応しておらず、それらは%と英数字の組み合わせで表現することになっています。
 このように、「まりさ」等の文字をURL(ASCII)で扱える文字「%E3%81%BE%E3%82%8A%E3%81%95」に変換することを「URLエンコード」と呼びます。ちなみに逆のことは「URLデコード」と呼びます。
 ん~、ASP.NETの話を全然していないようなw そろそろ触れないとなぁ~

2010/03/31  ASP.NET勉強中②

 ASP.NETはサーバーサイドのプログラミング技術です。なので、いろいろとWindowsアプリケーションと違うところがあります。ASP.NETを学ぶ上で、そこらへんもわかってないといけません。WebアプリケーションとWindowsアプリケーションの違いはいろいろありますが、何といってもその違いは、WebアプリではURLを指定して任意のページに飛ぶ点です。 というわけで、Webについての少し面白い知識を。
 googleで検索するとき、キーワードを検索ページに指定して、検索結果のページに飛びますよね。そこのURLは、たとえば
http://www.google.co.jp/search?hl=ja&rlz=1T4SUNA_jaJP355JP355&q=%E3%81%BE%E3%82%8A%E3%81%95&lr=&aq=f&aqi=g1g-r9&aql=&oq=&gs_rfai=
となります。  これは、「まりさ」を検索した結果のページです。このURLの前半部分「http://www.google.co.jp/search」は、実は「http://www.google.co.jp」という場所の「search」というプログラムを指定しています。さらに、「?」以下は「QueryString」と呼ばれ複数の変数が定義されています。この変数は複数ある場合は「&」で区切られます。これらの変数には「=」で様々な値が代入されています。ということは、変数「hl」に値「ja」が代入されているということです。 これらの変数をsearchプログラムに送って、そのプログラムが返したページが検索結果のページなわけですね。
 これで、今まで謎だったURLの仕組みがちょっとわかりましたね! ちょっとだけ得したような気がしませんか? 少なくとも私はちょっと得した気分になりましたw

2010/03/30  ASP.NET勉強中①

 本題に入る前にちょっとしたお知らせを。 ⑱回まで続いたメモ帳編ですが、⑱回で終了にします。⑯で本編は終わり、それからは修正を主に行ってきましたが、これからは修正点もあまり出ないと思います。これからは修正点を本体付属の「Readme.txt」に「履歴」として書いていこうと思います。というわけで、メモ帳編は事実上⑱で終わりにします。視聴ありがとうございました~。
 さて、昨日にも書いたようにASP.NETの勉強を始めました~。実は少し前から本を読み始めていたんですが。勉強に使っているのは「基礎から始める ASP.NET」という本です。私は勉強の際などに使う本は前もって調べてから使うことにしています。今回ももちろん調べて、好評な本を使うことにしました。とは言っても、Amazonのコメントなんですけどw この本にはちょっとした欠点があります。それは、「ソースコードがすべてVisual Basicである」ということです。C#が好きな私にはがっくり来る仕様ですが、ここは今やC#の親戚であるVBのコードを知るいい機会と無理やり理由づけしてその本を採用することにしました。 まぁでも、言語仕様の勉強をするわけではないので、複雑な文法は使わないでしょう。だから、そんなに困ることもないと思います。いざとなればgoogle先生もいることですし。
 というわけで、これからはASP.NETの話ばかりになるかもしれません。生温かい目で見守ってあげてくださいませ。

2010/03/29  不覚。

 どうもです。お披露目動画を投稿して3日経ちましたが、ひどかったw 意識して世界の新着動画に流れるように投稿したんですが、ばっちり叩かれましたね。新着動画の彼らは東方嫌いだったのをすっかり忘れて、背景に東方の絵を使ってしまいました。ん~不覚。 まぁしょうがないねw
 お披露目動画は、ひとつの区切りです。memoWIはこの動画の時点で私自身の一区切り。これで次に行けます。具体的には、前からちょこっと触れていましたがASP.NETの勉強をしていこうと思っています。なので、動画はちょっとおろそかになっちゃうかもです。
 ASP.NETは、Webアプリケーションを作るための技術(フレームワーク+α)で、今まで使ってきたただのC#は普通のPCで動きますが、ASP.NETはサーバーで動きます。だから、いろいろと今までとは異なるプログラミングをしなくちゃなりません。 とは言っても、言語はC#(とHTML+CSS)を使うので、言語仕様を学ぶわけじゃありません。おそらく、サーバーサイドの独自のプログラミング手法と様々なクラスの使い方(プロパティやメソッドなどの使い方等)などが中心になると思います。 だから、そんなに苦戦はしないと思っています。まぁ、どうなるかわかりませんがw

2010/03/26  半年記念

 やっとmemoWIを公開することができました。お披露目動画:背景に画像を設定できるメモ帳を作ってみた。 動画の名前はニコニコの流儀でそのまま命名しました。
 これでmemoWIも一区切りです。やっと新しいことができる~。 つい昨日気が付いたんですが、今日は2010年3月26日。私が動画をうpし始めたのは、忘れもしない東方ニコ童祭当日の2009年9月26日です。なんとなんと今日はそれからちょうど半年なのです。そこでmemoWIを公開できたなんて、運命感じちゃいますねw  もう半年経ったのかぁ~  早いなぁ 東方ニコ童祭には本当に感謝しています。このきっかけがなかったら、動画なんてうpしていなかったかもしれません。第2回はやらないのかな? もし2回目が開催されるなら、喜んで参加します。とは言っても、無理やり東方キャラで解説して参加になりますけどw これからもいろいろうpしていきたいと思いますので、そのときはよろしくお願いします!

2010/03/24  有志による無料サーバー

 もうすぐmemoWIの公開ができそうです。正直そろそろmemoWIから離れて別のことがしたいです。最近はこればっかりでしたし・・・。
 さて、今日の話題はmemoWIの不具合訂正をしているときに偶然見つけた「わんくま同盟」についてです。とは言っても、 わんくまさん自体は前から知っていたのですが、メンバーになると無料でサイトスペースとブログを持つことができるというのをはじめて知りました。メンバーになるための特別な資格はなく(とは言ってもプログラミング関係のサイトにすることが望ましいのでしょうが)、メンバーになったからといって縛りはなにもありません。なんとまぁ良心的な。すばらしいですね。 わんくまさんのサーバーのページのドメインには、wankuma.com/ というのが付くのが唯一の縛りです。プログラミングに関するサイトを作りたいと思っている人にはちょうどいいかもしれませんね! 私ももう少し早く知っていたら、メンバーになっていたかも・・・? でも、そうすると好き勝手なことできないような~ ASP.NETを使ったりできないかもしれませんしね~  

2010/03/20  memoWIの公開までがんばるべし!

 不具合はなんとかなりました! この問題にずいぶんと時間をかけてしまいました。やれやれ。おかげでもうすぐニコニコにお披露目できそうです。それまでがんばらなければ!
 で、今回の問題ですがネットを調べまくっても出ていなかったので、ここに書き留めておきます。いつか誰かの役に立つかもしれないので・・・。

 問題は、プロジェクトが作られるときに生成されるForm1がオーナー設定によって所有される状態になっているときに発生します。このとき、オーナーフォームのShowInTaskbarプロパティがfalseであると、Form1の同プロパティがtrueであってもForm1はタスクバーに表示されないのです。この減少は、Vistaでは確認できませんでした。確認できたのはXPです。コードでこの症状を示すと以下のとおりです。
public partial class Form1 : Form
{
  //コンストラクタは省略

  private void buton1_Click(object sender, EventArgs e)
  {
     Form B = new Form() { Text = "B", ShowInTaskbar = false };
     B.AddOwnedForm(this);

     B.Show();
  }
}

このようなとき、Form1のShowInTaskbarがtrueであってもForm1はタスクバーに表示されなくなってしまいます。
 で解決法としては、FormBクラスに以下の記述を加えます。
protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle = 0x80;
                return cp;
            }
        }

これで解決します。しかしながら、この方法だとFormBには不透明度が設定できません。設定しようとすると例外が発生します。そこで私はダミーフォームを使ってこの問題を解決しました。上記のCreateParamsは定義せずに、ダミーフォームをFormBのオーナーに設定することでなんとかForm1を表示させることができました。
まぁ、常に下にフォームを表示させるためにオーナー設定を使わなければ、この問題は発生しないと思いますが・・・。memoWIは無理やりいろんなことしてるからなぁ。

2010/03/16  行き詰った…

 memoWIの不具合を引き続きなおしています。Alt+Tabで複数のウィンドウが出てしまう不具合はすんなり直せました。が、それに続く不具合に今までになく苦戦しています。それは、メインフォームがタスクバーに表示されない、という不具合です。この問題は、XPでのみ起きてしまうようです(しかも、起きるXPと起きないXPがあるみたいです)。原因、というかどうなっていると発生するかはわかりました。 Ownerプロパティによって、オーナーに設定されているフォームと所有されるフォームができるわけです。このとき、オーナーフォームのShowInTaskbarプロパティがfalseだと、所有されるフォームの同プロパティがtrueであっても、所有されるフォームはタスクバーに表示されないのです。 ここで、memoWIではオーナーフォームは画像フォーム、所有されるフォームはメインフォームになっています。テキスト編集領域を透過させ、後ろのフォームに画像を表示させているので、このようなオーナーの設定になってしまっています。ここでもやはり、強引に実装したことが裏目に出てしまっています。
 どうすれば解消できるか、かなり考えたりしらべたりしたんですが答えは出ていません。これは困った。どうすりゃいいのやら・・・

2010/03/13  ソフトウェアを作ることのむずかしさ

 前回の更新から5日も経ってしまいました。 ⑯をうpしました【ニコニコ動画】簡単!ウィンドウアプリケーション メモ帳編⑯ Vol.1【ニコニコ動画】簡単!ウィンドウアプリケーション メモ帳編⑯ Vol.2。さて、TBmemoも⑯で一応終わりなわけですが、それについて少し。 最後に実装する印刷機能ですが、少し複雑だったものの問題なく実装できました。この機能の実装は、実はかなり前に終わっていました。それにもかかわらず、⑯のうpが遅れたのは微調整に手間取っていたからです。例えば、オプションから抜けた時のフォーカスの移動や、フォームのタイトルにファイル名を追加するなど、微妙な点を調整していました。それに加え、前にも書きましたが、スペックがあまりよろしくないPCで実行されると背景画像を設定した際にもっさりした動作になってしまうことで、なんとかならないかと頭を悩ませていました。なので、余計に遅れてしまいました。
 ここまで作ったTBmemo、せっかくなのでフリーウェアとして公開することを考えています。配布するとなると、しっかりした動作になっていなくてはなりません。つい昨日、おかしな動作を発見してしまいました。XPでAlt+Tabを押して、ウィンドウの切り替えを行ったときに、3つのウィンドウが表示されてしまうのです。こんな現象は、Vistaでは起こりません。 なぜOSによって動作が変わってしまうのか・・・。いろいろな要素によって変わってしまうんでしょう。このことで、プログラムのテストはちゃんとしないとなぁ、と思いました。 で、この問題の修正ですが、⑯ではやりません。バージョンアップの際に取り上げることにします。
 とにかく、そんなこんなでひとつのソフトウェアを作るのには、ちゃんと開発しているOS以外でもしっかりテストしなくちゃだめだということを学びましたとさ。

2010/03/8  ショッキングな事実

 昨日に引き続きASP.NETの話題です。ASP.NETの実行環境はサーバー側にあります。だからこそユーザーは自分側の実行環境を意識しないで済むのですが、WEBにサイトを公開する側としては、サーバーに実行環境があるかどうかを気にしなくてはなりません。サーバーの実行環境、具体的にはPHP,Perl,RubyやCGI,JSP,ASP.NET等と、以外にいろいろあります。PHPとかCGI(CGIは言語じゃありません)は有名ですよね。 昨日いろいろサーバーのことを調べました。とはいっても、レンタルサーバーのことです。まずは、いまこのサイトが置かれているサーバーですが、これは私が使っているプロバイダが無償で用意しているサーバーです。容量は50MB、CGIは指定のもののみ。といったへっぽこスペックです。でもまぁ、普通にサイトを運営するんだったら、問題ないスペックかもしれません。でも今は無料で1GBのところもあるのになぁ。
 で、本題です。このサイトのサーバーはもちろんASP.NETなんて使えません。調べてみたところ、無料で使えるASP.NET環境があるサーバーはほとんどありませんでした。唯一見つけたのは3月末で終わってしまうものでした。 この事実には驚きました。これじゃASP.NET勉強してもこのサイトで使えないじゃんけ! いままですべてタダでやってきたので相当ショックです。
 しかしながら、ASP.NET対応の無料レンタルサーバーが無いのは考えてみれば当然です。それは、ASP.NET対応サーバーはすなわちWindows Serverだからです。Windowsの製品だから、当然ライセンスの購入とかで運営会社は出費しなければならないでしょう。それに比べて、LINUXのサーバーはそんな費用はかかりません。だったら安い方に行っちゃいますよね。
 結論としては、”お手軽なASP.NET対応レンタルサーバーをゆくゆくは借りよう”です。月額525円で使えるサーバーを見つけました「ActiveWeb」という会社です。見た感じきれいなサイトだったしよさげ。ディスク容量も1Gで、ドメインは独自のものが使えます。特筆すべきなのは、実行環境です。ASP.NETは3.5が使えて、しかもASP.NET AJAX1.0 も使えます。さらにSQL Server,PHP4,PHP5も使えるなんて、至れり尽くせり。これなら月額525円くらい払ってもいいかなぁ~

2010/03/7  ASP.NETの一番初めの苦労

 ひとりごとに題名を付けることにしました。
 さて、題名にもあるようにASP.NETをやってみようということで、ちょっと触ってみた時の苦労話を。 ちょっとした事情で、ASP.NETを試そうと軽い気持ちで思い立ったのです。で、Visual Stadioで「新規」→「webサイト」を選んで、いつもの"プロジェクト"のかわりのような、webサイトというものを作ります。これは、「基礎からのASP.NET」というわんこの影が表紙の本に載っていた手順です。このとき、「場所」を指定するところがあるのですがそれは「ファイルシステム」にします。これは、IISというものを使用しないで.aspxを実行するための指定です。これでOKをクリックすれば、Default.aspxのコードが表示された状態になります。デザイナに切り替えて、ラベルを追加してみたりします。で、いざ実行! デバッグはいらないからCtrl+F5で実行。お、右下のタスクバーにアイコンが出て、「ASP.NET 開発サーバー」とかいうバルーンが出てきた。ブラウザが立ち上がって・・・、「このページは表示できません」と出た。うはぁ! 本にはこれでちゃんと実行される、って書いてあるのにぃ。ちなみに、ASP.NETはいつものただのC#とは違って、実行環境はクライアント側ではなくサーバー側にあります。つまり、普通はただのPCでは実行できないのです。その代りに、開発環境が用意ししてくれている開発サーバーなるものを使えばいいはずなのですが・・・。これは、実行すれば勝手に起動してくれるので、設定などは普通しません。
 何回も試したけど、ダメです。google先生に聞いてもパッとしない・・・が、「ウィルス対策ソフトがどうのこうの・・・」というページを見て、さっそくチェック。自分のパソには「NOD32」というソフトが入っています。で、いろいろいじくったら実行できるようになりました! どうも、セキュリティの問題でブロックされていたようです。私の場合は、設定の「webアクセス保護」→「HTTP」→「webブラウザ」のIEの欄に入っていたチェックをはずすと、実行できるようになりました。 しかし・・・「指定していない場合、送受信されるデータの検査が行われない可能性があります」って書いてある。IEでそれがなくなるのはまずいような。これは、ASP.NETをやるたびに設定を変えた方がいいのかなぁ。

2010/03/4

 いまさらですがメモ帳編⑭を投稿しました簡単!ウィンドウアプリケーション メモ帳編⑭。この回では設定情報の保存機能の実装をしました。 いやぁ、この機能自体の実装は簡単にできました。プロジェクトのプロパティの「設定」タブで保存する項目を入力して、コードで読み書きするわけです。その仕組みも簡単でした。動画を見てもらえばわかりますが、読み込むまでは簡単ですが、その情報をもとに前回の状態を復元する処理が面倒になってしまいました。これは仕方ないねw とはいえ、もう少しメソッドの構成などを工夫していれば、もっと簡潔・きれいにできたと思います。そこら辺をもっと勉強して、何とかしたいと思う今日この頃です。 しかし、どうやって勉強したらいいんでしょうか・・・。 思い浮かぶのは、「Java言語で学ぶデザインパターン入門」でしょうか。中身を見たことがないので何とも言えませんが、そんな気がします。Javaがわかる私にはちょうどよさそうです。
 前から思っていることなんですが、コードを書く上で知っていると効率が良いであろう事(デザインパターンやUMLなど)は、知っていれば得をするんだろうけど、その前にもっとプログラミング自体の知識(言語仕様やライブラリ、各種技術など)が欲しいと思ってしまいます。というわけで、UMLなどはどうにも二の次になってしまいます。 ん~、そっちの方を早く勉強した方がいいんでしょうか。 でも、ASP.NETとかWPF、Silverlightとか、いろいろやってみたいしなぁ。

2010/03/1

 「ひとりごと」では今までプログラミング関連のことしか書いてきませんでしたが、あくまで”独り言”なので、関係のないこともたまに書いていきたいと思います。とはいえ、なるべくプログラミング方面のことを書くように心がけます。さっそくプログラミングから脱線したいと思います。
 ニコニコ動画には様々な人がいます。東方が好きな人、嫌いな人。その作品がわからなければ即避けてしまう人(これはasiramにも当てはまります)。いろいろです。私は「東方キャラが解説してくれる」という動画を作っているわけです。この時点ですでに好き嫌いがはっきり出てしまいます。最近(とはい言ってもそれなりに経ってますが)できた「世界の新着動画」では、”嫌い”なひとのコメントが多く見られます。結構な言いようで批判されたりするわけです。そこで、考えます。「東方キャラなしでやった方が見てくれる人は増えるのか、それとも東方キャラを使ってやったほうが増えるのか」。難しいですよね。世界の新着動画を見る限り、あんまり「東方キャラだから見よう!」みたいなコメントは見当たりません。むしろ逆はたくさんありますが。 とは言っても、やはり東方キャラがきっかけで見てくれてる人もいるでしょう。
 やりやすさを考えると、キャラを使った方がいいかなと思ったりします。私自身が解説する動画みたいにすると、どうしても「です・ます」みたいになってしまうと思うのです。それじゃあ堅苦しい。やっぱかわいいキャラが説明してくれたらいいじゃんよ? と思います。
 どっちがいいんでしょうねぇ。とりあえず今は保留です。なんか、何を言いたいのか分からないですねw。ま、独り言だと思って聞いてくださいませ。 

2010/02/27

 プログラムには「書き方」というものがあると思います。最近それを痛感しています。例えばTBmemoを作っていると、あるイベントハンドラで行った処理を違うイベントハンドラや、外部のクラスで実行したいときなどに気付きます。イベントハンドラに直接処理を書いてしまうと、そのイベントに対してだけ使えるようになってしまい、再利用性が無くなってしまいます。こんなときは、そのイベントハンドラの中身を独立したメソッドに移せばよいのです。2,3行だったらイベントハンドラに直接書いてもいいでしょうが、それ以上は後で使うかもしれないことを考えると、メソッドに処理を書いてそれをイベントハンドラに書いた方が無難です。 こんなの当たり前かもしれませんが、私はまだまだ基本がなっていないのです。

2010/02/26

 メモ帳編⑬を上げました。【ニコニコ動画】簡単!ウィンドウアプリケーション メモ帳編⑬ 最近はうpするときのみの更新になってます。もうちょっとこまめにやるべきかな・・・。
 さて、メモ帳編⑬では画像を薄くするために透明度を設定する機能を実装しました。これで文字も見えやすくなりました。すばらしい。 動画を見ればわかると思いますが、TBmemoはWindows Vistaで開発しています。今日初めてXPにプログラムを移して実行してみました。いやぁ、外見は変わるもんですねぇ。Vistaで実行したときとだいぶ異なる外見でした。OSによって外見が変わるのはおもしろいですよね~。7ではどうなるのかなぁ。 で、そのときにわかったことがもう一つあります。XPでTBmemoを実行するとすごく重い。普通に背景画像を設定しないで使う分にはいいですが、問題はやはり背景画像を設定したときです。フォームの移動、リサイズするときにCPUの使用率が跳ね上がります。私のパソ(Vista)で実行するときはいつもそれなりにCPUは食いますが、XPのときのそれのように大量には食いません。まぁ、家にあるXPのスペックが低いからってのもありますが・・・。それにしたって、あれはいただけません。XPでフォームを素早く移動させるとき、なんとうしろの画像フォームが見えてしまいます。メインのフォームと一緒に移動するようにしているわけですが、画像フォームが圧倒的に遅れて移動してしまっているようです。これは格好悪いですねぇ。もちろん、Vistaで実行したときはこんなことは絶対に起きません。
 なぜVistaではスムーズに動くのにXPでは重くなってしまうのか・・・。ん~、なんでだろう。そんなに知識があるわけじゃないからよくわかりませんw。でも、今持っている知識で考えると・・・、OSと.NET Frameworkの相性でしょうか。Vistaには.NET Framework3.0 が標準で入っており、XPはWindows Updateによってインストールすることになっています。もともとVistaに入っていたら愛称は良いような気がします。後付けのXPには荷が重い・・・のでしょうか。
 なにはともあれ、XPではちょっと使うのはつらいかもしれませんね。Vistaだったら問題ないと思います。ん~、やっぱり強引な実装にしたのがXPで裏目に出てますね。何か解決法を知っている人がいたら教えてほしいです!
 配布を考えるとWPFで作りなおした方がいいかも・・・

2010/02/21

 ああ、疲れた。メモ帳編⑫をやっと仕上げました。【ニコニコ動画】簡単!ウィンドウアプリケーション メモ帳編⑫ Vol.1 なんというか、TBmemoの背景画像機能はやはり強引な実装になってしまった感が強いです。これで私がとった回りくどい実装方法より簡単で良い実装があったら非常に申し訳ない。かなり調べたつもりですが、いい方法が見つかりませんでした。まぁとりあえずは、⑫の実装をすればほとんど普通にメモ帳として機能するから良しとすることにします。
 残念コメントはこの辺にして、背景を画像にすることができたメモ帳に対する自分の率直な感想を。・・・自分で言うのはなんだけど、これ、そういう筋の人にはかなり嬉しいアプリケーションになったんじゃ!? とか思いました。一瞬、神ツールを作ってしまったw とか思ったほどです。だって、自分の好きな絵が背景になるんだぜ? 俺のよ(ry が背景に! 素晴らしすぎる!
 ふぅ。とはいえ、現状のままだと絵の一部が黒い時など、文字が見えなくなってしまいます。これは、これから実装する背景画像の透明度調整機能を使えば少しは良くなるでしょう。それに加えて、文字色の色も変えられるようにするつもりです。 それでも背景が真っ白なメモ帳よりは、文字が見えにくくなるのは避けられないでしょう。 ・・・しかし! それがなんだというのか!自分の好きな絵がそこにあればそれぐらいの不便さなど! ねぇ?
 動画でもちょろっと触れましたが、WPFの強力さを今回のことでちょっと思い知りました。前からやってみたいと思っているWPF。Visual Studio2008 でもちゃんと作れるわけですが、知識がないとまだまだうまく作れません。基本はWindowsフォームなんだろうけど、C#とXAMLというのを使ってデザインしなくてはならないのです。しかも、デザイナのプロパティウィンドウには説明がついてなくて、そのプロパティがどんな役目なのか判断しにくいし・・・。そりゃあ、米の人はプロパティ名でなんとなく想像つくのかもしれないけど、私たちは日本人だもの~。これはVisual Stadio2010に期待しろってことなの? ん~
 ちなみに、これはどこかで読んだ話だと思うのですが(ちょっと不確実です)、WPFにWindowsフォームのコントロールは含めることはできるようですが、逆は無理みたいです。なにせWPFはXAMLがないとだめですから。だから、今回のTBmemoにはWPFのテキストボックスを実装することはできません。残念です。
 とはいえ、背景を画像にするこの機能は素晴らしい。これから作るアプリケーションにもこの機能を取り入れようっと。

2010/02/16

 メモ帳編⑪をうpしました。【ニコニコ動画】【プログラミング】簡単!ウィンドウアプリケーション メモ帳編⑪
 さて、今回はテキスト編集領域の背景色を変更する機能を実装しました。うん。予想通りあっさり実装できました。問題は背景を画像にする機能・・・。現在四苦八苦してます。 手元にレシピはあったはずなんです。ほとんどのコントロールが継承しているCreateGraphics()メソッドを使えばできる予定だったんです。しかし! 世の中はそんなに甘くなかった!このメソッドを使って画像をテキストボックスコントロールに描画しても、どうやら編集領域の下に描画されてしまっているようです。
 なんてこったいぃ。これでは予告していた機能が実装できないではないか! とかなんとか焦って、いろいろ試しました。テキストボックスの背景を透明にすればいいではないか!と思って、BackColorプロパティにTransparentにしたら、「背景色はだめです」みたいなエラーがぁ。さらに、フォームのTransParencyKeyプロパティに透明色を指定したら、透明にはなったけど穴があいて(これはこれでおもしろい)、その領域をクリックすると一つ下のアプリケーションにフォーカスが移るし・・・。なぜフォームの枠組みまで透けるんだぁ。
 とまぁ、この機能の実装は不可能か!? と思われました。 が! が? 強引な方法で強引に実装する方法を見つけました。「これはひどいw」って言われかねません。 しかも!この方法でもまだ少し問題が残っていて、今はそれを解決しようとがんばっています。ひょっとしたら解決できないかも・・・。なるべく頑張ります!
 どんな方法で実装したかは、メモ帳編⑫のお楽しみ~

2010/02/13

 どうもです。最近web系のプログラミングをしてみたいと思ったのですが、web系のプログラミングと言っても多種多様です。知っている(名前だけ)のは、JSPとかPerl、PHPとか・・・まぁいろいろあります。で、やはりC#好きとしてはASP.NETが思いつくわけで、それをやってみたいなぁと思う今日この頃です。
 もちろん、「ASP.NETやりたい!」と言ってすぐできるわけじゃありません。とにかくまずはHTMLのことがわかってないとだめでしょう。わたしは過去にちょこっと触ったことがある程度で、もうほとんど記憶がありませんでした。というわけで、HTMLの勉強を兼ねてこのHPを作ったわけです。おかげでCSSのこともそれなりに身につきました。便利ですねぇ、CSS。ちなみにこのHPはHTMLとCSSのみで構成されています(2010/02/13現在)。この二つだけでここまでできるとは・・・。驚きました。
 これでまた動画講座のネタが増えたね! まぁ、やるかどうかわかりませんがw

2010/02/12

 いやぁ、まだまだ初心者が抜けきらないわたくしが講座みたいな動画を上げると、いろいろ手厳しいですなぁ。と、思う今日この頃です。
 昨日、メモ帳編⑩をうpして、そこでオプションを実装しました。気づいている人も多いでしょうが、TBmemoを作りながらこの動画も同時進行で作っています。なので、今回のオプションの実装をするとき、どうやって実装しようかと迷いました。というのも、オプション機能を実装するのが初めてだからです。普段気軽に使っているアプリケーションに当たり前に付いているオプション機能。実際に自分で実装するとなると、ぱぱっとできるものではないと思い知らされました。どうやってオプションダイアログで変更した項目をメインのフォームに適用させるか、メインフォームで変更された内容がオプションダイアログに反映される仕組み、などをどうやって効率的に実装できるかをそれなりの時間悩んで、動画のような実装にしました。変更内容をフォームに反映させる処理をするために、単純にメインフォームの参照をコンストラクタに渡して保持しておく方法をとりました。後で考えると、もうちょっと工夫するべきだった思いました。。ま、まぁ、わかりやすくていいんじゃない?w こんなんで講座の動画を作って大丈夫なんだろうか・・・? というのは置いておこう。うん。
 このページ見てしまった人は、asiramにがっかりする人がいるかもしれないなぁ。でも、始めたばかりの人たちに親近感を持ってもらえるといいな。

2010/02/11

 ホームページを作るのは大変ですね。作ってみてわかりました。 このページは、プログラミング好き(といってもまだぺーぺー)のasiramが情報を発信したり、プログラミングについてコミュニケーションを取ったりするために作りました。このページ、自分の力をつけるためにすべて1から作っているので(と言ってもExpression Webを使っています)まだまだ足りない機能が多々ありますが、順次追加していきたいと思います。とりあえず、掲示板はほしい所です。ゆくゆくの話ですが、このサイトにASP.NETやsilverlightなどを自分の勉強を兼ねて導入していきたいと思います。
 このサイトの名前からもわかるとおり、ここは主に「初心者」向けのサイトにしたいと思っています。なるべくC#が中心になるようにしたいです。ずいぶん厚かましい名前だと思いますが、許してやってくださいませ。
 いまのところのメインコンテンツは、「Lecture」と「Source File」かな? 貧弱w ただいまasiramは一つソフトウェアを作っているので、それが完成したらここでお披露目するつもりです。