■■===============【プログラムメールマガジン 色彩】===============■■■ 日本語プログラミング言語なでしこ&ひまわり、WEB開発環境葵情報マガジン ┏━━━━━━━━┓ ┃創刊号(No1)   ┃ ┗━━━━━━━━┛  【01】 ChocoのDB(データベース)を操作しましょうコーナー 第1回 RDBは何が使えるか?  【02】 RPG感覚で「なでしこ本」を学習中  第1回 何でRPG感覚で学習中なの?  【03】 なでしことd3libraryで3Dやろう! 第1回 なでしこにZ軸を加える。    【04】 Word/Excel/Powrpointとの連携 第1回 Excelの日付を判定する  【05】 なでしこで使うと便利そうなWinAPI  第1回 WinAPIを使ってみよう  【06】 GUIマスターへの道 第1回 スプリッタ  【07】 なでしこの最新命令を使ってみよう 第1回 GUID生成  【08】 ポ・イ・ン・ト 第1回 プログラミングコンテスト ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┏━┓ ┃01  テーマ名:★ChocoのDB(データベース)を操作しましょうコーナー★               ┃      第1回 RDBは何が使えるか?     執筆:Choco ┗━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ なでしこは、ネイティブではSQLite2に対応してます。 純粋な意味でのRDBでは無いAccessも含めれば2種類のMDBに 対応していると言えましょう。 その他にOracle、SQL Server、PostgreSQL、Firebird等、様々なRDBが利用できます。 しかしながら、なでしこで実際にRDBを接続している方は少ないように見受けられます。 原因の一つとして、マニュアルの整備が挙げられると思い今回筆を執りました。 なでしこは基本的にADO接続をサポートしてますのでODBC経由ならば ほとんどのRDBが利用できます。 まずは、ADO接続でのRDB利用を説明します。 ADO開く。 DB閉じる。 この二つの命令さえ知っていれば、あとはODBCの設定だけです。 PostgreSQLの最新バージョンである、Version8.2.5を例にしてみましょう。 ■Part1:PostgreSQLのSetting■ まずは最新バージョンをダウンロードしてみて下さい。 URLは、こちらをお勧めします。 http://www.postgresql.jp/ 最新のバージョン8.2.5がすぐにダウンロードできるようになってますので、 クリックしてダウンロードして下さい。 尚、Linux用もありますがくれぐれもWindows用をダウンロードして下さいね。 「Windows版(日本語版)インストーラのダウンロード」です。 ファイル名は「postgresql-8.2.5-1-ja.zip」になります。 ZIP形式で圧縮されてますので、あらかじめ解凍ソフトを入手しておくと良いでしょう。 「postgresql-8.2.5-1-ja.zip」を適当な場所で解凍した後に、 「postgresql-8.2.exe」を実行して下さい。 インストールが始まります。 インストールそのものは、全てデフォルトで結構です。 (今回、特に設定すべき点はありません。) ※ここで設定したID、パスワードは必ずメモしておいて下さい。 (標準インストールだと、IDは「postgres」になると思いますが。) インストールが終了したら、次は基本となるDB(データベース)の作成です。 スタートボタンをクリックして、全てのプログラムを見渡すと PostgreSQLがインストールされたのがわかります。 「PostgreSQL 8.2」の中に「pgadmin3」がありますので起動して下さい。 起動すると、象が出てきます(笑) 「PostgreSQL Database Server 8.2」が見えますので、クリックして下さい。 パスワードの入力を求められますので、先ほどメモしたパスワードを入力して下さい。 画面上に「データベース」が表示されますので、右クリックして、 「新しいデータベース」を選択して下さい。 <名前>は、「testdb」 <オーナー>は、「postgres」 <エンコーディング>は、「EUC_JP」 <テーブル空間>は、「pg_default」 設定するのは、それだけなので終わったら「OK」をクリックして下さい。 ■Part2:ODBCのSetting■ コントロールパネル−管理ツール−データソース(ODBC)を開いて下さい。 「ODBCデータソースアドミニストレータ」の画面が表示されます。 「システムDSN」タブをクリックして下さい。 「追加」ボタンをクリックして下さい。 「PostgreSQL Unicode」を選択してから、「完了」をクリックして下さい。 「PostgreSQL Unicode ODBCセットアップ」画面が表示されます。 以下の項目を設定して下さい。 <データソース名>は、「test」 <サーバー名>は、「localhost」 <データベース名>は、「testdb」 <ユーザー名>は、「postgres」←違うIDで設定していたら、そのID名を入れて下さい。 <パスワード>は、先ほどメモしたパスワードを入力して下さい。 全部設定が終わったら、「保存」ボタンをクリックして下さい。 「ODBCデータソースアドミニストレータ」の画面に「test」が表示されていればOKです。 ■Part3:なでしこからテーブルを作成する。■ それでは、いよいよ「なでしこ」からPostgreSQLを操作してみましょう。 #ここから------------------------------------------------------ 接続文字列は「test」#ここはデータソース名です。 接続文字列でADO開く。 「CREATE TABLE post (DAY TEXT,Name TEXT,Age TEXT);」をSQL実行#ここで登録用の「post」テーブルを作成します。 「INSERT INTO post (DAY,Name,Age) values ('2007/10/11','choco','20');」をSQL実行#データを登録します。 「SELECT * from post;」をSQL実行#登録されたデータを読み込みます。 PDATAはDB結果全部取得#上で読込んだデータを変数「PDATA」に読込みます。 DB閉じる。 PDATAを言う。 終わる。 #ここまで------------------------------------------------------------- ちゃんとRDBに登録された日付と名前、年齢が表示されればOKです。 今回は、PostgreSQLのインストールと設定がメインでした。 次回は、テーブルの設定、いろいろな検索をやってみましょう。 それではまた来月お会いしましょう! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┏━┓ ┃02  テーマ名: RPG感覚で「なでしこ本」を学習中             ┃ 第1回  何でRPG感覚で学習中なの?   執筆:matumatu ┗━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.何でRPG感覚で学習中なの?    私は、「ひまわり本」と「なでしこ本」を持っており、   ひまわりは、「ひまわり本」のとおりにサンプルプログラムを、学習して   業務に活用できました。   ところが、なでしこに開発が移行してから、ついて行けなくなり、   「なでしこ本」の独習途中で、挫折しました。   今回、なでしこ学習帳で、勉強過程を公表しながら学習すると、   やる気が出てきました。   私のような、初心者が、なでしこ学習帳で学習すると、   どの程度、上達するかを記事にしたいと思っています。   ところが、どの程度学習が進んだか・遅れているかを数値化しないと、   仕事が多忙になった時に、また挫折する可能性があるので、   RPGのように数値化するプログラムを作りながら、学習レベル判定結果   を公表することにしました。 2.今年の努力目標   ・ 平日は、なでしこ本を1日1ページ学習し、なでしこ学習帳@はてなで、     学習成果を公表する。   ・ 休日は、なでしこ本を1日2ページ学習し、上記と同じ方法で公表する。   ・ 毎月初めに、「なでしこ」メールマガジン上で、1ヶ月間の学習過程を発表する。   ・ 学習レベル判定プログラムを、私の学習レベルに応じて進化させていく。   ・ クジラ飛行机さんの了解を得た上で、現在では入手困難になった「なでしこ本」     の付録CDROMに入っている、サンプルプログラムを毎日のように、     なでしこ学習帳@はてなに掲載していますが、掲載許可のご厚意に答えるため     必ず、私の学習レベルに応じた改造プログラムを作って公表する。   ・ 毎日のように、なでしこ学習帳@はてな上で公表を続けるのも、結構ハードで、     負担になる日もあるので、日記作成支援プログラムを作り、その進化も公表する。 3.最終目標   ・ まだ、クジラ飛行机さんの了解を得ていませんが、現在では極めて入手困難になった    「ひまわり本」の付録CDROMに入っている、サンプルプログラムを、     なでしこで動作するように改造しながら、全サンプルプログラムの学習過程を     公表する。 極めて遠い将来になりそうです。 (^_^;) 4.現在の、なでしこ本学習レベル判定結果   ・ 「 なでしこ本学習レベル判定6.nako 」は、現在Ver 0.6     まで進化しました。   ・ 学習レベルの判定機能と、日記作成支援機能を兼ねています。   ・ 下記は、日記作成支援機能で、自動的に作成されたデーターで、     はてな記法で出力しています。     *学習レベルを判定した結果 LV = 2: HP = 28 : MP = 200     -完了予想日数 = 519     --完了予想年月日 = 2009/06/09     ---はてなカウンター値 = 5419     ----学習開始日から本日までの日数 =54日   ☆★☆☆ 参考サイト  :http://nadesiko.g.hatena.ne.jp/matumatuh18/   ■□■□ サンプルソース :http://nadesiko.g.hatena.ne.jp/matumatuh18/20080106 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┏━┓ ┃03  テーマ名:なでしことd3libraryで3Dやろう!              ┃      第1回 なでしこにZ軸を加える。   執筆:ゆちボン ┗━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ どうも、こんにちは、またははじめまして! この記事を書いている、ゆちボンです。よろしくお願いします 。 通常、なでしこでは2Dの描画しかできません。擬似的に座標 を 入れて描画しても動くものを作るのはとっても大変だと思いま す しかし、d3libraryを使えば3Dに関する計算はほとんどせず に、 3D描画プログラムを組むことができます。 まずは、d3libraryをダウンロードしてください。 http://www.geocities.jp/yutibonsoft_jp92/d3lib.html そのほかはダウンロードする必要がありません。 *難しい話ですが、DirectXやOpenGLなどを使わずにGDIで描画  しているので面倒なバージョンUPなどはしなくてもいいで す d3libraryは圧縮してあるので解凍した後に「d3lib.dll」と 「d3lib.nako」をなでしこのフォルダの中に入れてください。 そしたら、準備は完了です。 とりあえず、描画してみたいと思います。ちょっと難しそうで すが 同じようなことばかり書くので実際に3Dプログラムを組むと きは コピー&ペーストでもかまいません。 !「d3lib.nako」を取り込む。 d3init(母艦の背景ハンドル,640,400)'初期化。描画前に毎回 呼んでください。 ペン色=黒色 '黒色に設定する BOX(-1,-1,-1,-1) '色の設定(これがないと描画できない) d3setcam(400.0, 400.0, 300.0,0.0,0.0,0.0,1.0) 'カメラの 位置、視野角を設定 d3box(150.0, 150.0, 150.0,-150.0, -150.0, -150.0)'立方体 描画 実行してみると、立方体が描画されます。エラーがでたらDLL や インクルードファイルのコピーのミスかもしれません。 d3libraryは立方体だけでなく、円、線、直方体、矢印、 四角形ポリゴン(応用で三角形ポリゴンも可)などを描画するこ と が可能です。さすがに市販の3Dゲームみたいなのは無理です が ワイヤーフレームのゲームならさくっと作れると思います。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┏━┓ ┃04  テーマ名:Word/Excel/Powrpointとの連携              ┃      第1回 Excelの日付を判定する   執筆:粗茶 ┗━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ こんにちは。粗茶です。 Excelを中心に「なでしこ」で仕事を効率化するテクニックを紹介して いこうと思いますので、よろしくお願いします。 Excelのデータを扱うのは、数値だけではありません。時には日付も 重要なデータとして利用されますよね。 日付を早い順(昇順)に並べ替えたり、基準日の前後かどうかを判定したり。 今回は、Excelから日付データを取得して、それが基準日より前か後かを 判定してみましょう。基準日の前後は不等号で表すことができます。 基準日よりも前ならば、日付<基準日 基準日よりも後ならば、日付>基準日 となります。 あらかじめ、ExcelでセルA1に「2008/1/5」と入力して、 デスクトップに「date.xls」という名前で保存しておいてください。 #--------+---------+---------+---------+---------+---------+ エクセル起動して「{デスクトップ}date.xls」をエクセル開く。 #1 「A1」のエクセルセル取得して日付に代入。          #2 エクセル終了。                       #3 日付を表示。                        #4 もし日付<「2008/1/9」ならば 「1」を表示。         #5 もし日付<「2008/01/09」ならば「2」を表示。         #6 もし日付<「2008/01/9」ならば 「3」を表示。         #7 もし日付<「2008/1/09」ならば 「4」を表示。         #8 もし日付>「2008/1/1」ならば 「5」を表示。         #9 もし日付>「2008/01/01」ならば「6」を表示。         #10 もし日付>「2008/01/1」ならば 「7」を表示。         #11 もし日付>「2008/1/01」ならば 「8」を表示。         #12 #--------+---------+---------+---------+---------+---------+ #1 エクセルを起動し、「date.xls」ファイルを開きます。 #2 セルA1の値(2008/1/5)を取得して、変数「日付」に代入します。 #3 エクセルを終了します。 #4 変数「日付」の内容を表示します。"2008/01/05"と表示されます。   以降で日付データを比較しています。 #5 "2008/0" < "2008/1" となり"1"を表示します。 #6 "2008/01/05" < "2008/01/09"となり"2"を表示します。 #7 "2008/01/0" < "2008/01/9" となり"3"を表示します。 #8 "2008/0" < "2008/1" となり"4"を表示します。 #9 "2008/0" < "2008/1" となり表示しません。 #10 "2008/01/05" > "2008/01/01"となり"6"を表示します。 #11 "2008/01/0" < "2008/01/1" となり表示しません。 #12 "2008/0" < "2008/1" となり表示しません。 結果: 2008/01/05 1 2 3 4 6 Excelでは、見た目が「1/5」「平成20年1月5日」などと表示されていても 実際のデータは「2008/1/5」と入力されています。 これを「なでしこ」で取得すると、「2008/01/05」というデータになります。 #4で表示した結果がそれです。 判定は、日付を文字列として左から順に1文字ずつ比べていくめ、 日付データの書式が同じでなければ正しく判断できません。 たとえば、"2008/10/05"と"2008/2/2"を比べたとき、 "2008/1" < "2008/2"と判断してしまい、"2008/2/2"のほうが遅い日付 (後の日付)となってしまいます。 "2008/10/05"と"2008/02/02"を比べると、 "2008/10" > "2008/02"と判断され、"2008/10/05"のほうが遅い日付と なり、正しい結果が得られます。 西暦は4桁、月・日は2桁にして判定するように気をつければ、 間違いが少なくなると思いますよ。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┏━┓ ┃05  テーマ名:なでしこで使うと便利そうなWinAPI              ┃      第1回 WinAPIを使ってみよう  執筆:SIGO@TOPOZO ┗━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 今回はWinAPIについての簡単な説明と、なでしこでの使い方や注意点を紹介します。 1:WinAPIとは?  Windowsが提供する比較的低レベルのインターフェイスであり、 ほぼ全てのWindowsプログラムが直接又は間接的に利用しています。  WinAPIをなでしこで直接使うことによって標準命令では出来ない、 「痒いところに手が届くプログラミング」が可能になります。 2:どうやって使うの?  いくつかの関数については「lib\windows.nako」を"取り込む"ことによって 利用することができます。(何が宣言されているのかは実際に見てください。)    !『windows.nako』を取り込む   MessageBox(0,"テキスト","キャプション",MB_ICONQUESTION)  しかし「windows.nako」で宣言されていないものは自分で宣言してあげる必要があります。  なでしこでは、 ●命令名(引数)=DLL(DLL名,C言語での宣言文) 書くことによって宣言できます。  例えば先ほどの"MessageBox"の場合、   ●MessageBox(h,{参照渡し}t,{参照渡し}c,u)=DLL("user32.dll","int MessageBoxA(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType)")   !MB_ICONQUESTION=$20   MessageBox(0,"テキスト","キャプション",MB_ICONQUESTION)  と書けばいいわけです。    次になでしこでWinAPIを使う際に知っておいたほうがよいと 思われるポイントをいくつか紹介します。  ・MSDN等で「〜へのポインタを指定」と書かれている (型がPやLPで始まる又は*が付いている)引数の場合、宣言の引数の前に"{参照渡し}"とつける。   (実数型や整数型の場合は"{参照渡し}"をつける代わりに、"POINTER"命令の戻り値を渡す。)  ・引数に文字列型を持っているAPI関数の場合、宣言で"MessageBoxA"のように"A"をつける。   (Unicodeを扱う場合は"W"をつける。)  ・構造体を使う場合、"グループ"を作り値を設定したあと"PACK"命令を使うか、 "確保"命令で確保した変数に"バイナリ設定"命令で値を設定する。   (読む場合、"UNPACK"命令又は"バイナリ取得"命令を使う。)  ・引数として使える型は、    CHAR,BYTE,SHORT,WORD,LONG,DWORD,UINT,WPARAM,COLORREF,POINTER,CHAR*,VOID,DWORD_PTR,LONG_PTR    "LP*" "P*"はPOINTER、"H*"はDWORDに自動置換。   (上記のもの以外は対応する型に書き換える。)  ・変数に文字列が返されるAPI関数を使う場合は、 あらかじめ"確保"命令で変数に必要なサイズを確保しておく。 3:参考になるWebページ(順不同)  MSDNライブラリ - Microsoftの開発者向けサイト   http://msdn2.microsoft.com/ja-jp/library/  Windows Data Types - データ型について   http://msdn2.microsoft.com/en-us/library/aa383751.aspx  Win32 API関数リスト - 様々なWinAPIの紹介   http://yokohama.cool.ne.jp/chokuto/urawaza/api/  なでしこwiki(しらたま/API/) - なでしこでのAPIの使い方が詳しく載っています   http://nadesi.com/wiki/index.php?%A4%B7%A4%E9%A4%BF%A4%DE  API利用支援 - なでしこでのAPI宣言を自動作成   http://www.geocities.jp/moka21/teatime/soft/nadesiko/sample.html#6   無理矢理詰め込んだ説明になってしまいましたが、 次回からは実際にWinAPIを使っていろいろ書いていきたいと思います。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┏━┓ ┃06  テーマ名:GUIマスターへの道  ┃      第1回 スプリッタ 執筆:はやしま ┗━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ はやしまです。 なでしこは、GUIベースのアプリが簡単に書けることも大きな魅力のひとつです が、マスターするのはなかなか大変です。 そこで、このコーナーでは、GUI部品の説明を、GUI部品を習得するためのコツも 含めご紹介したいと思います。基本姿勢は、「習うより慣れろ!」です。 今回のテーマは、スプリッタです。 GUI部品マスターへの第一歩は、「とりあえず書いてみる」です。下記のように プログラムをなでしこエディタで書いて実行してみましょう。 境界とはスプリッタ ・・・何も表示されませんね。 なかなか手ごわそうです(^^; 次に、命令検索で「スプリッタ」を検索してみましょう。 すると・・・出てきました! 早速、「命令の解説を見る」をクリックしてみましょう。 ・・・サンプルありませんね。 がっくり、orz めげずに、次は、なでしこ学習帳@はてな(http://nadesiko.g.hatena.ne.jp/) で検索してみましょう。 お、いくつかひっかかりましたね。 順番に見てみましょう。 自分の学習帳にサンプル発見!(自分で書いたのに忘れている・・・) http://nadesiko.g.hatena.ne.jp/mr-80b/20070904/p1 とりあえずこれをコピペして実行してみましょう。 おお!見事になんだか複雑な区切りができています。大きさも自在に変更できますね。 見て、触ってわかるように、スプリッタとは、ウィンドウに区切りを入れて、 サイズを自由に変えることができるような部品です。 ここから先は、いろいろ試行錯誤してみてください。 パネルを置いたり、レイアウトを色々変えてみたり・・・。 ・・・とまあ、こんな感じで調べるのが、GUI部品をマスターするコツです。 みなさんも、ぜひいろいろトライしてみてください。 ━[PR]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ なでしこを学習するなら・・・なでしこ学習帳@はてな http://nadesiko.g.hatena.ne.jp/ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┏━┓ ┃07  テーマ名:なでしこの最新命令を使ってみよう ┃      第1回 GUID生成 執筆:クジラ飛行机 ┗━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ クジラ飛行机です。 このコーナーでは、毎回、最近なでしこに実装された面白い命令を紹介します。 皆さんに「使ってみたい!」と思ってもらえれば幸いです。 栄えある1回目は、「GUID生成」命令です。なんとなくよく使うので取り上げてみました。 GUIDというのは、全世界で2つ以上の同じ値を持つことがない一意な識別子のことです。 Windowsで用いられているオブジェクトのクラスIDをGUIDと呼んでいます。 使い方は次の通りです。 ※「GUID生成」のサンプルプログラム === 5回   GUID生成して表示。 表示ログをメモ記入。 === プログラムを実行すると、以下のようなGUIDの値が表示されます。 もちろん、このプログラムを実行したパソコンや時間によって、 必ず違う値が表示されます。 何度か実行して値を比べてみましょう。 7FE89714-09AB-4840-BF23-C486087AD714 5884E7F9-F924-427B-BF37-8D5500299FDA 66667AA3-06FC-4D4C-AED8-F8D80C5E6B58 1E4D7A4F-354E-40A9-A837-A4A598792B6B 71FB0CE2-6FAA-48CF-AE64-C8666C337CEA これを何に使うのでしょうか。 絶対に他の値とかぶりたくないユニークなファイルの名前として利用したり、 適当に値をつけたい場合など、意外と使いどころはあると思います。 「GUID生成」命令を何かに使ってみてくださいね。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┏━┓ ┃08  テーマ名:ポ・イ・ン・ト ┃      第1回 プログラミングコンテスト  執筆:EZMAVI.net ┗━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ どうも、EZNAVI.netです。 2008年も始まり、今年は、北京オリンピックがありオリンピックで 世の中が盛り上がる年となりそうですね。 前回のオリンピックでは『なでしこジャパン』が話題となり、 日本語プログラミング言語なでしこの由来がそこからつけたとの事! 4年目を迎えているなでしこをもっと盛り上げていこうと思うしだいです。 こちらでは、補足情報、ミニプログラム紹介、生活情報などメールマガジンを見て 飽きさせないよう多種多様な内容を紹介していきます。 第一回目ということで、今回は2007日本語プログラミングコンテストを紹介したいと思います。 他の日本語プログラミング言語との共同コンテストということで、1/31まで以下の 3種類のテーマに分けて募集しています。 [1]詩や小説のようなプログラム [2]絵を描く [3]いつも使うマイプログラム(自由課題) ぜひ、皆さん、自慢の作品を応募しましょう! 最後に、少し余談ということで、最近掲示板で大阪弁や佐世保弁の方言の話で 盛り上がっていました。確かに、日本語のプログラムだからできる面白さですね。 そういうことで、最後に、方言を使った1行プログラムで今回のメルマガを 終わりたいと思います 「なでしこ最高!」を表示するだに。  # 地元の静岡県遠州弁「〜だに」は「〜だよ、〜して!(断言)」の意味です。 では、また来月をお楽しみに!。 ■■===============【プログラムメールマガジン 色彩】===============■■■   ・ メールマガジン登録・解除はこちら (http://mm.himanavi.net/)