<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<channel>
	<title>Moonmile Solutions Blog</title>
	<link>http://www.moonmile.net/blog</link>
	<description>ソフトウェア開発者のためのブログ</description>
	<lastBuildDate>Fri, 03 Sep 2010 06:24:25 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	<!-- generator="WordPress/3.0" -->

	<item>
		<title>提供するサービスを量産するということ</title>
		<description><![CDATA[巷で話題になっているので、メモ的に。 私はこうやってWebサービスをリリースしてきました。｜ホットココア社長日記 @egachan http://blog.livedoor.jp/ikiradio/archives/51525122.html たった2週間でWEBサービスを6つ立ち上げる究極の方法！｜ホットココア社長日記 @egachan http://blog.livedoor.jp/ikiradio/archives/51026443.html 実は、２年前の記事を見たことがあるんですよね。 Web サービスの大量生産&#8230;というか、２週間で出来てしまうのはどうかなぁ、と思っていたのですが、２年後の記事を見れば、「量」というのは、それなりに人を圧倒します。 いや、「継続は力なり」ということで、成功ってのは、やり続けることの先にしかない、ってことです。 # ４月に会社を作ったそうなので、これから、って感じではありますが（些細ながらエールということで） ちなみに、無料のWEBサービスを公開する理由は、会社の場合は、 技術アピール、広告塔の役割 →　WEB製作の請負や、コンサルティングなどで収入を得ます。 広告収入 →　ＰＶを稼いで、他社から広告収入を得ます。 有料会員サイト → 一部は無料、有料になって月額で収入を得ます。 作る側としては、定額の収入が得られるので、有料会員サイトが有力候補なのですが、サイト自体からは収入を得ず、広告塔として使うのもベターかなと思っています。株式会社ホットココアの場合は、広告塔のパターン（と思う）。 ちなみに、 WEBサービスが量産できるようになったのは、ここ最近の話で、５年前ぐらいからOSSの普及や、公開API、レンタルサーバーが非常に安くなった、ところがあげられます。 プログラムでもWEBサービスでも量産して、公開して、の流れが良いところは、 フィードバックが得られる、あるいは、フィードバックが得られない。 →　得られないのは、「駄目」ということで、早めに切り捨てられる。 あれこれと、悩まずに済む、あるいは、妄想せずにすむ。 →　取らぬ狸、にならずに済みます。 技術力が付く →　単純に作るときの体力が付きます。経験値が上がるので、作るのが早くなります。 WEBサイトを作る、プログラミングができる人の最大の利点は、作って試せるところにあります。先の記事にもありますが「口だけではなんにも動かない」（口だけのコンサルタントになりたい場合は必須な技術なんですが）。 実際、モノを作ってみると、どれだけその素晴らしいアイデアが「無様な」ものなのかが分かります。そういう「無様な」ものってのは、人から見るとそう見える訳で、客観的な視点を得られます（精神的なダメージも大きいけど）。 まぁ、そういうものに晒されて、耐えたものが、そこそこ残る「商品」なのかな、と。]]></description>
		<link>http://www.moonmile.net/blog/archives/1353</link>
			</item>
	<item>
		<title>極めるという事を少し</title>
		<description><![CDATA[ちびっと雑談レベルで。 コニカさん経由で知ったSALONさんなブログですが、 WEB系技術電脳日記 http://ameblo.jp/konica/ OC SALON POWER STATION http://ameblo.jp/oc-salon/ J . C . A http://ameblo.jp/duck-oc/ まだお会いしたことはないのですが、OverClock な仕事(なのかな？）をしばらく見ていて思ったことを。 オーバークロックって16MHzの頃ぐらいしか分からなくて、当時はちびっとでもクロック数を上げようとして発信器を変えたりなんぞがありました（私自身はやったことはないのですが）。最近は、2GHzとか格段に早くなったもので、昔のようにちびっと上げてる感じでは実用的には意味がないよなぁ、と思っていたものですが。 う～む。１か月ほど眺めていたのですが、なんか迫力が違う。つーか、オーバークロックという狭い範囲（失礼）でも極めていくと、世界に通用する、つーか、duck さんという世界一な方も近くにちらほら。 一般の人にはCPUとかGPUのオーバークロックなんて全然意味が無くて、全く興味のない話な訳ですが、そりゃあ、クラウドやらSiverlightやらiPhone/iPadやらのほうが、宣伝的に良いというか最新技術っぽいというか、そういう「目新しさ」があります。 が、そういう「目新しさ」とは別のところに、個人的な価値（大袈裟に言えば、個人の人生だったり、個人を巡る周辺の方々だったり）が歴然としてあるわけで。当然「目新しさ」という基準や、「社会的な宣伝」（社会的な貢献みたいなものも含めて）という基準もあろうというものですが、まぁ、それはそれ、これはこれ、なのかなぁ、と昨今思っています。 まあ、これは、私が会社を辞めているからだと思うし、自営業というスタイルだからと思うのですが。 「極める」というか、根本的に人は「自由」なところにあると思っています。「自らを由縁とす」という約仕方をすれば、最初の身の置き所が自分自身にあり、それが徐々に「不自由」になるごとに由縁の部分が外部に出てしまうという感じですね。 それで、自分の想うままにということろで、身勝手に見えたり、極めることに見えたり、はたまた破綻したりという現実があるわけですが、大衆という形のないもの、「有識者」という形のないもの、「最新技術」という拠り所がないもの、よりは、オーバークロックという一見よくわからない（いや、やっぱりよくわからんけど）もののほうが、地に足が付いているように見えるのが不思議なところです。 と、当たり前のことを考えてみました。]]></description>
		<link>http://www.moonmile.net/blog/archives/1348</link>
			</item>
	<item>
		<title>WindowsからMacへssh接続する</title>
		<description><![CDATA[基本は、Windowsからmac mini へ VNC 接続するんだけど、やっぱりコマンドラインがいいかな、と。 VNC接続ができていると、既にmac側で「リモート接続」が有効になっているので、teraterm で ssh がつながるはずなのだが、うまくつながらない &#8230; かと思ったら、こんな落とし穴が。 普通は TeraTerm を起動して、SSH で接続。 ユーザ名とパスワードを入力すればOKなはずなんですが&#8230; 何故か、時間が経った後に、エラーになってしまう。 で、色々探したものの、他の人はつながるみたいなんですよね。。。 何故、私の mac mini （mac os x 10.6.4）で繋がらないのかぁ、と思っていたのすが、試しに 「チャレンジレスポンス認証」でやると、あっさり 暫く経つと、パスワードを入れてる画面が出ます。 そして接続と。 何故、デフォルトがチャレンジレスポンスなのか分かりませんが、ひとまずこれでつながりました。 ので、めでたしめでたし。 ■参考サイト macにsshdを設定してみた &#8211; webとかmacとかいろいろ技術メモ http://d.hatena.ne.jp/dice-t/20071115/1195187150 &#160; &#160;]]></description>
		<link>http://www.moonmile.net/blog/archives/1346</link>
			</item>
	<item>
		<title>役所風にEnterキーで次のテキストボックスへ移動</title>
		<description><![CDATA[先日、子供の出生届に行ってきたわけですが、まだまだ古いパソコンを使っていましたお役所さん。出生届もインターネット越しでもいいんじゃない？と思ったり、思わなかったりしたのですが、ひょいと、パソコンの画面を見ると懐かしのDOS画面でありました。 役所関係や事務関係では、まだまだ強いですよね、この手のインターフェース。 そんな訳で「タブキーで次のフォーカスに移ればいいじゃん」と思っても「エンターキー(Enter Key）で次のフォーカスに移りたい」訳で、そこには、Silverlight とか、WPF とか、WEB やら jQuery やらの話は出てきません。ひたすら、今の業務にそろえたい訳です。 という訳で、UXってのが「ユーザー体験」ならば、かつてのDOS画面風を再現させたっていいじゃないと思いついたのがこの画面。 ＜001＞ って、バックを「黒」にして、文字を「緑」にしただけなんですが、もうちょっと工夫が必要ですよね。 MS ゴシックのフォントでは字がつぶれるので、もっと適切な固定ピッチフォントで。 アルファベット＆数字が、きれい過ぎる感じがするので、そのあたりも。 とか。 で、真っ先に実装したいのが Enter キーによるフォーカス移動です。 Enter キーのフォーカス移動は、落とし穴が多くって、少なくとも、 ・複数行のテキストボックスが入ると破綻する。 ・漢字の確定の Enter キーと、アルファベットの入力途中の Enter キーを区別する。 ・１行のテキストボックスだと、Enter キーでビープ音が鳴る仕様。 があります。 複数行のテキストボックスの場合は、かつての画面ってこのパターンはなかったんですよ、考えてみれば。DOSで業務画面を作る場合は、テキストのスクロールとかもなくて、大抵の場合、複数行の入力なんてのもありません。 となれば、ちょっと、業務画面チックに Enter キーを変えていくのも良いかと。 namespace SampleEnterManager {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent(); #if true [...]]]></description>
		<link>http://www.moonmile.net/blog/archives/1333</link>
			</item>
	<item>
		<title>.NET(C#/VB)で、アプリ設定を読み書き</title>
		<description><![CDATA[従来、Windowsアプリケーションの設定は、レジストリを使ったり、*.iniファイルを使ったりしていたわけですが、最近は、xml が主流です。と言いますか、レジストリだったり xml だったりアプリケーション毎にばらばらです。 そんなモノだから、設定関係で誤射しそうな方も出て来ます。 なので、少し裏技ちっくですが、手軽にxmlから読み書きする方法を晒しておきます。 最初に画面はこんな感じ。 ＜001＞ 右のグリッドは、プロパティグリッド（PropertyGrid）と言ってお手軽にクラスのプロパティを変更できるものです。Visual Studio でも使われていて、この手の変更にぴったりなのです。 そんな感じで、xmlアクセスはこんな感じ。 using System.IO; using System.Xml.Serialization; public partial class Form1 : Form { &#160;&#160;&#160; public Form1() &#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160; InitializeComponent(); &#160;&#160;&#160;&#160;&#160;&#160;&#160; // 初期値 &#160;&#160;&#160;&#160;&#160;&#160;&#160; setting = new MySetting(); &#160;&#160;&#160;&#160;&#160;&#160;&#160; this.propertyGrid1.SelectedObject = setting; &#160;&#160;&#160; } &#160;&#160;&#160; // アプリケーションの設定 &#160;&#160;&#160; MySetting setting; &#160;&#160;&#160; // 保存 &#160;&#160;&#160; private [...]]]></description>
		<link>http://www.moonmile.net/blog/archives/1328</link>
			</item>
	<item>
		<title>DataSetを使ってMySQLを扱う場合の勘所</title>
		<description><![CDATA[タイトルに「MySQL」とありますが、旧来のDataSet/DataTableを使う場合のコツ、と思ってください。 # SQL to LINQ や ADO.NET Entity Framework を使う場合は、もうちょっと別なスタイルもありです。 業務アプリケーションでデータベースを扱う場合、利用方法は次のパターンに分けられます。 ＜001＞ &#160; データベースは次の２種類 ・更新系のテーブル 　→　頻繁に更新するデータ 　→　売上データ、月次データなど ・マスター系のテーブル 　→　ほとんど更新しないデータ 　→　部門情報、会社名一覧など これを操作する画面が次の２種類 ・一般の画面 　→　主に更新用のテーブルを扱う画面 　→　一般ユーザーが使うので、利用しやすい画面にしないと駄目 ・マスタ画面 　→　主にマスタ系のテーブルを扱う 　→　保守に利用するためなので、チープ画面でよい。SEが使う。 これで、DataSetを直接扱うと良いのが、図のなかで「D」（DataSet）となっているところです。 ・一般画面から更新系ＤＢへ 　→　キャッシュとして、DataSetに保持しておく。 　→　部門の一覧をコンボボックスで表示とか。 ・マスタ画面からマスタ系ＤＢへ 　→　グリッドやリストなどの自動バインド（DataSource）にDataSetを直接指定。 　→　DataSetの内容を直接マスタに書き込んでしまう。 一般画面から更新系ＤＢへの矢印は、SqlCommandを使ってちまちまと更新します。 ちまちま更新は、ストアドプロシージャにしてもOK。しなくてもOK。パラメータは必須（にすると良い）。 このパターンを、MVCに当てはめると（というか、ベースがMVCなのです。このパターン/考え方は2000年頃から使っている）、 ＜002＞ 画面のほうは、いわずもがなの「View」、 参照系のキャッシュ部分は、「Model」、 更新系は直接データベースを扱う（SqlCommandで）ので「Controller」に相当します。 デスクトップ系のアプリケーションを作る場合、VB6（.NETにあらず）の頃は、このデータベースを扱う部分がViewに分散してしまうので、実際の開発（多人数の開発）では、もうひと工夫必要です。 開発プロジェクトの特性として、全てベテランプログラマで揃えらえることはまれです。というか、オープンソースのプロジェクトぐらいしかないでしょう。業務の場合は必ず「新人」と「ベテラン（中堅）」がいます。 そうすると、新人と中堅の技術差があります。あって当然です。 なので、この技術差をうまく活かすために、次のように配置をします。 ＜003＞ 新人は画面側を担当します。これは、新人の弾くスキルでは、画面、SQLなどの両方をこなすのが難しいという点。長期に続いていたプロジェクトだと、データベース周りは既に社内にいる人間しかわからないという状態になっているので覚えることが多すぎるので、できるだけデータベースから遠くに置くためです。 なので、中堅、ベテランは、新人がデータベースを扱えるように「DAO（Data Access Object）」を作ります。このDAOは、O/Rマッピングでも良いし、単なる関数呼び出しでもよいし、手順書でも良いのです。役目としては「新人をデータベースから遠くに置く」ためです。新人は「データベース」を扱いたいのではなく、「データ」を扱いたいのですから。 DAO(Data Access Object)の利点は、このほかにも、 ・開発中のデータベース構造が変わっても、DAOが吸収できる（可能性がある）。 ・ワンクッションあるので、実行ログがとりやすい。 [...]]]></description>
		<link>http://www.moonmile.net/blog/archives/1317</link>
			</item>
	<item>
		<title>VNCViewerでMacに繋ぐと109キーボードが使えない</title>
		<description><![CDATA[mac mini を使い始めたのだが、Windows から VNC Viewer 経由で mac を使っているせいか、109キーボードをきちんと認識しない。何故か、USキーボード（ASCIIキーボード？）に誤認されるようだ。 ネットを見た感じでは、解決できないらしい。 VNC 使用時のキーレイアウト｜Mac mini でリビングPC http://ameblo.jp/macmini/entry-10000922847.html SE奮闘記: WindowsからMacにVNCで接続すると「=」と「’」が入力できない http://se-suganuma.blogspot.com/2009/11/windowsmacvnc.html 上の記事にある通り、押せないキーは 「=」（イコール）、「&#8217;」（シングルクォート）、「`」（バッククォート）。 直接、キーボードを繋げればいいんだが、Windows をメインに使っている者としてはちと不便なので、調べてみると、 Ukelele を使うと、キーボードのバインドを変更できる。 mac の場合は、キーバインドが、 システムの場合 /Library/Keyboard Layouts 個人ごと ~/Library/Keyboard Layouts に *.keylayout というファイルで保存すると、そのキーバインドが「ことえり」で使える。 そんな訳で、Ukelele を使ってキーコードを頼りに変えようとしたのだが、残念ながら、何処か変なところでキーコードを変えているらしく、「&#8221;」と「&#8217;」のどちらも「&#8221;」のキーコード 39 に割り当てられていて、区別が付かず。 # 仕組み的には、中身は unix だから keyboard map があるんだけど、どれだっけ？ ～ 半日ほど色々やったのだが、面倒なので、10キーのほうに割り当てていしまうことに決めた。 10キーの「/」の位置に「&#8217;」（シングルクォート）と「`」（バッククォート）を割り当ててしまう。 あと、「=」は、キーバインドが間違っている（？）ので、直した。 このファイルは、JapanJIS.keylayout&#160;に置くので右クリック（ってできたっけ？）などでダウンロードして使って下さい。 ちなみに、109キーボードを VNCViewer 経由でつなげた時のレイアウトなので、直接109キーボードを繋げたときはどうなるのか試してはいません。 このファイルを、~/Library/Keyboard [...]]]></description>
		<link>http://www.moonmile.net/blog/archives/1309</link>
			</item>
	<item>
		<title>C#からMySQLを扱う（更新編）</title>
		<description><![CDATA[C#からMySQLを扱う（更新編） 射撃しながら前進（あるいは迷走）する方への援護射撃。第２弾です。 MySQLでも、SQL Serverでも、Oracleでも、データをグリッドで表示する場合は、DataSetを使うのが断然楽です。 顧客が、グリッドのチープな画面を許容してくださるならば、グリッドでOKでしょう。 // コネクション作成 MySqlConnection cn = new MySqlConnection(  &#8221;Data Source=localhost;Database=konicadb;User ID=konica;password=konica&#8221;); MySqlDataAdapter da = new MySqlDataAdapter(  &#8221;SELECT * FROM sample&#8221;, cn); DataTable dt = new DataTable(); // 検索 da.Fill(dt); // 表示 dataGridView1.DataSource = dt; こんな風に、DataTable を使って書けます。 ちなみに、DataSet で書く場合は、 // コネクション作成 MySqlConnection cn = new MySqlConnection(  &#8221;Data Source=localhost;Database=konicadb;User ID=konica;password=konica&#8221;); MySqlDataAdapter da = [...]]]></description>
		<link>http://www.moonmile.net/blog/archives/1298</link>
			</item>
	<item>
		<title>C#でMySQLをDataSetで扱う</title>
		<description><![CDATA[射撃しつつ前進する方への援護射撃です。 群馬に行った時、データセットの件で「う～ん」と思い、なんとなく落とし穴に陥りそうな匂いはしていたのですが、時間が取れずにそのままに。 という訳で遅ればせながら、.NET(C#)でMySQLを扱うときのコツなんかを、詳しめに書いておきます。 ■接続方法はADO.NET Driver for MySQL (Connector/NET)を使う まず、.NETから扱えるように下記をダウンロードしてインストールします。 MySQL :: Download Connector/Net http://www-jp.mysql.com/downloads/connector/net/ ■名前空間は MySql.Data.MySqlClient SQL Server の場合は System.Data.SqlClient を使いますが、MySQL の場合は MySql.Data.MySqlClient をインポートします。 C# だったら先頭の行に using MySql.Data.MySqlClient; でOK ■主なクラス ADO.NET経由でSQL Serverを扱う場合は、 コネクション SqlConnect アダプタ SqlDataAdapter となっています。 これが MySQL の場合は コネクション MySqlConnect アダプタ MySqlDataAdapter となればOK。 巷のADO.NETのサンプルもこれを書き換えれば大抵動きます。 肝心のDataSet、DataTable クラスに関しては、SQL Serverでも MySQL でも同じものを使います。最初のコネクションとアダプタの名前が違うだけです。使い方は統一されているので、クラス名だけ変えれば普通は通ります。 ■サンプル いわゆる、こんな画面を作ってデータ接続をテストすると場合 サンプルコードはこちら &#160;&#160;&#160; [...]]]></description>
		<link>http://www.moonmile.net/blog/archives/1296</link>
			</item>
	<item>
		<title>.NET(C#)でXML-RPCを使ってブログに投稿する</title>
		<description><![CDATA[Moonmile Solutions Blog &#187; .NET（C#)でRSSフィードを受信する http://www.moonmile.net/blog/archives/1234 の続きで、今度は wordpress に投稿するAPI な話。 モノ的には、XML-RPC.Net http://www.xml-rpc.net/ を使って、wordpress にコマンドラインから投稿ができるところまで作ります。 ■xml-rpc.net をダウンロード＆ビルド 最初に、http://www.xml-rpc.net/&#160;から、ライブラリをダウロードします。現時点では、Version 2.4.0 ですね。 このzipファイルを解凍して、プロジェクトを見ると、xmlrpc なるプロジェクトがあるので、ビルドします。 ここで注意が必要なのは、そのままビルドしようとすると、 エラー&#160;1&#160;アセンブリ &#8216;D:\work\kidtwi\src\ReadRSS\xmlrpc\obj\Debug\CookComputing.XmlRpcV2.dll&#8217; を署名しているときに暗号に失敗しました &#8212; &#8216;キー ファイル &#8216;..\CookComputing.key&#8217; の読み込み中にエラーが発生しました &#8212; 指定されたファイルが見つかりません。 &#8216;&#160;xmlrpc のようなエラーが発生します。これは署名ファイルを探しているときにファイルがないというエラーなので、本来ならば署名ファイルを用意するべきなのですが、面倒なので、 AssemblyInfo.cs ファイルの該当箇所をコメントアウトします。 [assembly: AssemblyDelaySign(false)] //[assembly: AssemblyKeyFile("..\\CookComputing.key")] [assembly: AssemblyKeyName("")] これでビルドをすればOK。 対象のフレームワークは、ツールに合わせて「.NET Framework 4」などに変更すればよいでしょう。 ■xmlrpcプロジェクトを参照設定する ツール用のプロジェクトを作って、先のxmlrpcプロジェクトを参照設定します。 あるいは、できあがった CookComputing.XmlRpcV2.dll を参照設定します。 ■xmlrpcプロジェクトを参照設定する 投稿時のコードの全文はこれです。 using CookComputing.XmlRpc; [...]]]></description>
		<link>http://www.moonmile.net/blog/archives/1284</link>
			</item>
</channel>
</rss>
