} I言語ホームページ


1.1 I言語とは、その1
I言語とはInstant言語の略です。コンピューターのプログラムを即座に作る事が出来る言語です。
プログラム作りは結構難しく、10人が勉強を始めても、実際にプログラムを作れるようになる人は、残念ながら10人とは成りません。
また、実際にプログラムを作れるようになったとしても、プログラムを作るには非常に時間がかかります。
そこでI言語では、難しい部分と、時間のかかる部分を全てコンピューターに任せる事で、 「誰でも」しかも「早く」プログラムを作れるようにしました。
1.2 I言語とは、その2
全てをI言語で対応する事は難しいので、SQLと呼ぶ別の言語も使用します。SQLは簡単な文法ですので、誰でも理解できる言語です。
I言語は、SQLを効果的に使う為の物ですので、一般的には給与計算、会計処理、生産管理と言った情報処理システムと呼ばれる、 事務処理システム専用の言語ですので、応用範囲は広いですが、何でも出来る言語では無いので、その点は注意して下さい。
1.3 I言語とは、その3
パソコンとは、パーソナルコンピューターの略です。
日本語で言い換えれば、企業等で使用する大型の計算機に対し、個人で使用する小型の計算機の事です。
では、あなたはパソコンを計算機として活用していますか?。
残念ながら、パソコンを計算機として活用している人は少ないと思われます。
これでは、パソコンの能力を十分に生かし切れていません、宝の持ち腐れとは言いませんが、非常にもったいない事です。
なぜでしょうか?、それは、パソコンを計算機として活用する為には、目的に合ったプログラムが必要ですが、
目的に合ったプログラムがあまり無く、個人でプログラムを作ろうとすると、難しく、かつ、時間がかかる為に、
個人ではプログラムを簡単には作る事が出来ない為です。
つまり、これを解決出来る言語が「I言語」と言う事になります。
1.4 I言語とは、その4(VER8.3版 2011年7月5日改定)
それでは、I言語が難しくない事、時間がかからない事を理解してもらうために、実際のプログラムで説明します。
I言語はSQLを使います。SQLはリレーショナルデータベースと呼ぶデータを効率よく記憶し、処理する為の言語です。
記憶はテーブル(行と列の2次元の表)と呼ぶ単位で行います。列がデータの種類で、行が1件づつのデータです。
I言語は、単に難しさの解消と、時間をかけない事を狙っただけでは、上手くゆかないので、規約でカバーしています、必要な部分を説明します。
I言語ではテーブルを許可(英字4文字)で大きく区分しています。使用者には1個の許可を与えられます。 これにより使用者の使える名前を集約したり制約する事で、開発時の生産性を上げたり、許可の管理が簡単に行えるようにしています。
今回はインストール時点で許可"ZZZY"が作られていますので、これを使います。
テーブル名と列名の先頭は必ず許可と同じ文字列にする事としています、 そして、テーブルの最後は必ず"実表"(英語表記は"_TABLE")とする事としています。
更に、許可の次に2文字の部分(許可内の細かな区分)を付ける事としています、今回は部分を"AA"とします。
それでは、ごく簡単な月単位のエンゲル係数を導くための、家計簿のテーブルを考えてみましょう。
列としては"年月日"、"内容"、"食費"、"金額"、が考えられます。
尚、テーブルは他の行と区別する為の主キーが必要です、今回は"年月日"と"内容"で区別出来るので、この2個が主キーとなります。 I言語では主キーは先頭に続けて配置する事になっています。(正しくはI言語自身が使う列が先頭に来て、その次から主キーが並びます)
実際の作業は、最初に列のデータ辞書を作ってから、次にテーブルを作ります。
下記がテーブル情報です。
(注意:FireBirdはテーブル名や列名に日本語が使えないので、日本語部分はローマ字で対応して下さい)
****************( テーブル )********************
●テーブル名=ZZZYAA_家計簿実表
■列名1=ZZZYAA_年月日 CHAR(8) (主キー、データ辞書の型1は"D")
(CHAR(8)は半角文字で8文字記憶出来る意味です、リレーショナルデータベースには年月日を記憶出来る物も有りますが、 リレーショナルデータベース毎に全く異なる動きをするので、I言語ではあえて文字で8文字としています)
(データ辞書の型1が"D"[DATE]は年月日を意味します)
■列名2=ZZZYAA_内容 NCHAR(20)(主キー、データ辞書の型1は"J")
(NCHAR(20)は全角文字(半角も含めて)で20文字記憶出来る意味ですが、I言語では都合により全角で10文字の意味となります)
(データ辞書の型1が"J"[Japanise]は全て全角[日本語]を意味します)
■列名3=ZZZYAA_食費 DECIMAL(1,0)(データ辞書の型1は"+")
(DECIMAL(1,0)は数値で有効桁数1桁、小数点以下0桁を意味します)
(データ辞書の型1が"+"は0以上の数値を意味しています)
(この値が1の場合食費と見なす事にします)
■列名4=ZZZYAA_金額 DECIMAL(9,0)(データ辞書の型1は"+")
************************************************
◎(データ辞書登録画面)◎(テーブル登録画面)

それでは、データーを登録するためのプログラムを作ってみます。尚、ここまでは全てI言語の開発支援プログラムで作る事が出来るので 、直接プログラムを打ち込む必要は有りません。
出来たプログラムです。
****************( プログラム VER8.3 )******************************************
--(VER7以前は"?_MM?"が"?_M?AA"に,"~+"が"~~AA"に,ZZZZZZ_SQLがZZZZ_SQLになります)--
PROGRAM=,&X1,?_MM?_家計簿実表
SET={}?&.SET&~+_年月日?
SET={}?&.SET&~+_内容?
DATA={K}X1.?&.DATA&~+_年月日?
DATA={K}X1.?&.DATA&~+_内容?
DATA={}X1.?&.DATA&~+_食費?
DATA={}X1.?&.DATA&~+_金額?
COPY=@ZZZZZZ_SQL
**********************************************************************************
◎(プログラム登録画面)◎(実行画面)

先頭が*のコメント行を除くと、たった、8行しか有りませんし、テーブル名と列名がほとんどで、以外はおまじないの様な文字があるだけで、難しそうなプログラムらしきものはありません。
尚、許可と部分はメニューに設定されており、プログラム上は"_MM"及び"~+"で設定されます。
これだけで更新処理が問題なく出来ます。尚、同じプログラムで検索処理用として動かす事もできます。
基本のプログラムは全てI言語側が行う事で、これ以上は無理と考えられる極限まで、文字数が削減されている事が、お分かりと思います。
それでは、月単位のエンゲル係数を計算するプログラムを作ってみます。
こちらは、単なる更新や検索プログラムではないので、手動でプログラムする必要があります。
月単位のエンゲル係数はSQLのSUM関数とGROUP BYのグルーピングの機能を使えば出来ます。
SQLをすべて作れば、当然可能ですが、「早く」が実現できないので、ある程度の事まではI言語で対応出来るようにしています。
エンゲル係数を計算するSUM関数は、エンゲル係数を表示するDATA=の下にSELECT=で書く事で対応できます。
グルーピングの指定はDATA=の次に{G}とする事で対応できます。
プログラムは下記のようになります。こちらも、たったの8行で出来ます。
****************( プログラム )*******************************
PROGRAM=,&X1,?_MM?_家計簿実表
DATA={G}年月{6}
SELECT=?_SUBSTR?(X1.~+_年月日?_FROM?1?_FOR?6)
DATA={}エンゲル係数{3,,+,Z}
SELECT=CASE SUM(X1.~+_金額) WHEN 0 THEN 0 ELSE
SELECT=100*SUM(CASE X1.~+_食費 WHEN 1 THEN X1.~+_金額 ELSE
SELECT=0 END)/SUM(X1.~+_金額) END
COPY=@ZZZZZZ_SQL
****************************************************************
◎(プログラム登録画面)◎(実行画面)

年月を単位とするのでSELECT=で陽に先頭から6文字(年4文字+月2文字)とする事を設定しています。
?_SUBSTR?は文字の一部を取り出す関数ですが、リレーショナルデータベース毎に関数名が異なるので変数で与えています,?_FROM?と?_FOR?は FirebirdのSUBSTRING関数がカンマ区切りでは無くFROMとFORを使っているので、VER8.3よりこのような方法に改めました。 尚、FirebirdのSUBSTRLENはカンマ区切りですが、SUBSTRING使用を推奨しているので、あえて使わない事としました)
{3,,+,Z}は数値(+)で有効桁数3桁(3)、小数点以下無し(2番目空)の表示指定で,Zは0の場合0と表示します(Zが無いと0は無表示)。
エンゲル係数を求めているのはSQLの仕様ですが、少し複雑ですので説明します。
「CASE SUM(X1.~+_金額) WHEN 0 THEN 0」は分母が0の時SQLがエラーとなるのでこれを回避するため0の時は0とし0以外のみ計算します。
「CASE X1.~+_食費 WHEN 1 THEN X1.~+_金額 ELSE 0 END)」は食費のみ金額を設定し食費以外は0を設定することで食費のみの金額を算出します。
「100*SUM(食費分の金額)/SUM(その月の金額)」でエンゲル係数が%で求められます。
このプログラムはCOPY=@ZZZZZZ_SQLで検索のSQLが下記のように組み立てられます。
SELECT ?_SUBSTR?(X1.ZZZYAA_年月日?_FROM?1?_FOR?6)
,CASE SUM(X1.~+_金額) WHEN 0 THEN 0 ELSE
100*SUM(CASE X1.~+_食費 WHEN 1 THEN X1.~+_金額 ELSE 0 END)/SUM(X1.~+_金額) END
FROM ?_MM?_家計簿実表 X1
WHERE X1.Z_CANCEL=' ' GROUP BY (?_SUBSTR?(X1.ZZZYAA_年月日?_FROM?1?_FOR?6)) ORDER BY 1,2

今回はほんの1例ですが、少し複雑な作業が必要でも、I言語側がほとんど対応してくれるので、
「誰でも」「早く」が実現可能な事がお分かりと思います。
ここまでは、他の開発ソフトでも比較的簡単に出来ますが、I言語はここからシステムが更に複雑になっても、「誰でも」「早く」が可能です。
家計簿でも、実際に使う場合は更に多くの機能を組み込んで、毎月行う作業を極力少なくする事が一番大事です。
たとえば、新聞代などは多分毎月同じです、中には火災保険のように年1度の物もあるので、この辺も含めて、定期的に自動で処理させるための、時間起動機能(一般的にはバッチ処理と呼びます)もI言語には組み込まれています。
開発支援も運用支援もすべてI言語で作られています、この点も他の開発ソフトとは異なります、つまり、結構複雑な開発支援も運用支援も開発出来るソフトですので、その実力は非常に高いと言えます。
尚、「◎I言語VER8のインストール手順」にインストール方法。 「◎I言語VER8システム開発の入門編」に実際のプログラムの作り方が詳しく載っていますので、是非チャレンジしてみて下さい。
1.5 I言語とは、その5
I言語は。元々は自分自身のシステム開発の改善の為に作った物を発展させた物です。 一般には基幹システムと呼ばれるシステムまで構築出来る機能を持っています。(スケジュールに合わせて、バッチ処理を起動する機能も組み込まれています) 1世代前のIPROGRAMですが、既に1万本以上のプログラムが作られ本稼働していますので、実用性は保証済みです。
1.6 I言語とは、その6
ICT化が進んだ企業では、1人が1台のパソコンを使用していると思いますが、やはり、計算機としての利用はほんの少しと思われます。 理由は、プログラム開発は難しく、更に、時間がかかる為、個人のニーズまで情報処理部門がシステム化する余力が無いためです。 結局、個々の担当者は情報処理を自分の頭を使って行っています、その結果、ノウハウは個人の頭の中で留まってしまい、人が変われば、 また、1からノウハウを伝承する必要があります。 一方、I言語を使えば、自らの力で、自分の頭で行っている情報処理を、プログラムとしてコンピューターに蓄積することが容易に出来るようになります。 これを、社員の全員が始めれば、社員のあらゆるノウハウが蓄積され、人が変わっても1からノウハウを教える必要が無くなります。 担当者は、システム化により、日常業務に追われる事もなく、プログラムを改良する事で、更に、有効なノウハウがコンピューターに構築されます。 企業にとって、非常に大きな発展が期待出来ます。
コンピュータの専門家へのメッセージ
2.I言語バージョン5以上の使用条件(2011年9月15日改定)
(1)使用中に損害が発生しても一切保証はしません。
(2)危険を伴うシステムには適用しないで下さい。
(3)I言語は全て無料で使用出来ます。
(3.1)インストール用ファイルはコンピュータ名が”I1"か"I2で"セットアップ名が”I"の場合のみそのままでインストール出来ます。
(3.2)別のコンピュータ名(15文字以内)とセットアップ名(20文字以内)でインストールしたい場合は事前にインストール用ファイルを作って下さい。 尚、セットアップ名は使用者のパスワード暗号化文字として使用されます。
(4)I言語で商売をする、開発ソフトを他社(他人)に提供する場合は開発権が必要です。
★親会社、子会社を含む自社または自分のためのシステム開発には開発権は不要です。
(4.1)開発権はメニュ-名のAAAAからVZZZまでで、まだ未登録の物を取得できます。
(4.2)ソフトの委託開発やパッケージソフトの開発、販売をする等、給与以外のお金が動く行為は開発権が必要です。
(4.3)開発したシステムを無償で他人(他社)に提供する場合も開発権が必要です。
(4.4)開発権は希望のメニュ-名を明記したメールを直接原沢に下さい、 メニュー名が未登録の場合で特に問題が無い場合は許可を、登録済または問題が有る場合は不許可を返信します。
(5)重要情報を扱うシステムには適用しないで下さい。
(5.1)I言語はソースプログラムも添付されていますが、.NET FRAMEWORKで作られているので、 リバースエンジニアリングをすれば、ソースプログラムを復元できます。 従って、ソースプログラムが無くても、パスワードを解読しようとすれば技術的には解読可能ですので、 重要情報を扱うシステムには適用しないで下さい。
(5.2)重要情報を扱うシステムで使いたい場合は、ソースプログラムのパスワードロジックを変更し、 再コンパイルしてから、リバースエンジニアリングが出来ない処理を施して、インストール環境を再構築して使用下さい。
(6)リバースエンジニアリング等でパスワードを解読する行為は禁止とします。
(7)インストール環境を変更した物は下記を除いて、他社(他人)に配布は出来ません。(自社又は自分のみでの使用は可能です)
(7.1)I言語に問題が有った場合の、問題解決の為の変更は可能です。(仕様の追加、修正を伴う場合は不可です)
(7.2)上記(5.2)を実施する場合の変更は可能です。
★使用条件を承諾する場合のみ使用できます。
3.動作環境(2012年5月25日修正)
(1)OS------.NET Framework2.0(3.0,3.5SP1でも可)をインストールしている事。
(WindowsXP,Vista,2003,2008,7)(Vista,2008,7はインストール不要です)(MONO版をOpenSUSE11.4で開発中)
(Windows8はVER8.7,VER7.38以降可能,時間予約のATコマンドを廃止しSCHTASKSで対応)
◎注意:Microsoftの延長サポート終了と同時に、I言語もサポートを中止します。
(2)RDBMS---以下のデータベースソフトのどれか1個をインストールしている事。
◎注意:MicrosoftSQLServer以外はバックアップ等全ての機能を対応出来てはいないので、不足分は各自で対応下さい。
◎注意:お使いのOS(エデション)では動作しないデータベースソフトがありますので、必ず[システム要件]を確認して下さい。
(2-1)MicrosoftSQLServer2012,2008(R2含む),2005。(ExpressEdition含む)
(2-2)PostgeSQL9.2.x,9.1.x,9.0.x。(8.4.x,8.3.xも可)
(2-3)Oracle11G(Release2含む),10G。(ExpressEdition含む)
(2-4)IBM DB2 10.x(10.1),9.x(9.7,9.5)(Express-C含む)
(2-5)VER8のみ:MySQL 5.5.x
(2-6)VER8.3以降:Firebird 2.5.x
(2-7)VER8.3以降:HiRDB 8 (9は64BitOS用の為未確認、尚、色々のエラーが発生する頻度が高いので、本番運用する場合は動作確認を十分行って下さい)
4.その他
I言語の紹介
I言語が出来るまでの経緯
5.I言語のダウンロードページ
★VER7.29より、I1,I2以外のコンピュータ名でもインストール出来るように、 インストールファイル作成機能を付けました。
★VER7.29より、ソースプログラムをI7_SRCディレクトリー内に添付しました。
(最新バージョン:VER8.8,VER7.39,2012年05月23日提供)
I言語のダウンロード(http://ilanguage.iinaa.net/download.htm)
6.I言語の開発権、質問、問題報告のページ
自宅サーバーが壊れたので、開発権、質問、問題報告は直接原沢までメール下さい。
7. VER8提供について(2011年5月17日改定)
MySQLの開発実験に成功しましたので、VER8を提供しました。VER8提供に関しては下記の方針とします。
MySQLのユーザー名は16文字以下の制約が有ります。一方、VER7の仕様ではユーザー名は、システム名を除いても既に16文字を使用している為、VER7の仕様のままでは対応出来ません。よって、MySQL対応の為にVER8を提供する必要があります。
VER8は「VER7の命名規約の変更+MySQL」の意味とし、VER7はVER8へのバージョンアップは無用とします。
今後、問題の修正や新機能については、VER7とVER8のどちらも対応します。
VER7とVER8は命名規約が異なる為、プログラムの互換は有りませんので、注意して下さい。
VER8はVER7の名前の"REAL","TEST","MAST",WORK","DBO","INP","OUT","LNK"を基本的には先頭の1文字で表現します。
テーブル名や列名は、許可(英字4文字)の次に部分(英数字2文字)を設定する事とし、ツールとしても、この部分の機能を付加しています。
ツール関連の名前は先頭が"ZZZZ"(4文字)から"ZZZZZZ"(6文字)となります。(文字数が多くなった名前は、一部変更しています)
★注意:VER8とVER7は命名規約が異なる為互換がありません、VER7には絶対に再インストールしないで下さい。
(2011年7月01日変更)FirebirdとHiRDBを組み込みました。
(2011年7月29日変更)Symfowareの組み込みを中止。
([JYP6015E UPDATE文の設定句に副問合せが指定されました.]エラー発生で、対応方法が無い為中止)
◎VER8バージョンアップ情報(開発中含む)
◎I言語VER8のインストール手順
◎I言語VER8システム開発の入門編 2/9 VER8(データ辞書の作成) 3/9 VER8(テーブルの作成) 4/9 VER8(プログラムの作成) 5/9 VER8(問題点と改善点の対応) 6/9 VER8(ファイルからの登録) 7/9 VER8(ひらがな項目の追加) 8/9 VER8(承認機能の追加) 9/9 VER8(インターネットでの公開)}
◎I言語技術情報1(HELLO WORLDの表示)
◎I言語技術情報2(データベース関連)
◎I言語技術情報3(変数の変換)
◎I言語技術情報4(行制御命令)
◎I言語技術情報5(SQL=で使用する変数の説明VER7.23以降用)
◎I言語技術情報6(特別なシステム変数)
◎I言語技術情報7(配列の扱い方)
◎I言語技術情報8(プログラム更新画面の操作方法)
◎I言語技術情報9(入力アシスト機能の説明)
*****(2011年4月23日以前の内容、VER8提供中止ついて)*************************************************
(前回報告).NET Frameworkはリバースエンジニアリングをする事でソースプログラムが復元出来ます。よって、パスワードが解読される危険がありますので、パスワードの作成方法を変更し、ソースプログラム自体を難読化して、リバースエンジニアリングを実施しても解読出来ないように改めた物をVER8として提供します。
(検討結果)リバースエンジニアリングが可能であれば、ソースを解読出来なくても、パスワードを見つけ出す事は技術的に可能なので、物理的にリバースエンジニアリングが出来ないようにしないと解決しません。 リバースエンジニアリングが出来ないようにする事は、個人レベルでは開発出来ないので、VER8の提供は中止しました。
(今後の対応)
(1)提供するI言語はリバースエンジニアリングでパスワードが解析可能であることを前提で使ってください。
(2)I言語を使する場合は無償とします。I1,I2以外のサーバーへのインストールを可能とするため、 インストールファイル作成プログラムも提供しました。
(3)企業の基幹システムで使用したい場合はソースプログラムを提供しましたので、パスワードのロジックを変更し、再コンパイル後、リバースエンジニアリングが物理的に出来ない処置をしてから、使用して下さい。
(4)使用権は無しとし、開発権のみ条件を変更しました。
8. VER7について
.NET Frameworkは現在2.0(3.0,3.5含む)及び4.0に対応済みですが、サポート期間を考慮し、VER7に対しては順次新.NET Frameworkにも対応して行きます。
VER6に対し非互換が発生したのでVER7を提供しました、新規インストールの場合はこちらを使って下さい。
★注意:VER7はVER8にバージョンを上げる必要は有りません、今後も提供を続けます。
注意:サーバーはVER5やVER6とは共存出来ません。
(クライアントはPostgreSQLのNpgsqlのバージョンが異なる場合を除き共存可能です)
注意:VER5やVER6に再インストールすると非互換のため問題が出るので絶対にしないで下さい。
◎VER7バージョンアップ情報(開発中含む)
◎I言語VER7のインストール手順
◎I言語VER7システム開発の入門編 2/9 VER7(データ辞書の作成) 3/9 VER7(テーブルの作成) 4/9 VER7(プログラムの作成) 5/9 VER7(問題点と改善点の対応) 6/9 VER7(ファイルからの登録) 7/9 VER7(ひらがな項目の追加) 8/9 VER7(承認機能の追加) 9/9 VER7(インターネットでの公開)}
◎I言語技術情報1(HELLO WORLDの表示)
◎I言語技術情報2(データベース関連)
◎I言語技術情報3(変数の変換)
◎I言語技術情報4(行制御命令)
◎I言語技術情報5(SQL=で使用する変数の説明VER7.23以降用)
◎I言語技術情報6(特別なシステム変数)
Linux版開発状況について。(OpenSUSE11.4+MONO2.10.2+PostgreSQL9.0.4で開発中、2011年7月5日現在,PostgreSQL、SQLServer、Firebirdのクライアントとしては一応動きますが、動作保証はまだ出来ません)
(1)Oracle,DB2,MySQL及びHiRDBの接続でエラーが出ます。(インストール漏れの可能性も考えられますが、対応策は不明です)
◎Oracle:Open()でlibclntsh.so
◎DB2:ConnectionStringでdb2_36
◎MySQL、HiRDB:A type load exception has occurred.
(2)画面に文字を表示する時、(例"&."の後に"&"が有ると.以降を表示しない,アンダーバーを表示しない、TextFormatFlags.NoPrefixが有効にならない模様)により表示されない場合が有ります。
(WINDOWS版のMONOでは正常に動きますので、LINUX版MONOの対応を待っている状態です、現在別のメソッドで対応中)
9.VER6について
注意:.NET Framework2.0のサポート期間が2016年4月12日までのようですので、VER6もこの日までをサポート期間とします。それまでにVER7への移行をお願いします。
VER5に対し非互換が発生したのでVER6を提供しました。
注意:サーバーはVER5やVER7とは共存出来ません。(クライアントは共存可能です)
注意:VER5やVER7に再インストールすると非互換のため問題が出るので絶対にしないで下さい。
VER6バージョンアップ情報(開発中含む)
I言語VER6のインストール手順
I言語VER6システム開発の入門編(6/9以降はVER5で説明していますが、VER6でも同じように動きます) {2/9VER6(データ辞書の作成) 3/9VER6(テーブルの作成) 4/9VER6(プログラムの作成) 5/9VER6(問題点と改善点の対応) 6/9(ファイルからの登録) 7/9(ひらがな項目の追加) 8/9(承認機能の追加) 9/9(インターネットでの公開)}
10.VER5について
注意:.NET Framework2.0のサポート期間が2016年4月12日までのようですので、VER5もこの日までをサポート期間とします。それまでにVER7への移行をお願いします。
注意:サーバーはVER6やVER7とは共存出来ません。(クライアントは共存可能です)
注意:VER6やVER7に再インストールすると非互換のため問題が出るので絶対にしないで下さい。
VER5バージョンアップ情報(開発中含む)
I言語VER5インストール手順
I言語VER5システム開発の入門編 {2/9VER5(データ辞書の作成) 3/9VER5(テーブルの作成) 4/9VER5(プログラムの作成) 5/9VER5(問題点と改善点の対応) 6/9(ファイルからの登録) 7/9(ひらがな項目の追加) 8/9(承認機能の追加) 9/9(インターネットでの公開)}
11.提供者
メールアドレス:harasawa@mis.janis.or.jp(このメールアドレスへの特定電子メールの送信を拒否いたします)
氏名:原沢信道(ひらがな:はらさわ のぶみち)
住所:395-0048長野県飯田市滝の沢5817-125
電話番号:0265-22-0295
( 写真は我が家の庭から見た風景です)

All Rights Reserved, Copyright (C) 2009-2011 Nobumichi Harasawa.