なでしこ勉強会@関西

今日は大阪であったなでしこの勉強会に参加してきました。メールをちゃんと読んでいなかったせいで、開始・集合時刻を30分間違えていました(爆)。ただのバカです。

まぁそのせいも少なからずあったとは思うのですが、個人的に今日の勉強会では個人個人の交流の時間が少なかったです。発表人数が多かったので、当初の予定通り(?)発表の時間が長くなってしまったり、明日が平日で皆さん早く帰らないといけなかった、というのも大きいですね。でも、色々な人とお話しできて楽しかったです。

勉強会の発表の内容自体は、とても良かったと思います。参加者の方々からも、「おぉ」「知らなかった・・・!」などの呟きが聞こえてきました。mrさんが紹介した知られざる便利機能「命令補完機能」(Ctrl+Space)の受けが特に良かったかな。

また、マニュアル探査艦も紹介してもらったので、後の実習時間で早速使って下さってた方もいました。バージョンアップした甲斐があったというものです。

他にも色々な発表がありましたが、その中でも僕が特に興味深いと思ったのが、青い鳥さんの韓国語学習用ソフトについての発表です。同志社大学の教授ということで、なんと実際の教育現場で使ったり、「なでしこでCALL用ソフトを作ろう」という趣旨の勉強会も行うようです!すごい!

実は今僕の大学の方で着々と「なでしこ友の会〜京都支部〜」なるサークルを立ち上げようと、なでしこの布教をしたり初期メンバ集めをしたりと準備中です。うちの大学から同志社は非常に近いので、そういった面でも連携できたらいいなとかちょっと妄想してます。

勉強会の演習問題

で、発表が終わって、次は参加者の皆さんに問題を解いてもらう時間。うろ覚えですが、こんな感じの問題でした。

初級
  1. 「尋ねる」命令で入力したものを表示してください。
  2. 入力したものの前に「なでしこ:」という文字を付けて表示してください。
  3. 表示した文字の左2文字だけを切り取って表示してください。
中級
  1. 1から100までの数字について、3の倍数の時"3"、5の倍数の時"5"、そして15の倍数の時"35"をそれぞれ表示し、それ以外の時は何も表示しないでください。結果はExcelまたはCSV形式で保存してください。
  2. 1から100までの素数を列挙してください。

最後時間がなくて十分に解説ができなかった演習問題ですが、一応僕なりの回答を書いておこうと思います。ちなみに、正式な回答(?)はしらたまさんがWebに上げてくれるそうです。

初級-1.
# 略記法を使う
「年齢は?」と尋ねて表示する。

# 「それ」を使う
「お名前は?」と尋ねる。
それを表示する。
初級-2.
# アンパサンド(&)で文字を繋げる
「年齢は?」と尋ねる。
「なでしこ:」&それを表示する。

# 展開を使う
「お名前は?」と尋ねる。
「なでしこ:{それ}」と表示する。
初級-3.
「お名前は?」と尋ねる。
メッセージは「なでしこ:{それ}」。
メッセージの2文字左部分を表示する。
中級-1. ごく普通の解法
100回
 もし回数が15の倍数ならば
  「{回数},35」と表示する
 違えば、もし回数が5の倍数ならば
  「{回数},5」と表示する
 違えば、もし回数が3の倍数ならば
  「{回数},3」と表示する
表示ログを「{デスクトップ}中級1.csv」に保存
中級-1. 普通じゃない解法
MAPとは配列=「{~}3{~}5{~}35」
「{デスクトップ}中級1.csv」に出力先設定。出力先初期化
100回、「{回数},{MAP[((回数%3)==0)+2*((回数%5)==0)]}」を一行出力
中級-1. 全然分からん(なこちゅさん談)解法
M\1=~回数&`,`&3と一行出力
M\2=~回数&`,`&5と一行出力
M\3=~回数&`,`&35と一行出力
「{デスクトップ}中級1.csv」に出力先設定。出力先初期化
100回、M[((回数%3)==0)+2*((回数%5)==0)]
中級-2.
Pとは配列。Iとは整数。
Iを2から100まで繰り返し
 もしIが素数ならばIをPに配列追加
Pをメモ記入
●素数(Nが)
 Pを反復、もしN%対象が0ならばNGを戻す。
 OKを戻す

ひとまずうろ覚えでこんだけ。解説はしませんが、簡単に講評というかコメントを。

初級の問題は、勉強会に参加していた女性の方などから質問を受けて答えたりしてたので覚えていました。問題4とかもあったかもしれませんが、よく覚えてないですf(^^;。他にも「追加」命令を利用する、「文字抜き出し」命令を使う、等々、色々書けると思います。

中級の1番は後ろ2つが U D の回答です(笑)。良い子こんな回答をしないように。これ、工夫次第ではもっと短くできそうですね。2番について僕の回答はいつぞやの「かんそうぶんふうぷろぐらむ」でいいです(笑)。

そうそう、演習中に見た目合ってるのにエラーが出る、という風に聞いて行ってみると、「もし〜であれば」と書いていました。確かになでしこはごく自然らしい日本語文でプログラムを書けるので、たまにこういうミスをやってしまうんですよねぇ。。。確か、「もし〜ならば」「もし〜なら」「もし〜でなければ」が使えたハズです。他は似てても使えません、気を付けてください!

今後に向けて

今後のなでしこについて。色々出た意見等々をうろ覚え書き。強調してあるものは、後でまとめてチケット登録する(かもしれない?)ための備忘録。

  • エディタからオフラインで見れる命令解説にもKonaWikiエンジンを!
  • XMLデータをもっと手軽に扱えるといい
    • DOM API をなでしこから使えると良い。
    • なでしこ単体だと結構制限があるかも。
    • 早速LUAの出番!?
  • 8月の日本語プログラミング言語ワークショップ、名古屋OSC、10月の東京OSC、…
  • グループの機能が不安定
    • 動的生成時の謎のエラー
    • 「について」構文
    • グループインスタンスのインスタンス名を取得できないか?
  • ブラウザの機能を拡張できないか
    • ブラウザ部品+jQueryで、リッチUIを手軽に実現できるかも
    • フォーム入力などの操作をもっと手軽にできないか
    • → ブラウザの内部ハンドルとかハックしたりできない?
    • → あるいはJavaScriptを上手いこと使えばできるのではないか?

うろ覚えです・・・。色々お話はしたと思うのですが、今日は帰宅までの時間でdiaroid用のメモをまとめるのを忘れていて、これを書き始めた時には大分内容をうろ覚えになってましたf(^^;; いやまだ若いですってば(笑)

それから、「たまむれ」がすごく面白いという感想を頂きました。確かにあれはかなり自信作ですからねぇ。確か、たまむれの解説があると面白い、という風にも仰っていたので、暇があれば夏にCGとか絡みの講座書いてみようかと思います。

CGと言えば。またサークルの話ですが、「なでしこ友の会〜京都支部〜」の初期メンバ(になりそうな友人)はCGに興味がある人が多いので、CG用の資料や講座も少しずつ充実させていく予定です。サークルで勉強会みたいなものをやったら、そのFBもアップしますよ!乞うご期待・・・あまり過度に期待されても困るけど;