ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

正規表現が出来るかどうかで、PG/SEの格差社会が生まれるかも・・?

2008-04-02 18:18:24 | Weblog

 たとえば、電話番号をチェックすることを考えます。

 電話番号は、
(1)ハイフン1個(市内局番からの場合)
 数字1桁から4桁-数字4桁

(2)ハイフン2個(市外局番からの場合)
 ・かならず0ではじまる
 ・0のあと、数字1から4桁-数字1桁から4桁-数字4桁

という決まりがあったとします。
(本当はちがうかもしれませんけど、かりにこれをチェックするとします)

このチェックをJavaScriptでしたとすると、
正規表現を使えば、こんな感じになると思います
function denwa_check(val)
{
	if (val.search(/^¥d{1,4}¥-¥d{4}$/)	!=	-1 )
	{
	}
	else if(val.search(/^0¥d{1,4}¥-¥d{1,4}¥-¥d{4}$/)	!=	-1 )
	{
	}
	else
	{
		alert("エラー");
	}
}

(上記¥は、本当は半角)

でも、これ、正規表現つかわないでかくと・・・
たいへんなことに(^^;)




で、昨日、ここをかいていておもったんですけど、結局、正規表現は、

  PHPならpreg_match
  Perlのときは、/正規表現/修飾子みたいなかんじで
  Javaならjava.util.regex.Patternクラス
  JavaScriptだと、上記のように、search
  VBScript,VBAだとRegExpオブジェクト

みたいなかんじで、だいたい正規表現はサポートしています。

で、実際のチェックは、ここにまとまったものがあるように、まあ、実数チェック、漢字チェック(ここの終わりのほうに、第二水準チェックとかもあるけど(リンク先間違っていたので修正しました2008/4/3))、半角カナ、文字列そのたもろもろ、パターンマッチングのものは、だいたい正規表現で表現できちゃいます。

 ってことは、逆に言うと、正規表現「ばっちし」なら、どの言語でも、正規表現で、少ない行数で、ある意味かんたんにかけちゃいます。逆に、正規表現が苦手で、正規表現を使わないと、かなり複雑なIF文を、かなり長い行数かかってかかないと、いけなくなります。バグも入りやすくなり、読みやすくなくて、ある意味、修正が難しいプログラムになります。




 でも、正規表現って、分からない人には、わからないし、苦手な人は、苦手ですよね・・

 また、これ、SEが仕様で、正規表現でチェックするな・・ということを意識していると、それ向きな仕様を書いてくれるけど、SE自体が、正規表現わからないと、DQNな仕様になっちゃうかも・・

 っていうことで、適当な正規表現エディタ(リンク先は検索でひっかかっただけで、使っていない)がないと、正規表現が分かっているSEが仕様をきって、わかっているPGが、プログラムを作った場合と、そうでないSE,PGが作った場合とで、ソースコードの量も違うし、っていうことは、バグの入りやすさも違ってきて・・・となってくると、格差を生じてしまう??

 もちろん、前に書いたように、チェックをまとめてしまえば、正規表現をしってなくても、そのメソッド使えばいいだけだけど、正規表現をしらないような人に限って、まとめようとしない気が・・



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

マイクロソフト、ローカライズガイドを無償公開だけど。。。

2008-04-02 14:35:55 | Weblog

 このブログでも、前に、翻訳について、取り上げてきたことがあった。
 シリーズ翻訳機を使って、ローカライゼーションする場合の手順をまとめてみるで。

 で、マイクロソフトも、ウィリアムのいたずらに対抗して??
 (ってことはないと思うけど)

ここのスラッシュドットの記事
マイクロソフト、ローカライズガイドを無償公開
http://slashdot.jp/it/08/04/01/057215.shtml

によると、マイクロソフトが、ローカライズガイドっていうのを、公開しているようだ。




そのサイト

Language Excellence Style Guides - 日本語
http://www.microsoft.com/downloads/details.aspx?FamilyID=8b00bcd7-9eb2-45e5-a17a-58ff89cf9840&DisplayLang=ja

にいって、ダウンロードしてみると、どうも、ウィリアムのいたずらの上記シリーズ「翻訳機を使って、ローカライゼーションする場合の手順をまとめてみる」で、その5のところ、「■訳語統一で書き忘れたところ」の文体について、あまり書いていないけど、こーいうところの基準、規約になるものようだ。

 つまり、ウィリアムのいたずらのローカライズ方法(主に訳語統一辞書+翻訳)+今回のマイクロソフトの、この「ローカライズガイド」で、翻訳は、ばっちりとなる。

 この辺の「文体の自動化」っていうと、武士語に変換する「もんじろう」の範囲なのかしら・・(武士語のエラーメッセージっていうのも、面白い気がする候)




でもでもでも・・・こーいう規約決めてても・・

そのスラッシュドットにある、

マイクロソフトの自動翻訳の例
http://s04.megalodon.jp/2008-0329-1253-17/support.microsoft.com/kb/284856/ja

(以下斜体は上記サイトより引用)

現象
MSXML parser によって公開されたMicrosoft XML(MSXML)Document Object Model(DOM)オブジェクトは、プログラムで XML ドキュメントを作成し、そしてプログラムで読み込む、そしてドキュメントを操作するのに使用できます。 推奨コーディング事例でないから、 MSXML parser の別のバージョンからの DOM オブジェクトをミックスすることを回避します。 DOM のプログラミングのうち、 MSXML DOM オブジェクトの別のバージョンをミックスしようとすると、次のいずれかのエラー メッセージが表示されます。


これ、ひどくないか(-_-;)
これだと、「DOM オブジェクトをミックスすることを回避します。」だから、回避してくれるので、なにもしなくてよいような気がしてしまう・・

原文は、
こんなかんじ
(以下太字は上記サイト(原文)より引用)

The Microsoft XML (MSXML) Document Object Model (DOM) objects exposed by the MSXML parser can be used to programmatically create, load, and manipulate XML documents. Avoid mixing DOM objects from different versions of the MSXML parser because it is not a recommended coding practice. If you attempt to mix different versions of the MSXML DOM objects while programming the DOM, one of the following error messages appears:

(ウィリアムのいたずら訳)
マイクロソフトXML(MSXML)のドキュメントオブジェクトモデル(DOM)オブジェクトは、MSXMLパーザーが、プログラム的にXMLドキュメントを作成、読み込み、操作できるよう使うときに、出てきます。コーディングを実施する際、推奨していないので、MSXMLの違ったバージョンのDOMオブジェクトを混在することは、避けてください。
もし、DOMのプログラミング中に、違ったバージョンのMSXMLDOMオブジェクトを混在させようとすると、以下のエラーメッセージの1つが出てきます。

いや、Avoid(回避しろ!)って言ってるんだよね・・??

ちなみに、Yahoo!翻訳で上記原文を訳すと。。
。。。(^^;)




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Ruby1.9、Windowsで-その1 書式(コメントとか)

2008-04-02 11:39:55 | Ruby

 きのう、はじめると書いた、「Ruby1.9、Windowsで」です。

 昨日の時点で、インストールまで出来ました。
 今日から、irb(インタープリタで、すぐ確認できるやつ)を使って、お勉強していきたいと思います。

 お勉強資料に、
オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル 
http://www.ruby-lang.org/ja/man/html/index.html

を使います。




■一般的に、言語を説明するには・・

情報処理は、一般的に、入力したデータを処理して、出力します。
そしてプログラムは、その処理内容を書くわけです。
ってことは、

1.書き方
2.データの表現
3.処理

となります。こまかくかくと、こんなかんじかな?

1.書き方
  1-1.プログラムのかきかたと開始点
  1-2.コメントの書き方
  1-3.制御文
  1-4.自分がつくったプログラム(関数、クラスなど)の書き方

2.データの表現
  2-1.定数
  2-2.変数
       2-2-1.1変数のあらわし方
         2-2-1-1 整数
         2-2-1-2 実数
         2-2-1-3 文字
         2-2-1-4 日付、時間
       2-2-2.複数変数の表し方
         2-2-2-1.同じ種類(=配列)
         2-2-2-2.違う種類

3.処理
3-1.データの処理
  3-1-1.数値の処理(数値演算)
  3-1-2.文字の処理
  3-1-3.数値と文字の変換
  3-1-4.日時処理
  3-1-5.配列の処理
  3-1-6.クラス、構造体、メモリなどの処理

3-2.論理式の処理
  3-2-1.論理演算(+シフト演算)

3-3.入出力
  3-3-1.ファイル
  3-3-2.画面
  3-3-3.データベース
  3-3-4.ネットワーク

3-4.並列処理
  3-4-1.スレッドなど

となります。




普通の言語紹介だと、
1-1
 →1-2
 →2-1
 →2-2-1
 →3-1-1
 →3-1-2
 →3-1-3
 →3-1-4
 →3-2
 →1-3
 →2-2-2
 →3-1-5
 →3-1-6
 →3-3
 →3-4
の順番で教えていくと思うので、その順で・・




■プログラムのかきかたと開始点

 irbにおいて、関数を書くと、あたまから実行します。

 puts 3

 (すぐに実行)

 1行に2つ以上書きたかったら、;

 puts 3;puts 5

 (3のあと5表示)

 複数行に書きたい場合、行の最後にバックスラッシュ




■コメント

コメントは、頭に#をつける

#こめんとだよ
puts 3

(3と表示)

ただし、スクリプトで、#!と書くと、これは、コメント以上の意味があります。
くわしくは、
インタプリタ行の解釈




ということで、こんかいはここまで。
次回はリテラルとか、定数とか・・



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする