<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://ronspace.cocolog-nifty.com/blog/">
<title>ronSpace</title>
<link>http://ronspace.cocolog-nifty.com/blog/</link>
<description>日々の雑感、作業ログなどを書く予定。
</description>
<dc:language>ja-JP</dc:language>
<dc:creator></dc:creator>
<dc:date>2009-12-17T00:40:16+09:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.typepad.com/" />


<items>
<rdf:Seq><rdf:li rdf:resource="http://ronspace.cocolog-nifty.com/blog/2009/12/it-270b.html" />
<rdf:li rdf:resource="http://ronspace.cocolog-nifty.com/blog/2009/12/post-2f99.html" />
<rdf:li rdf:resource="http://ronspace.cocolog-nifty.com/blog/2009/12/sql-1fd9.html" />
<rdf:li rdf:resource="http://ronspace.cocolog-nifty.com/blog/2009/12/post-596b.html" />
<rdf:li rdf:resource="http://ronspace.cocolog-nifty.com/blog/2009/12/php-69f6.html" />
</rdf:Seq>
</items>

</channel>

<item rdf:about="http://ronspace.cocolog-nifty.com/blog/2009/12/it-270b.html">
<title>日本の IT 産業はオープンになれなかった</title>
<link>http://ronspace.cocolog-nifty.com/blog/2009/12/it-270b.html</link>
<description>かなり以前のことだが、日本のあるITコンサルティング会社の経営トップにこう聞かれ...</description>
<content:encoded>&lt;blockquote&gt;
&lt;p class=&quot;quoted&quot;&gt;かなり以前のことだが、日本のあるITコンサルティング会社の経営トップにこう聞かれた。私が答えに窮していると、その経営トップはズバリ言った。「ユーザー企業のレベルが低いからです」&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p class=&quot;quoted&quot;&gt;&lt;a href=&quot;http://itpro.nikkeibp.co.jp/article/Watcher/20091117/340675/&quot;&gt;なぜ、日本のIT産業は世界で勝てないのか？ - 記者の眼：ITpro&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ユーザ企業のせいにするのは、八つ当たりというものだと思うわけですけど。&lt;/p&gt;

&lt;p&gt;オープンシステムで、米国企業が圧倒的な優位に立ち、一方、日本企業がそうなれなかった理由というのは、一言でいえば、文化の違いじゃないですかね。&lt;/p&gt;

&lt;p&gt;例えば、こんな話はどうでしょう。&lt;/p&gt;

&lt;p&gt;．．．&lt;/p&gt;

&lt;p&gt;日本の大手ハードウエア・メーカーから、 PC サーバ機を購入すると、”簡単セットアップ CD” みたいなやつと、日本語で懇切丁寧に書かれたマニュアルが付いてきます。&lt;/p&gt;

&lt;p&gt;米国メーカーから購入すると、英語・中国語・日本語兼用の、ペラ一枚の ”Quick Start Guide&amp;quot; だけが付いてきます。&lt;/p&gt;

&lt;p&gt;日本メーカーの PC サーバ機のカタログは、写真つき・色つきの豪華なもので、見た目が華やかです。今ですと、「仮想化対応」を高らかに謳っていたりします。が、サーバ筐体の中に、どのデバイス・メーカーのどの製品が使われているか、といった情報はどこにもありません。&lt;/p&gt;

&lt;p&gt;米国メーカーのカタログは、白黒で非常にそっけなく、まんまスペック・シートであったりします。そのため、見た目は地味ですが、サーバ筐体の中に、どんなデバイス・メーカーのどの製品、どのチップ・セットが使われているか、事細かに書かれていたりします。&lt;/p&gt;

&lt;p&gt;日本メーカーの PC サーバ機には、もちろん、有名海外メーカーのデバイス/チップセットが使われています。 しかし、デバイスのベンダー ID 、デバイス ID を、自社工場で書き換えていたりします。&lt;/p&gt;

&lt;p&gt;米国メーカーの PC サーバ機は、供給元のデバイス・メーカーのベンダー ID 、デバイス ID 、そのままになっています。&lt;/p&gt;

&lt;p&gt;．．．&lt;/p&gt;

&lt;p&gt;こうしたことに気付いたのは、大手日本メーカー製の PC サーバに、自分で Linux OS をインストールしようとしたときでした。 型落ちの PC サーバ機があったので、開発用に使おうとしたのですけどね。で、見事にハマリましたとさ。&lt;/p&gt;

&lt;p&gt;思うに、大手日本メーカーは、 PC サーバ機でも、顧客囲いこみで売る戦略なんですよね。メインフレームの売り方で PC サーバを売っているような感じです。&lt;/p&gt;

&lt;p&gt;もちろん、これは日本のユーザ企業がそれを求めているからこそ、そうしているのだと思うわけですけど。日本のユーザ企業が、メーカーの「手厚いサポート」を求めているのも確かなわけで。米国メーカーみたいに、売った後は自分でなんとかしてくれ、みたいなのは、あまり好まれないように思います。&lt;/p&gt;

&lt;p&gt;とはいえ、オープンシステムの文化というのは、まさに米国メーカーのそれ、 Do it yourself なんですよね。&lt;/p&gt;
</content:encoded>


<dc:subject>「01:システム開発」</dc:subject>

<dc:creator>ron</dc:creator>
<dc:date>2009-12-17T00:40:16+09:00</dc:date>
</item>
<item rdf:about="http://ronspace.cocolog-nifty.com/blog/2009/12/post-2f99.html">
<title>オブジェクト指向分析設計は万能薬なのか</title>
<link>http://ronspace.cocolog-nifty.com/blog/2009/12/post-2f99.html</link>
<description>業務システムにオブジェクト指向は要らん発言とか。 企業の業務システム、といっても...</description>
<content:encoded>&lt;p&gt;業務システムにオブジェクト指向は要らん発言とか。&lt;/p&gt;

&lt;p&gt;企業の業務システム、といっても色々あるわけですけど、一般にその言葉が指していると思われる、販売管理、在庫管理、会計、といったシステムについて考えるとして。オブジェクト指向というのは、本当にそうした分野にフィットするものなのか、と思うのですよね。&lt;/p&gt;

&lt;p&gt;こうした業務システムというのは、もともと企業の中を流通しているデータを扱っているわけで。そうしたデータというのは、それ自体が動作を持つものじゃなく、あくまで人間が解釈して情報として使うためにあるものだと思うわけです。例えば、「商品」、「売上」、「在庫」といったものを、オブジェクト指向のオブジェクトととらえても、それ自体に直感的に動作が付随してこない感じで、今ひとつだと思うわけです。&lt;/p&gt;

&lt;p&gt;もともと、オブジェクト指向という概念が、シミュレーション・システムのプログラムに直感的な表現方法を与えるためのものだと考えますと。やはり、フィットする分野とフィットしない分野があるのではないですかね。&lt;/p&gt;

&lt;p&gt;例えば、電子回路の設計、およびシミュレーションに使われている、 &lt;a href=&quot;http://en.wikipedia.org/wiki/VHDL&quot;&gt;VHDL&lt;/a&gt; みたいなのは、オブジェクト指向に物凄くフィットしそう。電子回路を構成する素子というのは、それ自体が、状態と動作を持ちますから、オブジェクト指向で、直感的に表現できるものだと思うのです。&lt;/p&gt;

&lt;p&gt;どんな技術にも、向き不向きというのはある、と思うのですよ。&lt;/p&gt;

&lt;p&gt;以下、余談。&lt;/p&gt;

&lt;p&gt;オブジェクト指向プログラミング言語については、一定の意味はあると思います。一番大きいのは、変数のスコープを、言語ユーザ自身で定義できるイディオムを手に入れたことじゃないですかね。&lt;/p&gt;

&lt;p&gt;Lisp でいうところの、クロージャのような役割ですが、 クロージャと異なるのは、有限回しかスコープをネストできないこと。クロージャは再帰によって無限回ネストできますから。&lt;/p&gt;

&lt;p&gt;この有限回しかスコープをネストさせない、というのが、オブジェクト指向プログラミング言語の本質に関わる部分なんじゃないかな。そう考えると、 Java にクロージャを持ち込むことに、 Java 言語のデザイナが頑強に反対している理由がわかるような。&lt;/p&gt;
</content:encoded>


<dc:subject>「01:システム開発」</dc:subject>

<dc:creator>ron</dc:creator>
<dc:date>2009-12-16T02:01:18+09:00</dc:date>
</item>
<item rdf:about="http://ronspace.cocolog-nifty.com/blog/2009/12/sql-1fd9.html">
<title>SQL を実行時毎に組み立てなければならないとき</title>
<link>http://ronspace.cocolog-nifty.com/blog/2009/12/sql-1fd9.html</link>
<description>まあ、全くないわけじゃないのですけど。 例えば、アプリに、項目の並び順を、ユーザ...</description>
<content:encoded>&lt;p&gt;まあ、全くないわけじゃないのですけど。&lt;/p&gt;

&lt;p&gt;例えば、アプリに、項目の並び順を、ユーザに指定させるような機能があるときとか。そもそもパラメータが使えない構文要素ですと、どうしようもないわけで。&lt;/p&gt;

&lt;p&gt;ただ、検索条件の指定みたいに、SQL の 条件句に入ってくるのは、パラメータを使えば、 SQL の組み立ては、 基本、 1 回で済むはずなのですよね。&lt;/p&gt;

&lt;p&gt;例えば、商品（書籍）に対して、以下の条件を使って検索できる機能が、アプリにあるとします。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;タイトル&lt;/li&gt;
&lt;li&gt;発売日&lt;/li&gt;
&lt;li&gt;出版社&lt;/li&gt;
&lt;li&gt;著者名&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;この場合、以下のように SQL を作ればよいですね。&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;
require &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&#39;pg&#39;&lt;/span&gt;

&lt;span style=&quot;color: #228b22;&quot;&gt;SQL_ITEM_SEARCH&lt;/span&gt; = &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&amp;lt;&amp;lt;EOS&lt;/span&gt;
&lt;span style=&quot;color: #bc8f8f;&quot;&gt;select
i_title,
i_pub_date,
i_publisher,
a_fname,
a_lname,
a_mname
from item i
inner join author a
on i.i_a_id = a_id
where
(i_title = $1 or $1::varchar is null)
and (i_pub_date &amp;gt;= $2 or $2::date is null)
and (i_pub_date &amp;lt;= $3 or $3::date is null)
and (i_publisher = $4 or $4::varchar is null)
and (a_fname = $5 or $5::varchar is null)
and (a_lname = $6 or $6::varchar is null)
and (a_mname = $7 or $7::varchar is null)
order by i_pub_date desc, i_title
EOS&lt;/span&gt;

conn = &lt;span style=&quot;color: #228b22;&quot;&gt;PGconn&lt;/span&gt;.open(
&lt;span style=&quot;color: #5f9ea0;&quot;&gt;:dbname&lt;/span&gt; =&amp;gt; &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&#39;dbt1&#39;&lt;/span&gt;,
&lt;span style=&quot;color: #5f9ea0;&quot;&gt;:hostaddr&lt;/span&gt; =&amp;gt; &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&#39;127.0.0.1&#39;&lt;/span&gt;,
&lt;span style=&quot;color: #5f9ea0;&quot;&gt;:user&lt;/span&gt; =&amp;gt; &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&#39;postgres&#39;&lt;/span&gt;)
conn.set_client_encoding(&lt;span style=&quot;color: #bc8f8f;&quot;&gt;&#39;SJIS&#39;&lt;/span&gt;)

res = conn.exec(
&lt;span style=&quot;color: #228b22;&quot;&gt;SQL_ITEM_SEARCH&lt;/span&gt;,
[&lt;span style=&quot;color: #b8860b;&quot;&gt;nil&lt;/span&gt;, &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&#39;2000-01-01&#39;&lt;/span&gt;, &lt;span style=&quot;color: #b8860b;&quot;&gt;nil&lt;/span&gt;, &lt;span style=&quot;color: #b8860b;&quot;&gt;nil&lt;/span&gt;, &lt;span style=&quot;color: #b8860b;&quot;&gt;nil&lt;/span&gt;, &lt;span style=&quot;color: #b8860b;&quot;&gt;nil&lt;/span&gt;, &lt;span style=&quot;color: #b8860b;&quot;&gt;nil&lt;/span&gt;])

res.each { |t| p t }

&lt;/pre&gt;
</content:encoded>


<dc:subject>「02:プログラミング」</dc:subject>

<dc:creator>ron</dc:creator>
<dc:date>2009-12-03T02:19:25+09:00</dc:date>
</item>
<item rdf:about="http://ronspace.cocolog-nifty.com/blog/2009/12/post-596b.html">
<title>初心者向けプログラミング言語</title>
<link>http://ronspace.cocolog-nifty.com/blog/2009/12/post-596b.html</link>
<description>そもそも、この言葉自体、なんか、おかしいですよね。 どんなプログラミング言語を使...</description>
<content:encoded>&lt;p&gt;そもそも、この言葉自体、なんか、おかしいですよね。&lt;/p&gt;

&lt;p&gt;どんなプログラミング言語を使おうと、それがチューリング完全であれば、計算できることは同じわけでして。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p class=&quot;quoted&quot;&gt;&lt;strong&gt;初心者がプログラミングできるようになる言語&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;というのは、存在しないのですよ。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p class=&quot;quoted&quot;&gt;&lt;strong&gt;誰でも英語ができるようになる教材&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;と同類ではないですかねえ。&lt;/p&gt;

&lt;p&gt;本屋にいけば、プログラミングの入門書が平積みになっているのを見ることができるのですけど。これって、英語の入門書が平積みになっているのと同じではないかと。それだけ、入門レベルで挫折する人が多い、ということを示唆しているのではないですかね。&lt;/p&gt;
</content:encoded>


<dc:subject>「02:プログラミング」</dc:subject>

<dc:creator>ron</dc:creator>
<dc:date>2009-12-02T01:56:32+09:00</dc:date>
</item>
<item rdf:about="http://ronspace.cocolog-nifty.com/blog/2009/12/php-69f6.html">
<title>PHP をやって過去の謎が解ける</title>
<link>http://ronspace.cocolog-nifty.com/blog/2009/12/php-69f6.html</link>
<description>以下のようなコードの「出身地」は、 PHP ではなかろうか。 if (x == ...</description>
<content:encoded>&lt;p&gt;以下のようなコードの「出身地」は、 PHP ではなかろうか。&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;
&lt;span style=&quot;color: #a020f0;&quot;&gt;if&lt;/span&gt; (x == true ) { &lt;span style=&quot;color: #b22222;&quot;&gt;// &lt;/span&gt;&lt;span style=&quot;color: #b22222;&quot;&gt;do something. }
&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;以前、 Java の Web アプリで、&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;変数がすべて文字列型&lt;/li&gt;
&lt;li&gt;SQL を毎回メソッド呼び出し時に String で構築&lt;/li&gt;
&lt;li&gt;ていうか、なんで PreparedStatement 使わない？&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;というのを見たことがあるのですけど、これも「 PHP 風」ですね。&lt;/p&gt;

&lt;p&gt;PHP には MySQL 関数群というのがあって、これが、&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;パラメータ使えない&lt;/li&gt;
&lt;li&gt;クエリ結果を全部文字列の配列で返す&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という、かなり変わった特徴があるみたいです。&lt;/p&gt;

&lt;p&gt;ただし、PHP 5 からは、 MySQLi ( MySQL Improved Extension ) というのが入ってます。これは、パラメータが使えて、一見 DBI 風。が、クエリ結果は文字列の配列で返すみたい。なんで？&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;
&amp;lt;?php
$a = array(true, false, NULL, 0, 1, &#39;&#39;, &#39;0&#39;, &#39;1&#39;,
  0.0, 1.0, array(), array(1));
var_dump($a);
foreach ($a as $k =&amp;gt; $v) {
  echo &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&quot;$k: &quot;&lt;/span&gt;;
  if ($v) { echo &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&quot;true\n&quot;&lt;/span&gt;; }
  if (!$v) { echo &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&quot;false\n&quot;&lt;/span&gt;; }
}
&lt;/pre&gt;

&lt;p&gt;カオスな実行結果:&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;
array(12) {
  [0]=&amp;gt;
  bool(true)
  [1]=&amp;gt;
  bool(false)
  [2]=&amp;gt;
  NULL
  [3]=&amp;gt;
  int(0)
  [4]=&amp;gt;
  int(1)
  [5]=&amp;gt;
  string(0) &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&quot;&quot;&lt;/span&gt;
  [6]=&amp;gt;
  string(1) &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&quot;0&quot;&lt;/span&gt;
  [7]=&amp;gt;
  string(1) &lt;span style=&quot;color: #bc8f8f;&quot;&gt;&quot;1&quot;&lt;/span&gt;
  [8]=&amp;gt;
  float(0)
  [9]=&amp;gt;
  float(1)
  [10]=&amp;gt;
  array(0) {
  }
  [11]=&amp;gt;
  array(1) {
    [0]=&amp;gt;
    int(1)
  }
}
0: true
1: false
2: false
3: false
4: true
5: false
6: false
7: true
8: false
9: true
10: false
11: true
&lt;/pre&gt;
</content:encoded>


<dc:subject>「02:プログラミング」</dc:subject>

<dc:creator>ron</dc:creator>
<dc:date>2009-12-02T01:32:32+09:00</dc:date>
</item>


</rdf:RDF>
