『G*ワークショップ「非同期並列なG*」+JGGUG総会 #jggug』に参加してきた。




今回は、 @shinyaa31 さんが裏番組の『リーダブルコード − 忘れてもいいコードを書こう。』に参加してきた #devlove
に行ってたので、超一流のレポート職人がいない ><。


こちらも負けずに、“暑かった”ので、その様子をまとめてみた。


G*ワークショップ「非同期並列なG*」+JGGUG総会 #jggug
場所は、NTTソフトウェア品川本社 太陽生命品川ビル25Fセミナールーム
去年の7月に初めてG*ワークショップに行った時もここだった。
去年の今頃は、G*ワークショップに初めて参加するにあたって、ぼっち対策に、ネタを多数書いてたな。



G*ステッカー入手!!

http://local.twitpicproxy.com/web1/img/611589308-5f8afaf9735cd6992e75cdabfbd060b2.4ff855f8-full.jpg
これにて今回のG*ワークショップの任務終了
まだまだあるようだから、今後もJGGUGイベントで配布されるだろう。




Groovyポロシャツ来てるの僕と @mike_neck さんだけ。
運営スタッフ誰も着てないw
今回着ないでいつ着るんだろう(^_^;)
9/1のG*ワークショップ福岡か?
http://cdn-ak.f.st-hatena.com/images/fotolife/o/orangeclover/20110924/20110924203613.jpg
(モデル: 今回はいなかった @irof さん)



GroovyCSPによる並行処理 @csp_occam さん

  • JSCPを踏まえてGroovyCSPを説明する
GParsとの関連
  • Composable asynchronous functions
  • Fork/Join abstraction
  • Actor programming model
  • Dataflow concurrency constructs
  • CSP
  • Agent - an thread-safe reference to mutable state
  • STM (Software Transactional Memory)
  • CSPのライブラリを理解することで、GParsの大半を理解するとこができる。
  • Dataflow concurrency construts はCSPのサブセット。
CSPとは
  • 歴史
    • 1978年:Tony Hoareによって発表された、並行の動作を記述する仕様記述言語
    • 1981年:CSPモデルに基づく並行プログラミング言語 occamとして実装された
  • CSPは、40歳を超えた方はピンと来るかもしれない
    • (おっさんだらけのG*ワークショップにぴったり!・・・なのか?)
  • ヨーロッパでは、多くの大学で講義されて、コンピュータサイエンスなかんでは大きな柱になっている。
    • 一方日本では・・・
  • 並行処理ののなかでも必ず出てくる
  • プロセス指向 vs オブジェクト指向
CSPプロセスの表記

http://www.tukizakura.org/~fujim2/cgi-bin/pukiwiki/pukiwiki.php?plugin=attach&refer=CSP&openfile=CSPSyntax.PNG
若干違ったけど、こんな感じ




occamのコンストラク
PROC  = STIP    STOP
        chanel ・・・・


メモするのは無理だった・・・
「Occam」で「OCaml」じゃないよ!!



occam-for-all
  • occamコンパイラーはどんどん、異なるプラットフォーム、異なるOSに移植されている
  • occamだけでなく、C++Python、Groovyなどにも移植されている
GParsで問題解決
JCSPのクラス
Class  =  Skip  Stop
         |Channel(One2One/One2Any/Any2one/Any2Any)
         |ShardChannel
         |NetChannel
         |Sequence
         |Parallel
         |PriParllel
         |Alternative
         |CSTimer
         |Guard
         |Barrier
         |Bucket
         |Crew
         |
         |JSCP NET
         |Mobile
         |NetBarrier
NetChannelのクラス

LANに接続された、PCが何台あり、その場合に各PCにPeer to Peer にchannelを張る1種のデーモン

    CNS
     |
-----+---------+---------+---------+---------
               |         |         |
               P0        P1        P2

P0⇔P1、P0⇔P2、P1⇔P2 でチャネルが使える



JSCPのデモ
  • キーボード、マウスの割り込み、etcの割り込みのチャネルがある
  • マウスのポインタでビューポイントが移動するpure Java で球体のアニメーション
  • CPU 100% にもかかわらず、割り込みが入って状態が変わって、計算しなすので、アニメションが止まらず動き続けられる
GroovyCSPのクラス

JSCPにGroovyをラッピングしてるので、ほぼ同じ。

  • 構造
+----------+
| JCSP     |
+----------+
| Gpars    |
+----------+
| Groovy   |
+----------+
| JavaVM   |
+----------+
| OS       |
++---------+

JSCPには、独自のスケジューラーがある。
OSに依存しない、そのためデモのようにCPU 100%でも切り替わることができる。

GroovyCSPの環境設定

gpars*.jar、jscp*.jarが、Groovy2.0の中に含まれている。

サンプルとPDFが用意されているが
JCSPが分からないさっぱりわからない。
一歩入りこめば、楽しいことが書いてある。


設計方法

  • CPSモデルはDFD、FSM、ステーチャート、UMLなどの動作モデルを記述することができる
  • モデル検査器を使えば、モデルの検証ができる。
  • CSPモデル言語のoccam/C++CSP/JSCPなどでコーディング
    • CSPモデルの実装言語
      • occam-π
      • C++CSP
      • JCSP
      • GroovyCSP
    • マイクロプロセッサ
      • Transputer
プロセスとチャネルの基本構造
  ch    ch      ch
  →  P  →  Q  → 

PとQの間のチャネルだけ同期
それ以外は非同期

非同期にセンサーから入って、シンクロナイズして、ネットワークに非同期に出力



P|[ch]Qの意味

!は送信、?は受信を表す
プロセス、P、Qが共にreadyの状態になった時に通信が行われる。

状態遷移で記述
  n
P → Q

イベントで、PからQへ遷移する。スケジューラーでスイッチングする

JCSPによる記述
          chan
    Send   →   Read
 
 


コードはメモれないな。。。

公演中に @mike_neck さんが試してて、もうブログにまとめてるので、そちらを参考に。
JGGUG G*ワークショップ行ってきた

GroovyCSPによる記述

Groovyの場合は、Listの構造を持って、SendとReadを入れるところが異なる。


  • Pipe
Sned →Pipe →Pipe  Pipe→Pipe→Read
  • プロセスの階層化
       +----------------------+
Send →| Pipe → Pipe → Pipe | → Read
       +----------------------+

3つのパイプをまとめる

  • バケツリレー
    • 携帯→プリンター印刷 みたいなのをパイプライン化。
    • 同期型チャンネルでないと難しい
  • 双方向パイプ
  →         →
      Pipe
  ←         ←
  • Farming
    • デモでやったRayTracing
  • MapReduce
    • Farmingの構造によく似ている
  • SelectRead
    • 先に到着したものをが選択され、その後にすぐにチャンネルoutへ出力
GroovyCSPの適応領域
  • アクティブなGroovy GUI
  • DBサーバの並列分散処理
  • 停電力なWeb Server
    • イベント駆動型のWebサーバは、イベントが来ないためには何もしないため
  • 安全なセキュリティ
    • チャネルを張るとすぐにセンシングすることができるため
    • 今のようなポートがたくさんあって、全部チェックするのは難しい。
  • OSGiのサーバ側でのJCSPのハーネス
  • Groovy Android

総会 @yamadamasaki さん

iPadをプロジェクターに繋いだ瞬間、漢を見たw

  • 全国(主に、東京、名古屋、大阪で)イベント26回
  • JGGUG 287名 +62名
  • 個人サポータ募集
    • いらくでもOK
    • JGGUG G*Magazineに記載
    • 個人サポータとなるには、まず supportersあっとまーくjggug.org にmail
      • お名前
      • 予定金額
      • G* Magazine へのご芳名掲載の可否
  • (運営スタッフではなく)サポートスタッフ募集
  • JGGUG G*Magazine 最新号(5号)
    • JGGUG G*Magazine PDF版
    • JGGUG G*Magazine epub版
      • (epubは、まだ10 USERS しか購読していない、懇親会参加者より少ないってどいうこと ヽ(`Д´)ノプンプンって懇親会で某名古屋の会社の社長が・・・)

開催予定のセッションの1つ、「デルファイのアポロ神殿にて祈るドルフィン夢見るままに待ちいたり 〜Vert.xのちょっとした話〜」は、
講演者の回避できない事情により、差し替え。次回以降のリベンジに期待。
僕は、JJUG CCCは参加してないから、差し替わった内容でもよかった。


@uehaj さんのニューMBA初期不良(?)によりプロジェクター出力が上手くいかず。
これだからMacはw



Grails/Groovyの開発活用術 NTTソフトウェアのとりくみ (JJUG CCCの再演) @uehaj さん

  • JJUG CCCでも知名度は100%近くだったが、実際に業務使っている人はちらほら、今回も使ってる人はちらほら。
  • NTTソフトウェアは、Grails推進室を設置して、Groovy、Grailsをは普及にとりくみます キリッ
  • Groovy、Grailsの説明欲しい人。
    • ノ(1人)
      • どんなことが知りたいですか?
  • なぜGroovy/Grailsか?
    • 従来通りの「人月ビジネス」モデルの限界
  • Ruby on Railsに移行しようとすると、移行コストは無視できない。教育コスト、開発要員の確保、etc
    • そこで、Grails/Groovyですよね。
  • Groovyのよいところ、人間の思考論理で書くことができるとこ。
    • 何かをするのに、forループなど書きたくないだよ!
  • Grails Plugin の紹介
    • ビュー、サポートスクリプト、テストを含むことができる。
  • Groovy/Grailsをなんでも適用したいいものではない。適したプロジェクトで採用すれば効果が大きい。
  • Groovy/GrailsならScala/Play Frameworkに比べて、断絶のない、地続きの移行できる


聞けなかった質問。
「適したプロジェクト」をどうやって判断、見極めて行くんだろう。



usign Grails since 2006 (再演) + Grails 2.1 @tyama さん

Slideshareには見当たらず。

  • JJUG CCCでこれををやったときは、scalascalaの間だった
  • 名古屋には関西支部長もいる
  • 0x28歳の誕生日に、Grails2.1リリース
    • おめでとうございます!!
    • 元は、Perlプログラマー
  • Grailsをwarで導入して大丈夫だった
  • こんなところでは、Grailsを使ってはだめ
    • 1人月は30人で1日だ!
    • 要件が見えていないのに、見積もりだけ決まってる
    • コードかけいない or 長いことコードを書いていない上司がいる
    • 天下り開発
    • 詩人
  • もし、そのようなプロジェクトで活用するなら

Graisl2.1の話は、ブログ参照
Grails 2.1.0 GA リリース!
早く、はてな−スター付けないと名古屋支部長にシメられるよ。

  • Grails 3.0 (2013年)でGradle対応
  • Grails2.1で、ivyを外して、mavenの叩きなおし
  • grails create-pom com.nycompanyでpom.xml生成
  • Java 7では動かない。さっき自分がハマった。
  • mavenの話をするときは・・・知ってる人が少なくて・・・辛い・・・
  • grails wrapper で、wrapperフォルダとrgailswとgrailsw.batが生成される(gradle wrapperじゃないよ、grails wrapperだよ)
  • 名古屋に来た大阪の人(kiy0taka)がおかしなことばっか言うんですよ。
  • (終了の合図が出たが)そんなことでは終了しないよ!!


@csp_occam さん 濃い発表を、ピンチヒッターの@uehaj さん @tyama さん 役に立つ、面白い発表をありがとうございました。
運営・サポートスタッフのみなさん、毎回お疲れ様です。




内容におかしながあれば指摘してください。特にCSPについて。
コメント、トラックバックはてブTwitter @orange_clover宛 で、お願いします。



座席表

G*ワークショップ


座席表の編集


[twitter:@bikisuke]
[twitter:@csp_occam]
[twitter:@earu]
[twitter:@gantawitter]
[twitter:@grimrose]
[twitter:@kazuchika]
[twitter:@kimukou2628]
[twitter:@kiy0taka]
[twitter:@mike_neck]
[twitter:@mkawax]
[twitter:@nobeans]
[twitter:@notexy]
[twitter:@orange_clover]
[twitter:@prototechno]
[twitter:@tamatamatamata]
[twitter:@tetsuonatom]
[twitter:@tetsurokitahara]
[twitter:@toby55kij]
[twitter:@tyama]
[twitter:@uehaj]
[twitter:@yamadamasaki]
[twitter:@yamap_55]
[twitter:@yamkazu]
[twitter:@ysnryn]
[twitter:@yusukey]


どこに座ってたか分からなかった人。
[twitter:@masteryupa]
[twitter:@morozumi_h]
[twitter:@hnorihiro]
[twitter:@_y_u_]
座席表でアイコンを移動してもらえるとうれしい。


懇親会

〲ʓ━Ʊ"━な人とƱ"━ʓ〲Ʊ"〲Ʊ"


togetter

コミュニティ

イベント・勉強会

書籍

JGGUG G*Magazine





関谷 和愛、上原 潤二、、須江 信洋、中野 靖治

価格: ¥ 3,360

価格は記載時点のものです。購入前にAmazonでご確認ください。





山田 正樹、山本 剛、上原 潤二、永井 昌子、杉山 清美、杉浦 孝博、笠原 史郎、香月 孝太、福岡 竜一、伊堂寺 北斗

価格: ¥ 3,780

価格は記載時点のものです。購入前にAmazonでご確認ください。





Jeff Brown、Graeme Rocher
価格: ¥ 4,163


価格は記載時点のものです。購入前にAmazonでご確認ください。





Burt Beckwith

$35.99

Early Release Ebook

価格は記載時点のものです。購入前にoreillyでご確認ください。