しらたまのコミッタ日記

2011-04-20

[]OSC神戸2011 01:58

参加してきました。

私は午後からの参加でしたが、はあまりなでしこユーザーの方はいませんでした。

しかし、紹介&説明の中で興味を持っていただいた方は多かったので、まだまだこういったイベントでアピールするのは有効だなと感じました。

特に、オフィス連携の機能の食いつきが良かったです。また、文法機能に興味を示されることも多くありました。

#来場者の中に高専の先生がおられて、少し驚きました;;

 

説明の中でなでしこ2をC#作成していることを言うのですが、まだβ公開などが出来るほどモノがないので、開発協力していきたいところです。

ただ、のためには仕様や構成について、もっと細かく定めておく必要あると思います。

いうわけで、以下、なでしこ2のしようについて話したことと、個人的所感など。

オブジェクト指向

参加者の中で話した限りでは、「あった方がいい」のではないかという見方でした。

私も、「あった方がいい」の立場です。

ただし、出来る限りの仕組みは、普通に使っている分には(特に初心者には)、見えないようにしてあるのが望ましいと考えます。

なぜなら、開発MLでも指摘されているように、初心者にとっては取っつきにくいものと感じてしまう可能性があるためです。

しかし、完全にオブジェクト指向的なものを排除してしまうと、ある程度プログラムを書けるようになったとき、

処理をまとめようとするときなど手続き的な仕組みだけでは物足りなくなって、なでしこから離れていってしまうことが懸念されます。

*加筆するかも*

名前

のなでしこでは基本的に名前はファイル単位でしか存在しません。

私は、これに加えて少なくともプラグインごと、出来れば各プラグインの命令ごとに必要だと思います。

利点としては、例えばデータベースやオフィスなど、対象と接頭語が違うだけで意味は変わらない命令群などは、

接頭語を削除して定義し、名前を指定するようにすれば、名前を変えるだけで、まとめて動作を変えられて便利ということがあります

また、接頭語が削除されることで命令が普通の動詞っぽくなって日本語らしさ向上すると思います。

グループでも代用できますが……

コードの形式

コード生成の難易度は上がりますが、MSILで出力するのがよいかと思います。

独自コードの方がコード生成自体の手は下がりますが、実行系は.NET/monoに投げられます。

これらに投げれば、少なくともWin/Mac/Linuxでは一通り動きます。レンタルサーバでもVPS(月1000程度)ならmonoでいけます。

デバッガ

現在デバッガはvnako組み込みとなっていますが、ここは世の開発環境にならってエディタ側に組み込むべきだと思います。

利点としては、以前に少し話題になったexeに固めたけどデバッグウインドウでソースが見えるということが無くなります。

また、実行ファイル組み込みではそれぞれの実行ファイル(cnakoとか)でデバッガを作らなければなりませんが、エディタ側だと1作ればOKです。

ブレークポイントの処理の対応も取りやすいですし、エディタ組み込みにしない手はないと思います。

エラー処理

現在のエラー監視では、エラーメッセージから、どの命令でエラーが起きたのかわかりにくい・finallyに相当する物がないいう不便な点が存在します。

これを解消するために、エラーオブジェクトかエラー番号の導入と、finally節を導入した方がいいと思います。

例:

エラー監視

  「」でエラー発生

エラーオブジェクト1のエラーならば

  「エラー2」と表示

エラーオブジェクト2のエラーならば

  「エラー2」と表示

最後に

  「監視から抜けます」と表示

文字列と(二次元)配列の関係(変換)

A=「1,2,3,4

5,6,7,8」

Aの変数型確認して表示#=>文字列

A[0]を表示/*=>1

2

3

4

*/

Aの変数型確認して表示#=>配列

文字列からの各種自動変換は便利なのですが、たまにとまどう挙動を見せます。

文字列<=>配列の例では、文字列Aの一行目を取得しようとA[0]とすると、2次元配列に変換され、Aは以降配列として扱われてしまいます。

ここでさらに「Aを表示」などとすると、最初にAへ代入したもの次第で、微妙に文字列に戻したときの表示が異なってきます。

これを抑制するため、この自動変換をオプションで切り替えられるようにした方がよいと思います。

(デフォルトをどちらにするかは更に議論する必要あると思います。)

インデクサ

グリッドへのアイテム設定がデータ全部をセッターで設定するようになっているため、毎全部のデータを更新していて効率が悪い上、グリッドの選択位置がリセットされてしまいます。

なのでインデクサのような仕組みを用意し、ゲッターセッターの先が配列のようなものでも、個別に値を取得設定できるようになったら便利かなと思います。

例:

A実体とは配列

●A設定(V,I)

 A[I]=V

●取得(I)

 _=A[I]

Aとは配列 ←A設定 →A取得

A[1]は100

文字列の中のインデント無視

インデントされた行で複数行の文字列を書く場合、2行目以降で先頭のインデントを削除しないといけないので、少々見づらいです。

  「あああ

いいい

ううう」と表示

これを、一行目と同じインデントの分の白は2行目以降でも無視するようにすると、多少なりとも見やすくなるのではないでしょうか。

エディタの自動インデント挿入とも相性が良いはずです。

  「あああ

  いいい

  ううう」と表示

 

余談ですが、ヒアドキュメントって私の手元のメモでは「元々改行含めた文字列がいけるからいらない?」って書いてありますけど、実装されていますね。

まあ、かぎ括弧含む文字列には有効ですが。

ハッシュのアクセス

ハッシュへのアクセスである@は左辺に変数しか取ることが出来ません。

これを拡張して、左辺に式が来てもハッシュへのアクセスと見なすようにした方がいいのではないかと思います。

そうすると、「A@B@C」を「(A@B)@C」と解釈可能になるので、ハッシュハッシュが実現できます。

さらに配列へのアクセス[]も左辺に指揮を執れるようにすると、「(A@B)[0]」のように配列へのハッシュも実現できます。

ゲッターセッター変数での「それ」の変更

ゲッターセッター変数関数と同じように動作していますが、使い方は普通の変数と同じなので、

普通の変数のつもりで使うと、ゲッターセッター変数の参照のあとで「それ」が書き換わってしまうので、「それ」が変わらないと思いこんでのうっかりミスに繋がる可能性があります

これをなくすために、なんとか普通の変数と同じように「それ」が書き換わらないように出来ないものかと思います。

akaginoyamaakaginoyama2011/04/20 09:10OSC神戸2011お疲れ様です。
ここに書かれてあることには激しく同意です!!

改行をそのまま配列にするモードと
CSVなどの利用する際にシンプルに処理できるように
明示的に配列の区切り文字を選べるモードなどの切り替えなどもあれば良いと思います。

2010-04-02

[]HMAC-SHA1 03:48

OAuthやxAuthなどで使うHMAC-SHA1について、一部で要望があるようなので書いてみた。

一応NYSL書いてますが、ようは自由に使ってもらって結構使って何があっても知らんよ、と言うことなのであんまり気にしないで下さい。

 

12:18追記:鍵が規定より長かったときの処理がおかしかったので修正。

http://www.ipa.go.jp/security/rfc/RFC2104JA.htmlを参考に作成

/*

NYSL Version 0.9982

A. 本ソフトウェアは Everyone'sWare です。このソフトを手にした一人一人が、

ご自分の作ったものを扱うのと同じように、自由に利用することが出来ます。

A-1. フリーウェアです。作者からは使用料等を要求しません。

A-2. 有料無料や媒体の如何を問わず、自由に転載・再配布できます。

A-3. いかなる種類の 改変・他プログラムでの利用 を行っても構いません。

A-4. 変更したものや部分的に使用したものは、あなたのものになります。

公開する場合は、あなたの名前の下で行って下さい。

B. このソフトを利用することによって生じた損害等について、作者は

責任を負わないものとします。各自の責任においてご利用下さい。

C. 著作者人格権は しらたま/whiteball に帰属します。著作権は放棄します。

D. 以上の3項は、ソース・実行バイナリの双方に適用されます。

しらたま

http://whiteball.m7.coreserver.jp/

white_ball_11/hotmail.com

#*/

!B=64

!L=20

●HMACSHA1取得(秘密鍵で内容の)

 #秘密鍵の長さの調整

 秘密鍵のバイト数

 もしそれ>Bならば

  秘密鍵からSHA1取得

  2で行揃え

  反復

   INT(「$」対象)を秘密鍵の回数に「byte」でバイナリ設定ハッシュ関数出力のバイナリ変換

  秘密鍵は秘密鍵のL バイト左部分

  秘密鍵のバイト数

 もしそれ<Bならば

  「{\0}」を(B-それ)だけリフレイン

  秘密鍵は秘密鍵&それ

 

 #鍵から作る2つの文字列の準備

 鍵Iとは文字列。鍵IにBを確保

 鍵Oとは文字列。鍵OにBを確保

 文字とは整数

 B/4

  秘密鍵の(回数-1)*4+1を「DWORD」でバイナリ取得

  文字はそれ

  XOR(文字,$36363636)を鍵Iの(回数-1)*4+1に「DWORD」でバイナリ設定

  XOR(文字,$5C5C5C5C)を鍵Oの(回数-1)*4+1に「DWORD」でバイナリ設定

 

 #ハッシュ関数の適用

 経過とは文字列

 経過にLを確保

 

 (鍵I内容)からSHA1取得

 2で行揃え

 反復

  INT(「$」対象)を経過の回数に「byte」でバイナリ設定ハッシュ関数出力のバイナリ変換

 

 (鍵O経過)からSHA1取得

 2で行揃え

 反復

  INT(「$」対象)を経過の回数に「byte」でバイナリ設定ハッシュ関数出力のバイナリ変換

 

 経過を戻す

出力確認

鍵とは文字列

#適当に鍵生成

鍵にBを確保

B

 回数-1を鍵の回数に「byte」でバイナリ設定

鍵で「こんにちは」のHMACSHA1取得

表示

バイナリダンプ

表示

EviEvi2012/03/26 14:52That saves me. Thanks for being so sesnbile!

2010-02-06

[]なでしこ基礎文法最速マスター 18:27

完全に出遅れた!

結構書くの大変ですね、これ。ツッコミ募集。

参考:

Perl基礎文法最速マスター - Perl入門~サンプルコードによるPerl入門~

http://d.hatena.ne.jp/perlcodesample/20091226/1264257759

Route 477 - Ruby基礎文法最速マスター

http://route477.net/d/?date=20100125

前口上

なでしこの文法一覧です。他の言語をある程度知っている人はこれを読めばなでしこの基礎をマスターしてなでしこを書くことができるようになっています。簡易リファレンスとしても利用できます。多分。

※注意:なでしこはWindows上でのみ動作します。

0.実行するために

インストール

公式サイトダウンロードページからなでしこのインストーラをダウンロードして実行、指示に従ってインストールします。

インストールが完了すれば、デスクトップにショートカットが作成されます。

専用エディタ

ショートカットを起動すると、なでしこの専用エディタ起動します。メニュー>設定>なでしこ実行設定から、標準GUI・簡易GUICUIの3つの実行方式が選べますが、初期状態である標準GUIで多くの場合不都合はありません。Ctrl+スペースで入力補完を利用することができます(ただし過剰な期待はしないこと)。

1.基礎

文法チェック

「!変数宣言必要」と書くことで、宣言なしの変数使用をエラーにすることができます。うっかりミス防止のためにもソースの先頭に書くことをお勧めします。

甲は0

変数宣言必要

乙は1 #文法エラー

「!変数初期化は必要」と書くと、初期化されていない変数の使用をエラーにすることができます。

甲は0

変数初期化は必要

乙は1

乙と丙を足す #文法エラー

print

表示」を使うことで、ウインドウに文字を出力できます。「言う」や「いう」を使うとダイアログに表示できます。

「こんにちは、世界」と表示

「こんにちは、世界」と言う

コメント

次のコメントが使えます。上の二つは半角でもコメントの開始として扱われます。

# 一行コメント(#でもOK)

’ 一行コメント('でもOK)

※ 一行コメント

// 一行コメント

/* 複数行コメント */

1行に1文を記述できます。1行に複数の文を書きたい場合は「。」か「;」を文末に書いてください。1文を複数行に分けたい場合は、行末に演算子が来るように調整するか、「、」を書いて下さい。

#1行に複数文

~を×する。~を×する

#1文を複数行

~を、

×する

ネスト

関数や制御構文のブロックはインデントで判別します。半角スペースを1として、全角スペースを2、タブを4として扱います。関数や制御文の項を例として参照してください。

識別子

識別子に助詞を含めることは出来ません。しかし、一定の条件を満たすときは利用できます。

また識別子の全角半角は無視されます。大文字小文字は区別されます。漢字、片仮名、英数字に続く末尾の平仮名は無視されます。

変数の宣言

変数名とは型名」の形式で書きます。宣言時に型の指定がありますが、宣言した型以外のデータも変数に格納可能です(ただしグループは除く)。宣言時の型によって、初期化される値が異なります。任意の初期値を指定したいときは「=ほげほげ」と書いてください。

甲とは整数    #0で初期化

乙とは文字列   #文字列で初期化

丙とはグループ

丁とは整数 = 10 #10で初期化

変数への代入

助詞「は」か「=」(半角でも可)を使います。

甲は1

甲=2

命令(関数)

注:なでしこにおいて用語としての「命令」と「関数」は同じものです。

命令の呼び出す形式には、助詞を使うものと、他の言語でみられるような方法があります。前者の場合、助詞によって引数の渡され方が決まりますので、引数の順は自由です。命令の返り値はシステム変数それ」に格納されます。特定の命令は引数を省略したときに「それ」を自動的に補完します。

2から1を引く #この2つは同じ意味

1を2から引く #

表示     #引数を省略しても1と表示される

LOGN(10,100) #他言語でもよくある呼び出し方

スクリプトの実行

メニュー>実行>実行、F5、ツールバーの三角形のボタン、いずれかで実行できます。

2.数値

整数実数あります。二者は自動で変換されます。

表現

実数には指数表記も使えます。全角半角を問いません。

甲は1

甲は$FF  #16進数

甲は1.234

甲は10.2e+5#指数表記

四則演算

演算子は半角でも可。

甲は1+1

甲は1-1

甲は1*1

甲は1×1

甲は1÷1

甲は1/1

甲は1%1

命令を使って書くこともできます。

甲は1と1を足したもの

甲は1から1を引いたもの

甲は1と1を掛けたもの

甲は1を1で割ったもの

甲は1と1の余り

インクリメントとデクリメント

「++」や「--」はありません。「直接足す」や「直接引く」で代用できます。

甲は1

甲に1を直接足す  #甲=>2

甲から1を直接引く #甲=>1

3.文字列

文字列の表現

かぎ括弧、二重かぎ括弧、ダブルクオート、バッククオートで囲みます。かぎ括弧、ダブルクオートの中では中括弧(波括弧)を使って変数展開を行うことが出来ます。中括弧の中では\nや\tなどの特殊文字を使うことも出来ます。なお、バッククオート以外全角半角を問いません。また、なでしこの文字列は基本的にShiftJISです。

甲は`あいう`

乙は『かきく』

丙は「さ{\n}し{¥t}す」

丁は”{甲} えお” #=>"あいう えお"

文字列操作

# 結合

結合は「あああ」「いいい」

# 分割

分割1は「あああ、いいい、ううう」を「、」で区切る

分割2は「あああ、いいい。ううう」を「、|。」で正規表現区切る

分割3は「あああ、いいい。ううう」を「[、。]」でワイルドカード区切る

# 長さ

長さ1は「あいうえお」の文字数

長さ2は「あいうえお」のバイト数

# 切り出し

部分文字列は「あいうえお」の2から2文字抜き出す #=>いう

部分文字列は「あいうえお」の3から4バイト抜き出す#=>いう

# 検索

場所1は「あいうえお」で「うえ」が何文字目 #=>3

場所2は「あいうえお」で「うえ」が何バイト目#=>5

場所3は「あいうえお」で「くけ」が何文字目 #=>0

4.配列

配列文字列を分割することにより作成できます。

配列1とは配列

配列1は「1,2」を「,」で区切る

要素の参照と代入

配列1とは配列

代入

配列1[0]は1

配列1¥1は2

#参照

配列1[0]を表示

配列1¥1を表示

配列1を表示 #改行区切りで表示

要素の個数

配列1の要素数  #ハッシュにも使える

配列1の配列要素数

配列の操作

配列1とは配列

配列1は「1,2,3」を「,」で区切る

# 先頭を取り出す

配列1の0を配列切り取る #=>1

# 先頭に追加

配列1の0に5を配列挿入 #=>配列1は 5,2,3

# 末尾を取り出す

配列1の配列1の要素数-1を配列切り取る #=>3

いう

# 末尾に追加

配列1に9を配列追加 #=>配列1は 5,2,9

5.ハッシュ

ハッシュは「ハッシュ変換」により文字列から作成できます。

辞書とはハッシュ

辞書は「あ=1

い=2」をハッシュ変換

要素の参照と代入

#参照

辞書@「あ」を表示

辞書@「い」を表示

代入

辞書@「あ」は1

辞書@「い」は2

ハッシュの操作

# キーの取得

辞書のハッシュキー列挙

# 値の取得

辞書のハッシュ内容列挙

# ハッシュのキーの削除

辞書の「あ」をハッシュキー削除

6.グループ

クラスのようなものです。ただし、隠蔽は出来ません。「とは」を使ってグループを宣言するとシステム変数」と「これ」にエイリアスが作成されます。

■果物

 ・値段

 ・産地

 ・買う(個数だけ)~

  「{個数*値段}になります」と表示

りんごとは果物

の値段は100

りんごを10だけ買う#=>1000になります

要素の参照と代入

#参照

りんごの値段を表示

りんご.産地を表示

りんご@「値段」を表示 #動的な(文法チェックにかからない)参照

りんご→産地を表示   #動的な(文法チェックにかからない)参照

代入

りんごの値段は100

りんごの産地は「青森」

7.制御文

条件は0と「」(文字列)がで、それ以外はです。

if文

もし条件ならば

 ~~

違えばもし条件ならば

 ~~

違えば

 ~~

while文

システム変数回数」をループカウンタとして使えます。

条件の

 ~~

for文

システム変数回数」をループカウンタとして使えます。開始値よりも終了値が大きければカウンタは増え、逆ならばカウンタは減ります。開始値=終了値でも最低1は実行されます。

ループカウンタ変数で開始値から終了値まで繰り返す

 ~~

ループカウンタ変数を使う必要がなければ「」も使うことが出来ます。システム変数回数」はループカウンタとして使えます。

X

 ~~

foreach文

文字列の各行か配列の各要素を順に処理できます。各要素はシステム変数対象」と「それ」にコピーされます。システム変数回数」をループカウンタとして使えます。

「あ

う」を反復

 対象表示 #「それ」と同じものが表示される

 それ表示 #「対象」と同じものが表示される

比較演算子

整数実数はすべての比較演算子を使えます。文字列は等号と不等号のみです。文字列の大小関係はシステム命令を使います。配列ハッシュ文字列に変換された上で比較されます。グループは比較できません。演算子の全角半角を問いません。「==」の代わりに、制御文の条件指定の中などの代入の可能性がない場所ならば、「=」を使うことも出来ます。

変数1 == 変数2 # 変数1は変数2と等しい

変数1 != 変数2 # 変数1は変数2と等しくない

変数1 <> 変数2 # 変数1は変数2と等しくない

変数1 ≠ 変数2 # 変数1は変数2と等しくない

変数1 < 変数2 # 変数1は変数2より小さい

変数1 > 変数2 # 変数1は変数2より大きい

変数1 <= 変数2 # 変数1は変数2以下

変数1 ≦ 変数2 # 変数1は変数2以下

変数1 >= 変数2 # 変数1は変数2以上

変数1 ≧ 変数2 # 変数1は変数2以上

8.サブルーチン

ユーザー定義関数が使えます。返り値はシステム変数それ」に代入するか、関数から離脱する命令「戻る」の引数として渡します。

●テスト1

 「あ」を表示

テスト1

●テスト2({=1}AとBを|Bで)

 A==Bを戻す

1と2をテスト2

1と2でテスト2#上に同じ

2でテスト2  #初期値を利用

引数は設定できませんが、「とは」で宣言した変数に処理を割り当てることも可能です。主にGUIイベントの設定に使います。

甲とは変数

甲は

 「あ」を表示

甲#呼び出し

9.ファイル入出力

開く」/「読む」命令で指定のファイルを全部読み込みます。「保存」命令で新規保存、「追加保存」命令で追記が出来ます。

「readme.txt」を開く #readme.txtの全内容を読み込んで「それ」に代入

「あああ」を「new.txt」に保存

「あああ」を「add.txt」に追加保存

知っておいて方が良い文法

なでしこの

前述のように、0と「」(文字列)がで、それ以外はです。(内部型NILですが、使う機会はありません)

コマンドライン引数

システム変数コマンドライン」を使って取得できます。配列の0番目にはソースファイル名が入ります。

#vnako.exe src.nako a.txt b.txtで実行

コマンドライン表示/* =>

src.nako

a.txt

b.txt

#*/

文字列数値変換

文字列を算術演算しようとすると、自動でに実数に変換します。同じ動作は「FLOAT」/「実数変換」命令で実現できます。整数のみの場合は「INT」/「整数変換」命令を使います。各変換は末尾に数値以外の文字があっても、文字は無視して数値と解釈できるところまでを変換します。変換できなければ0が返ります。

「10」+1を表示  #=>11

$10」+1を表示 #=>17

「10e+2」+1を表示#=>1001

INT(「10.1」)   #=>10

「10e+2」を整数変換#=>1000

「10.5」+1を表示 #=>11.5

FLOAT(「10.1」)  #=>10.1

「10.5A」+1を表示#=>11.5

INT(「あいうえお」)#=>0

の他の演算子

べき乗、ビット演算が出来ます。例によって全角半角を問いません。

2^10を表示 #=>1024

1<<10を表示 #=>1024

32>>5を表示 #=>1

1||2を表示 #=>3

3&&2を表示 #=>2

ファイルを逐次的に読み込む/書き出す

ファイルストリーム関連命令を使うことによって可能です。

test.txt」を「読書排他」でファイルストリーム開いてストリームに代入

ストリームでファイルストリーム一行読む #改行まで読み込み

ストリームで10をファイルストリーム読む #10バイト読み込み

ストリームで「こんにちは」をファイルストリーム書く  

ストリームに「こんにちは」をファイルストリーム一行書く#末尾に改行がつく

ストリームをファイルストリーム閉じる

毎行読む」命令を使うと「反復」と組み合わせて各行を処理することが出来ます。

「readme.txt」を毎行読んで反復

 回数「:」対象表示 #行番号を付けて表示

メモ記入」命令

複数行の任意入力コピー/変更可能な出力として非常に便利な命令です。

「あいうえお

かきくけこ

さしすせ」をメモ記入 #指定のテキストがエディタ表示されたダイアログが表示される

それ表示 #ダイアログの内容が返される

外部ファイルの読み込み

「!「~~」を取り込む」を使って、外部のファイルを取り込むことが出来ます。

!「nakonet.nako」を取り込む

サーバーとはTCPサーバー#「nakonet.nako」にあるTCPサーバーグループを利用可能

グループ関係

メンバ関数「作る」を定義しておくと、コンストラクタとして動作します。

■甲

 ・あ

 ・作る~

  あ=10

丙とは甲

丙のあを表示#=>10

宣言時に+を使ってグループミックス(メンバの全コピー)をすることが出来ます。

■甲

 ・あ

 ・い

■乙+甲

 ・か

 ・き

/*次と等しい

■乙

 ・あ

 ・い

 ・か

 ・き

#*/

■丙+甲

 ・あ

 ・か

 ・さ

/*次と等しい

■丙

 ・あ

 ・い

 ・か

 ・さ

#*/

グループはクラスではないので、■での宣言もグループ変数として扱えます。

■甲

 ・あ

 ・い

甲のあは10

便利リンク

公式マニュアル

公式命令リファレンス

AilinAilin2015/08/31 17:19I feel saiitfsed after reading that one.

AkiraAkira2016/07/01 08:44Nice to meet you!

2008-12-07

[]pixiv viewer(仮)公開 01:28

なでしこで作ったのでこっちにも。

twitter上でぶちぶち言ってた、pixiv viewerっぽいなにかを公開しました。

ソースも同梱していますが、読みにくいので参考になるかははなはだ疑問。

 

ダウンロードページ

KikiKiki2012/03/27 12:11That's a wise answer to a tirkcy question

ddfgdzrcddfgdzrc2012/03/28 08:014UtyA0 , [url=http://gmuogzgzqcce.com/]gmuogzgzqcce[/url], [link=http://uxpwyysgfjgu.com/]uxpwyysgfjgu[/link], http://dfgqdizihrxf.com/

bghzrsrrbghzrsrr2012/03/29 07:20SEqRJI <a href="http://asxotnuspxyt.com/">asxotnuspxyt</a>

opkesyopkesy2012/03/29 11:48EmntQp , [url=http://kvbdzlsbguda.com/]kvbdzlsbguda[/url], [link=http://txnnkytmliej.com/]txnnkytmliej[/link], http://qffgbamdahnq.com/

2008-09-30

[]日本語プログラミング ワークショップ 01:44

行ってきました。

会場が会場だけあって、普段行くような勉強会とは違う、アカデミックな感じでした。

以下レポート。

 

東京に至るまで

足代をケチって夜行バス(OCAT->東京駅)で。

初めての夜行バスでしたが、まあ寝られなくはないですね。でも、寝ている時はともかく、熟睡度はMLながらでのほうが高かった気がします。

 

集合するまで

東京に着いたのは7時半頃、まだ集合まで時あります

までに、靖国神社あたりでもお参りに行こうと思ったですけど、飯田橋まで行って、意外と距離があることに気づいたので近そうな東京大神宮に変更。靴擦れが痛かったので、あんまり歩きたくなかったんです><。

ところで、東京の交通網って何かすごいですね、流石首都。同じ駅使ってるのに違う路とか、迷います。

の後秋葉原に移動。この時点では8時すぎ、まだまだの辺の店が開くのには時がありましたので、例のごとくネカフェで休憩。メールチェックとか靴擦れの応急手当とかしてました。

んな感じで10時過ぎ、やっと店が開いてきたのでパーツ屋巡り。電子パーツ/PCパーツをいろいろ見てりました、PCパーツは事前チェックが甘かったので目当てのもの(Inspiron4150の冷却ファン)が見つけられませんでしたが、電子パーツのほうはさとーさんに教えてもらったところをってほくほくでした。買ったのは秋月でFMトランスミッタキットだけですが、いろいろ電子パーツを見てるのは楽しいです、夢が広がります。

 

始まるまで

んなことしているうちに、時が近づいたのでお茶の水に移動して、クジラ飛行机さん、楠岐さん、99さんと合流、のままchocoさんの待つ喫茶店へ。

喫茶店では、chocoさんが席を確保していてくれていました。SWinXさんもすでに来られていたそうですが、私たちを向かえに行かれたというので、どうやらすれ違いになった様子。

しばらくすると、SWinXさんが戻ってこられ、続けてEZnaviさんも到着。の場では、発表をするお三方のスライドを拝見したり、原因のよく分からないバグの再現方法を聞いたりしていました。

ところで、コーヒー屋でアイスティーを頼む私は読むべき。

 

14時半を過ぎると、ろ会場へということに。会場まで徒歩数分は偉大。

それにしても、流石明治大学、建物は大きいし、きれいですねぇ、うちの学校とは大違いだ。

会場はPC付き教室、会議室みたいなとこかと思っていたんですが違うんですね。スクリーンはないですが、それぞれの机にモニタがあるので問題なし、というかこっちのが見やすい。

ついたときは、何人かの先生方と、うちらぐらいしか居なかったのですが、開始が近づくにつれ続々と人が集まりほとんど満席(30名強)に。の後、ワークショップが始まった後もちらほらと来られる方がいました。

 

ワークショップ

はじめに主催の阪井先生の挨拶がありました。こにして飯箸先生に替わられましたが。

飯箸先生

プログラムでは「挨拶」となっていましたが、がっつりとした「講演」でした。

日本語プログラミング研究会/SH情報文化研究会などで、日本語プログラミング言語各種の支援の他、日本語プログラミングに関しての学会発表も行われているそうです。

この講演の主題は、「日本語と日本語プログラミング言語」ということで、日本語文法のお話でした。

日本語の文法は複雑/複合的で、簡単にオブジェクト指向風に解釈することは出来ない、という話はとても興味深い。オブジェクト指向で識別子解決をすると、どうしてもどれと結合させるかというのが難しい問題です。

既存の文法以外の、より適切に日本語を表すことが出来る文法の追求は期待したいところです。

 

筧先生

アツい、アツいです。この講演だけでも東京まで行った甲斐があると言えるぐらい、アツくて興味深い講演でした。このスライドの公開はないんでしょうか?是非とも公開すべきだと思うのですが。

 

>みんな器用にすぎるから

この表現は面白い表現だなと思いました。日本語で考えたものを"舶来"のプログラミング言語で作るということは、器用じゃなければやっていけないと。

>さらにクラスライブラリによって、概念構成まで"舶来"に…

クラスライブラリって概念構成の集まりなんですね。これを、ただ単純に語彙を置き換えただけでは、日本語/日本語プログラミング言語には合わない。意味や概念まで翻訳/解釈して落とし込まないといけない

それでふと思ったのですが、日本語プログラミング言語って、日本(語)的概念と欧米(語)的概念の通訳なんだなと。更かもしれませんが。

>コンピュータは生活文化の中に。生活文化は日本語の上に。ならばコンピュータ/プログラミングもまた日本語の上に。

コンピュータ上に横たわる欧米概念に対して、日本語プログラミング言語がのレイヤをはがして、よりコンピュータと日本語で密接に関われるようになるというのは素晴らしいことです。

>極めたのか?極めようとしたのか?

日本語プログラミング言語はまだ発展途上。いまだ極みとはほど遠く…

先生のおっしゃるように、「待っていても外の人は作ってくれない」、自分たちで作らないと行けない

>やるべきこと

まず第一に、日本語での命名。語彙の翻訳ですね。まずこれをしないと行けない。でもこれは結構なところで試みられていますよね。

次に構文の日本語化。これもいろいろ試みられていますが、これまでのものに至高のもはあるのでしょうか。まだまだ試行錯誤が必要でしょう。

してクラスライブラリ。これはコンピュータ上に日本語概念世界を構築するって事ですね。

最後に応用プログラム。つまりは実用性。理論的に優れていても、実際に使えるところを示さなければ広まらない。セルフコンパイルが出来たり、IDEの言語自身で書かれているというのもポイント。

 

クジラ飛行机さん

なでしこ。

なでしこは動機が実用指向。素早く仕事を片付けやすいように機能がまとめられています。

WEB上のアンケートより、幅広い年代(10代から80代!)、職業の方に使われているようです。

また、定期的な更新(ほぼ一ヶ月ごと)があるのも特徴です。

岡田さん

言霊。

言霊は動機がアカデミック。文系学生の論理教育などにも利用されています。

は、言霊の話はこに、Javaと言霊、同じ事をするコードを見せたときのプログラマと一般人の反応について。

プログラマは「気持ち悪い。Javaなら分かる」、一般人は「これなら分かりそうJavaは意味不明」。

まあ、よく聞く反応ですね。私も「全角文字でプログラムを組むこと」が気持ち悪いとか聞いたことがあります

なぜこの反応のが出るのかを、岡田さんは「字句解析が出来るかどうか」「構文解析が出来るかどうか」「解析語順であるかどうか」によるという仮説を唱えています。

プログラマは、プログラマとしての常識からコードを見るので、言霊のトークン区切りを認識しづらく、一般人はJavaの文構造を見いだしづらい。の他いくつかの感覚のが、2つの反応を生み出しているのだと。

この反応、伺かでの里々と文/華和梨の関係と似てますね、というか同じですね。となると、やはり一般人の反応の中には英語恐怖症によるものが混じっているんでしょうね。

しかし、プログラマがすべからく日本語プログラミング言語に拒否反応を示すものでもないと思います。この前のわんくま勉強会でも、少なくとも一部からは好意的な反応をもらっていますし。

話を戻して、岡田さんはプログラマが日本語プログラミング言語を嫌う理由として、言語文法と日本語文法の不整合や、シンタックスシュガーによるごまかしからくる「あいまいさ」であるとされています。してこの解決法として、2つの案を提案されていました。

1つはシンタックスシュガーをより多用して、文の曖昧さを無くす方法。つまり情報量を増やしてエントロピーを下げる。ただ、これは非常に冗長、何か書くのが嫌になりそう

もう1つはシンタックスシュガーを一切無くす方法。すべての語句をスタック命令にしてスタック言語にするという事らしいですが、これってのなでしこの実装とよく似ている気がします。

 

ゆうとさん

プロデル。

プロデル(TTSneo)は動機が知的好奇心…なのかな?語順がより日本語らしくなることを追求しているように見受けられます。

個人的には、それぞれ一文が日本語っぽくあれば、関数やクラスに類するものの構造は、マニュアルとかレポートとかのように、段落&箇条書きでOKかなと思うんですが。表組みや箇条書きだって日本語には変わりないですし。

とまあ、んな話は置いといてプロデルの話。

プロデルは各種機能を、名前/クラスで階層化して実装するようです。なでしこでは名前をネストできないのでうらやましい限りです。

また、DLL作成可能らしく、プロデルでプロデルのプラグイン作成可能とか。うーんこれも素晴らしい。

さらに、プロデルはGUIデザイナが高機能そう!何か良いことだらけですね。

後半はIRCクライアントの作成実演だったのですが、あらかじめ用意してあったIRC通信ライブラリの定義を見てみると、どうやらライブラリの初期化ブロックがある模様。やっぱりそういう機能は必要ですよね。

 

尾崎さん

マイクロワールドEX

尾崎さんは言語作者ではないけれど、教育用、学校向け言語のマイクロワールドEXの日本語ローカライズ版を販売されているそうです。

マイクロワールドEXはロゴ言語ベースのマルティメディアプログラミングが出来るソフトらしいです。

作成したプロジェクトをブラウザ上で見られるように出来たり、LEGOマインドストームなどの制御も出来る優れものです。

尾崎さん自身は、元々アスキーの設立の頃からのメンバーで、当時よりロゴ言語のプッシュはされていたです。

しかし、MSとの提携の関係(BASICと競合する)や、MSXの学校納入不可などから、なかなかうまくいかなかったらしいです。

 

事例報告 99さんchocoさん

発表の最後はお二人によるなでしこを使っているものからした発表です。

 

99さんのは初めてとおっしゃっていましたが、なかなかどうして、良かったじゃないですか。少なくとも私と比べると。あれだけ喋れていれば十分な気がします。

どう書く.org、ここのところあんまり見てませんねぇ。やるだけやって投稿してないのとかもあるし、度まとめて投げておこう。

 

chocoさんはやはり実務で利用され、さらにパッケージソフトまで作られているので、言葉に重みがあるように感じられました。

やはり、ある程度の規模を持ったソフトが作成出来るというのは、アピールポイントとして有効ですね。

 

群れ討論

討論しないでSWinXさん、yukさんとなでしこのデバッグしていました。

でも、のおかげでタスクトレイまわりの微妙な挙動が正せそうです!お二人のデバッグ協力に感謝!

 

懇親会

懇親会は大学近くの中華料理屋にて。

席は適当に座ったのですが、何か私のりに尾崎さん、飯箸先生、タイムインターメディアの藤原さんという、なんだかすごい人が集まって緊張しっきりでした。というか、何話したかあんまり憶えていないいう…、だめだめやね。

いうわけで順不同、適当に。

 

藤原さんは最近アルゴリズムを書かないプログラミングをやっているそうです。論理型言語とか推論エンジンとかの類でしょうか。

yukさんと岡田さんは、プログラミングをするのに「とにかく動かせる」のがいいか、「基礎的なところが学べる」のがいいか討論めいたものをされていました。これすぐ使いたい側と、仕組みを教えたい側のスタンスの違いなんでしょうね。

尾崎さんに、私が制御とか電気の方も学校でやっていたというと、路シミュレータを紹介されました。これは先生にも言ってみるべきなのか、でもうちの学校何かすでにシミュレータ使ってたような…

 

10時を過ぎるとさすがに撤収の雰囲気。店から出て、地下鉄組とJR組に分かれました。私はJR組。

道すがら、SWinXさんと少し伺かの話をしました。私のうかべんでの発表で、興味を持っていただけたご様子。伺か側でもセキヤさんなどなでしこに興味を持ってくれた方がいて、私の発表が双方の交流にちょっとでも役立っているならばそれはありがたい限りです。SWinXさんとはもう少しお話しできたら良かったんですけども。

駅に着くと、新宿組と東京組にさらに分かれました。私は東京組。

同じく東京方面に向かう岡田さんと、短い時でしたがお話しできました。話題は私の学校の話から電子パーツの話へ。こんなところでRLCの電気特性の話をするとは思いませんでした。……違ったこと口走っていなかったか少し心配ですw

 

帰路

東京駅で岡田さんと別れた後、八重洲口でバス待ち。

帰りは青春メガドリーム号で、行きよりさらにグレードダウン。2階最前列のため、いすの下に荷物置けない&ひどい揺れ。眠れはしたけど、首とか痛い…

大阪着いた後しばらく時潰して、新大阪であるカタンの大会見に行こうかとも思ったけど、体力尽きたので断念。

 

 

……と、こんな感じでした。

どれも中途半端な感想ですが、ご容赦下さい。

 

それにしても、ワークショップに行けて本当に良かったです。東京行きでいろいろ面倒見てくれた親と、行けないなとスルーしかけていたところに背中を押してくれたさとーさんに感謝。

satossatos2008/09/30 06:23実際に専門としている人と会うと、やっぱり得るもの多いですから。お疲れ様でした。楽しんできたようでよかった。

TerriTerri2012/11/27 12:14Dag naibbt good stuff you whippersnappers!

gdgbiegdgbie2012/11/30 05:47z4t1QQ <a href="http://awwcklgfvcty.com/">awwcklgfvcty</a>

psctarwkdpsctarwkd2012/12/01 22:00pKu9Vw <a href="http://jtgpsoissxxq.com/">jtgpsoissxxq</a>

200612
200701020304050708101112
20080103040506070912
200904
20100204
201104