2011年11月29日火曜日

PHPで金額等の数値に3桁毎のコンマを入れる

金額等の数値に3桁おきにコンマを入れるには
number_format()
を使う。
echo number_format(1234567);
とすれば
1,234,567
となる。
2つめ以降の引数に小数件以下の桁数や、小数点に使う文字、コンマ以外の区切り文字も指定できる。

ちなみに金額なら money_format() というのもあるが、この number_format() の方が簡単かも。

インターネット発の集団行動が気にかかる

大阪府と大阪市のダブル選挙が終わり、橋本徹さんの率いる大阪維新の会が圧勝する結果になった。
テレビのニュースを見ていると、無党派層と呼ばれる若い世代の支持を呼び起こしたことで投票率が上がったことも勝因のひとつとしてあげられていた。その際に、ツイッターやソーシャルネットワークの活用による呼びかけで、投票が広まったのではないかとの指摘があった。

近頃、こうしたインターネットによる社会への影響が見られることが多くなった。
特に、インターネット上の呼びかけで集団行動を引き起こすような現象だ。
先日も、都道府県が作ったマスコットキャラクターの人気投票があって、特定のキャラクターに投票が集中することが起こり、正常な人気投票を妨害するような事態になった。

世界的には、フラッシュモブという事前に申し合わせた人達が街中で通行人のような素振りで紛れこみ、突然、集団でダンスを始めたり、同じ行動をする等して、周囲を驚かす、ドッキリのようなイベントがある。
このような行動は、交通の迷惑になったりすることがあることから、非難の声もあるが、ほどほどなら、珍しいうちは、お遊びで済む。
しかし、不特定多数の集団行動であることから、店舗従業員の少人数では太刀打ちできないことをいいことに、集団万引きをするような事件も起きている。

アラブの春や中国国内での民主化運動等、インターネットを政治的な活動に活用できることは、ある方向性から見ると、有効と見ることができる。もちろん、政権から見ると、邪魔な存在だろう。

インターネットや、その中のソーシャルメディアは良いことに機能することもあるし、悪いことに機能することもある。
良いことはそれでいいのだが、最近は悪い面も目立ち始めているような気がする。

インターネットの呼びかけは、その場限りの無責任な「お祭り」だ。
若い人達は、深く物事を考えず感情で行動してしまうことがある。年をとっても感情で物を考えるが、若い人達よりは自立した考えがあったりして、他人の意見を真に受けない。悪いく言えば年をとると素直じゃないのだ。

インターネットを使って、責任の所在のない集団が、社会へ破壊的なインパクトを与える。
インターネットのユーザーひとりひとりの力を結集して、社会へ影響を与える。その結果がテレビでニュースとして取り上げられる。自分が若かったころのことを考えると、そういうのも面白いかもしれないと思うが、それなら想像が及んでいない。その裏で、悲しむ人や辛い思いをする人がいるかもしれないことを考えなければならない。

どうやって理解すれば「シミュレーション」が「シュミレーション」になるのか

この文章の入力に使っているGoogleのIMEで「シュミレーション」と入力すると「→シミュレーション <もしかして>」と表示される。
GoogleIMEの言うように、元の英単語が「simulation」で「simu~」で始まるから、「シュミ~」ではなく「シミュ~」の方がより適切だ。
もう少し英語っぽい発音では、「スィミュ~」の方が近いのかもしれないが、カタカナ表記に変換される方法としては「simu~」と来れば、「シミュ~」で自然だと思う。

この議論は、もう大昔から、言い尽くされている。
この話題はもう結構だ・・・だ・・・だ・・・だが、気になるのだ。
やはり、「シュミレーション」と書かれると気になる。

どのような発想から「シュミレーション」と書くのだろう?
なかには、本人も混乱しているのか「シュミュレーション」とか「シミレーション」と書く人もいる。
以前、あるコンピュータプログラム中に「syumirater」とう単語を見たことがある。これなんて読むの?シュミラーテー?
「simulator」のことだろうが、この一単語中だけでいったい何箇所勘違いしているのか。

ひょっとして「シュミレーション」と書く人は、どこかで「シミュレーション」という表記を見かけたときに、「うわ、ミスってる」と思っているのではないだろうか?どっちがミスっているのか。
いまだに、テレビでも「シュミレーション」の表記を見かけることがあるし、やはりまだ「シミュレーション」という言葉自体が定着しきっていないということかもしれない。

例え「シミュ」より「シュミ」の方が発音しやすくても、日本語の「趣味」を連想しようとも、元の単語が「simu」となっている以上、それを理解すれば、あらゆる言い訳は払拭される。

simulationの意味が分かりにくいことも原因の一端のような気がする。
simulationとは「擬態」等と訳されたりするが、それでも分かりにくい。
ようは、実際はしないけれど、試験的にやってみたり、本物の真似をするようなことだと理解している。
例えば、避難訓練とか、本物っぽく作られた航空機のコックピットとか。

「シミュレーション」が「シュミレーション」と書かれたところで、普通は困ることはないし、スルーするが、業務で商品名として扱ったりするようなシチュエーションでは、どうでも良い指摘だけにちょっと反応に苦慮する。
それだけに、間違って理解している人は、誰にも訂正されず、ずっと「シュミレーション」と言い続けるのかもしれない。

Excelの表は、完成されているか

Excelは表計算と呼ばれるソフトウェアであるが、何も計算しなくても、表形式で情報を管理したり、ワープロとして使われていたりすることがある。

最初にExcelを起動すると、縦横に罫線のひかれた真っ白な空の表が表示される。
ここで表示される罫線は、印刷では出力されない。
印刷でも出力されるようにするには実際の罫線を書く。

罫線や塗りつぶしを駆使して表作りに凝りだすと色々と装飾できる。
しかし、触れば触るほどメンテナンス性が落ちる。

外枠と中の線等を違う罫線で引いて、異なる罫線を混在させると、コピー&ペーストで罫線もいっしょに上書きされる。ペーストした後、罫線を引き直したりしなければならない等、手間がかかる。
一行ごとに行全体の色を変えてシマシマにすると、見た目に派手だが、行挿入に弱いのは容易に想像できる。
セルの結合をすると、あらゆる操作が複雑化することがある。

複数の人間で管理されるExcelファイルでは、人によって観察力や几帳面さが違うので、編集による表の乱れを細かいところまできっちり修正する人と、そのままにする人がいる。

これらを当たり前のことととるか、何か解決方法があると考えるか。
もう完成しているように見えるExcelでも、よく見ると、改良点はありそうだ。

私は今のままでも困らないが、それより他の人が表を作るときに、あんまり凝らないでほしい。
今、編集している誰かが作ったExcelファイルが面倒で、また、こんな記事を書いてしまった。

知能指数100が平均ということは?

知能指数を判定できるウェブサイトがある。私がやってみると120を超えるような、能力以上と思われる数値が出た。以前に似たようなものをやったことがあるのと、インターネットの知能指数テストの判定誤差によるものだろう。ただ、こんな私でも100前後程度の平均的な知能があるのではないかと勝手に思っている。

国による差や、知能指数という基準の捉え方もあるのだが、大雑把に頭の良さのようなものだとして、平均が100ということは100に満たない人が半数いるということである。
頭の良さというのは、生活において、かなり影響があると思う。
日々選択だ。道路を移動するにも、買い物をするにも、仕事でも、私生活でも、少なからず頭を使う。
ちょっと判断を誤ったからといって、すぐに命に関わったり、取り返しがつかなくなるようなことにはならないが、判断の積み重ねや、致命的な局面では、重要なこともあるだろう。
職業や性格形成にも影響しそうだ。
頭が悪いことで社会的に摩擦ができ、チンピラのようになってしまったり、反対に引っ込み思案になりすぎたりということがあるのかもしれない。
本人はそう思っていないだろうが、世の中、頭があまりよくないことで、不利な生活をおくっている人が結構いそうな気がしてきた。
おっと、ひょっとしてこれは私のことかも、どおりで世の中うまくいかないわけだ。

しかし、頭が良すぎることも不幸だろうと思う。
例えば、水の入ったコップを手に持ってひっくり返せば、水がこぼれて床を濡らす。分かりきったことだ。もしも、そのように明らかに分かりきったことをわざとする人がいたら、私はイライラするかもしれない。
つまり、考えられる人には当たり前のことが、考えられない人には当たり前でないということが起こる。
頭の良すぎる人は、日常的にその状態だ。頭の良い人にとって当たり前のことでも、周囲のほとんどの人はそんなに頭が良くないから、同じように予測できない。
頭の良すぎる人は、周囲の行動に「なに、分かりきったことを失敗してんだ」と、じれったく感じるばかりだ。

私はスーパーやコンビニで買い物をする時、レジで、買った物の金額を暗算している。正確にはしないが、だいたいの総額を計算する。
そして代金の支払い時に予想通りだったか確認できる。大きく違っていたら、レシートをチェックする。その時はたいてい私の勘違いで、後から気付かされて納得するだけだが。
日頃から頭を使うことを億劫がらず、先を見通すようにしておきたいとの思いから、そんなことをしている。

頭が良くなっても、そんなにバラ色の世界でもないのだが。

シェアウェアはどのくらい儲かるのか?

無料で使えるソフトウェアをフリーソフトウェア、有料のソフトウェアをシェアウェアと表現することにする。

シェアウェアを作ったとして、どのくらい儲かるものだろうか?
先に結論を言うと、まったく儲からない。
簡単なソフトウェアであれば、一本も売れないだろう。
そこそこよくできたものでも10本売れれば御の字。100本も売れたらヒット作だ。

シェアウェアは、インターネットを通して販売することが多いだろう。Vectorで公開するか、独自ホームページを設けてPayPal、銀行振込等で支払いを受けるようなやり方がある。

Vectorを例にすると、ユーザーははなっから支払いをするつもりがないのが大半だ。目的のカテゴリーのソフトウェア一覧ページを表示したら、フリーソフトウェアのアイコンのついたソフトウェア以外は、目もくれない。
Vectorを訪ずれる人のほとんんどは一切何も供するつもりなどなく、一方的にもらいに来るだけだ。その意識すらない。インターネット上にあるソフトウェアに対価を支払うという概念がない。
ソフトウェアを作る労力を知らないし、知ろうともしないし、知りたくもない。知ったとしても、知ったことではない。

自前のホームページに公開したソフトウェアなんかだったら、存在を知られることすら難しい。

あなたはメールチェッカーを使われているだろうか?仮に、それが100円のシェアウェアになったとする。
メールチェッカーなんて、どこにでも転がっているので、無料のものを探しても良いが、それまで使わせてもらっていたこと、これから先も使わせてもらうこと、他のソフトウェアに変えた時のインストールと再設定、使い方を覚える手間を考えれば、私なら缶コーヒー1本にも満たない金額なんか、とっとと払ってしまう。
だが、多数の人はそうではない。1円でも値段がつくと、多くの人は使わないだろう。手間や使い勝手を考えれば、どう考えても払ったほうが得だとしても、インターネットの世界では、誰も払わないのだ。
どんなに素晴らしいソフトウェアを作ったとしても、値段をつけると損得の勘定では売れない。
そればかりか、インターネットの世界で有料化すると「悪」とレッテルされ、感情的な反発をかうことすらある。
人が労して作ったものをただでもらえないから「悪」というのは、まったく道理にかなっていないが、インターネットの世界は無料が当然のごとくなっていて、そういう勘違いを起こしてしまう。それが正しいとは思わないがそういう発想を持つ人がいる。

ちょっと前に野田総理大臣という人が少々好感度が高かった。政策が良いからではない。前の総理より低姿勢だからだ。
傲慢ではなく、国民に対して、しおらい態度を見せているからだ。
野田総理大臣の良し悪しは置いておいて、こうした表面的なことでものを見る「人の愚かさ」のようなものを感じるが、現実はそういうことだ。
ソフトウェアも同じで実性能ではなく、他のことが重要だったりする。

こうしたことは、私の経験から考えさせられてきたことだが、そうした中からシェアウェアを売るためのコツというか、法則や、方法も見えてきた。
しかし、それをここでは書かない。いいアイディアがあれば黙っていて、他人に教えるということはしないからだ。

そう、このような書き方をすると、「ちぇッ、なんだ言わねえのか」となる。
私もあなたも、他人に理由もなく、一方的に与えなければならない理屈はないのだが、インターネットでは情報でもソフトウェアでももらえることが当たり前だと思ってしまうのだ。私の言い方もよくない。こうした上から目線のような物言いは反感をかう。
私が思いつくシェアウェアを売るつまらないアイディアのようなものは書いてもいいんだろうが、今回は主眼からそれるのでパスさせていただきたい。

こうした文章をひとつ書くにも何十分もかかる。こんなものでも、そこそこ面倒な作業だ。
時間と頭を使って、得られるものはほとんどない。
シェアウェアも同じようなことが想像できるのではないだろうか?

SQL Server2000でDTSのインポートのテーブル指定が面倒くさい

SQL Server2000 の SQL Server Enterprise Manager。DTSによるインポートという機能があり、別のデータベースからテーブルやビューをコピーすることができる。データベースのまるごとコピーなら、バックアップと復元を使う方法もあるが、ネットワーク経由だとバックアップファイルのコピーが必要になるためセキュリティ上許されないことがある。そこでポート1433を開放して、ネットワークごしにコピーするためのひとつの選択肢となる。

この機能、SQL Server2000で行おうとするとかなり使いにくい。
「データ変換サービス インポート/エクスポート ウィザード」を使い、「変換元データベースからテーブルとビューをコピー」というので行うと、テーブルとビューを選択するダイアログが表示される。
このダイアログが強烈に使いにくい。テーブル数が数百、数千とあるような大規模なシステムになると地獄を味わう。
テーブルとビューが一覧表示されるリストに、5行と半分ぐらいしかテーブルが表示されない。ダイアログのサイズは固定されていて、大きさを変えることもできない。ちょっとずつスクロールしながら1行ずつ設定していかなければならない。
「すべて選択」「すべて選択解除」というボタンがある。これをクリックするとすべての行のチェックボックスが変化する。あくまですべての行を一気に変えるものなので、部分的に変更したい場合は、ひとつひとつクリックしていく。ShiftキーやCtrlキーによる複数行選択も効かない。本当に一行、一行、設定していかなければならない。マウス操作ではチェックボックスの細かいクリックが辛いのでキーボードで行おうとすると、チェックのオン/オフはスペースキーでできるものの、次の行に移動しようと下矢印キーを押すと、2列目のセルがコンボボックスになっているので、コンボボックスの中身がスクロールしてしまう。
唯一の方法は、はじめにすべて選択にした後、チェックを解除したい行をクリックしてアクティブにし、スペースキーでその行のチェックを解除する、解除することにより2列目のコンボボックスが消える。それで下矢印キーで行移動が効くようになるので、次の行に移動できる。以降はスペースキーと下矢印キーを交互に連打する。選択しなければならない行よりも、選択しない行の方が多くても、マウスクリックでチェックするよりはキーボード連打の方が、幾分、速くて楽だ。
スペースキーと下矢印キー、2つのキーをがんばって連打しつづけて複数行の選択状態を変えることはできても数百行ともなると、かなり辛い。いや、辛かった。

各テーブルやビューには所有者がある。作成先はデフォルトで「dbo」になる。これまた一行ずつ、書き換えていかなければならない。
あらかじめクリップボードに所有者名をコピーしておいて、作成先のセルをクリックし、所有者名の位置までカーソル移動して、Ctrl+Vで貼り付け。次の行をクリックしては、カーソル移動して貼り付け。これを何百行と行わなければならない。いや、行った。

セルを編集状態から抜けようとしたり、なにかの拍子に、間違ってESCキーを押したりすれば、瞬時にダイアログが閉じて、行った編集が全部パーになる。いや、なった。
なったら、またひとつひとつやりなおしだ。涙が出る。

何時間もかけて、「次へ」ボタンを押す段階まで到達できたなら、次の画面でDTSパッケージとして保存しておくことができる。保存しなかったら、せっかく設定した内容は一回限りで終わるので注意したい。
保存したパッケージは、後から編集しなおすことができない。一度作ったら最後、先ほどの画面のテーブルとビューの選択を編集しなおすことはできない。一箇所でも間違っていれば、はじめからやりなおしとなる。

作ったDTSパッケージをちゃんと作って保存できたなら、「データ変換サービス」に登録されているので、そこから実行できる。実行にはかなり時間がかかる。

それで、苦労して作ったDTSパッケージを実行してみると、エラーの嵐・・・
もうエラーの内容を検証する気にもならず、あきらめて他の代替案で行った。代替案があったからいいけど。

これに限らず、SQL Server Enterprise Managerは、何をやっても反応が遅いし、どうにも使いにくい。