Create  FrontPage  Index  Search  Changes  Login

日本Rubyの会 公式Wiki - KansaiWorkshop16 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

! 第16回 [[KansaiWorkshop]](運営:[[RubyKansai]])

{{toc}}

!! 勉強会

:日時:2007 年 6 月 16 日 (土) 13:00〜17:30

:場所:[[京都女子大 J校舎4F J420教室|http://base.alpslab.jp/?s=10000;p=34/59/17.998,135/46/55.609]]
:アクセス:http://www.cs.kyoto-wu.ac.jp/~konami/map/J/
:費用:実費(講師の交通費、配布物の印刷代等)の人数割をご負担ください。前回(同じ会場)は500円でした。
:定員:定員は設定しません。

!! プログラム

!!! 「Ruby初級者向けレッスン第13回」 by okkezさん & サカイさん
:セッション概要:
::メソッド定義の方法と前回扱わなかった例外を解説します。
::時間があればどういうことを考えてこれらを使用すれば、良いプログラムを書くことができるかということまでお話できればいいなあと、考えています。

:プロフィール:
::okkez
::社会人三年目。仕事に飽きると、Rubyでツールを作ります。どんなツールかは機会があれば、お話ししたいと思います。Rubyリファレンスマニュアル(るりま)のお手伝いをぼちぼちやっています。また、最近は関数型言語(Erlang, Haskell)を勉強中です。
::サカイ
::「いつになっても、Ruby初心者です。
::今年最後の学生生活を学生という身分をフルに活用して満喫したいです!」

:配布資料 & 演習課題解答例:
::{{attach_anchor(print.pdf)}}
::{{attach_anchor(slide.pdf)}}
::{{attach_anchor(answer.pdf)}}

!!! 「丸投げシリーズ: Ruby + Win32OLE + Adobe Illustrator」 by 志村さん
:セッション概要:
::Ruby から Adobe Illustrator を操作して図や絵を書くことについて解説します。
::マウスで図を書くのは難しいものです「座標なんて三角関数で計算すればいいのに。コンピュータだったら座標計算くらい機械がやれよ !」
::
::[[Adobe Illustrator CS2 体験版|http://www.adobe.com/jp/products/illustrator/demodnld.html]]

:プロフィール:
::学生時代は京都に 15年くらいいました。今は印刷会社に勤める (Web系) プログラマーです。
::
::ちょっと前のはなしです、折り紙の図が欲しいと頼まれました。後工程のイラストレーターさんやデザイナーさんのために、 Adobe Illustrator 形式のファイルが望ましいと言われました。
::
::もう、Ruby でやるしかないと思いました。


!!! 「RubyKaigi2007レポート」 by 有志一同
:セッション概要:
::RubyKaigi2007の様子を、参加者がレポートします。

!!! 「純粋関数型言語Ruby」 by 氏久
:セッション概要:
::Ruby初心者に送る、純粋関数型言語Rubyの入門。Hello, Worldから遅延評価・部分適用まで。

!!! 「30分で分かる継続の使い方(仮)」 by yharaさん
:プロフィール:
::yhara
::[[京大マイコンクラブ|http://www.kmc.gr.jp/]]に所属する大学院生。
::RubyとはC Magazineのスクリプト言語特集で出合って以来6年目の付き合いとなる。
::代表作はたぶん[[Ruby/SDLスターターキット|http://mono.kmc.gr.jp/~yhara/w/?RubySDLStarterKit]]。


!! 懇親会
:日時:2007 年 6 月 16 日 (土) 18:00〜(予定)
:場所:[[酔心 京都駅前店|http://www.suishin.co.jp/suishin/]]
:会費:およそ社会人:学生 = 2:1 の比率でご負担ください。前回は 3500 円、2000 円でした。
:締切:2007 年 6 月 15 日 (金) 17:00 まで

//!! 参加方法
//# まず [[Rubyist SNS|http://jp.rubyist.net/sns/]]に新規登録
//# 登録されたら Rubyist SNS にログイン
//# Ruby関西コミュニティに参加
//# [[Ruby勉強会@関西-16のイベント|http://jp.rubyist.net/sns/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=61]]に参加登録
//# [[Ruby勉強会@関西-16懇親会のイベント|http://jp.rubyist.net/sns/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=60]]にも参加登録(出たい方のみ)
//
//'''Rubyist SNS への参加や Ruby 関西コミュニティへの参加だけではイベント登録は完了していませんのでご注意ください。''

!! ログ
!!!丸投げシリーズ: Ruby + WIN32OLE + Illustrator by 志村さん

Illustratorでプレゼン作成中、大きい文字が出ては消えていく。

:実例:
::豆本。
::実物をまわす。

:自己紹介:
::欧文印刷という会社でプログラマ。
::印刷受発注、自動組版など。

:作品紹介:
* 漫画のキャラクタ
**  http://www.geocities.co.jp/technopolis9587/chiyochichi/tiyotiti.htm
** この頃はまだ Ruby/GD だった
* ハロの展開図
** http://www.geocities.co.jp/technopolis9587/rubyillustrator/halo/halo.html
** これはもう Illustrator/Ruby。以下も
* 雪の結晶
** http://www.geocities.co.jp/technopolis9587/snow/
* かえる
* 猫

:はじまり:
::早川文庫JA、北野勇作著「どうぶつ図鑑」
::動物折り紙の展開図がほしい、後工程にデザイナさんがかかわるので、Illustrator形式でほしいといわれた。
::Illustratorがスクリプトで操作できる。Rubyでやるしかない。

:コードの説明:

  @illustrator = WIN32OLE.connect Application
  @document = @illustrator.Documents.Add AiDocument
  @magenta = WIN32OLE.new CMYKColor
  @magenta.Cyan, @magenta.Magenta ... = 0, 100, ...

  @document.Layers.Add.Name = ...

* Adobe系のアプリケーションはWIN32OLE.connectでつなげるのがよい。
** Illustrator を WIN32OLE.new で生成すると、95-Me系ではちゃんと生成できなかったり、NT系では可視性に問題が出たりする。
* 文字のスタイルを指定するときは、TextRangeというオブジェクトを使用する(ver10)。(CS以降では (TextRange.)CaracterAttributes)
* RasterImage?で画像を貼り付けられる。

    if $0 == __FILE__

* ActiveScriptRubyはテンポラリファイルを作って実行するので、↑が使えないらしい。
** デスクトップやどこかでの、右クリックからの Run...起動は、cscript や wscript 経由の起動になり、__FILE__ が RSC\h+.tmp.rb みたいな感じになります。ダブルクリックや Open での起動、コマンドラインからの起動なら従来通りで大丈夫と思います。

:MyBooks.jp:
::ブログを本にするサービス。
::http://mybooks.jp/

::WebObjects+Java

::豆本サービスを企画中。


:参考サイト:
* [[Win32OLE 活用法 【第 4 回】 Adobe Illustrator|http://jp.rubyist.net/magazine/?0006-Win32OLE]]
* [[ActiveScriptRubyでIllustrator10|http://www.geocities.co.jp/Technopolis/9587/rubyillustrator/memo.html]]
* [[Developer Resources|http://partners.adobe.com/public/developer/photoshop/sdk/index_scripting.html]]
* [[Illustrator10 自動化作戦|http://www.amazon.co.jp/Illustrator10%E8%87%AA%E5%8B%95%E5%8C%96%E4%BD%9C%E6%88%A6with-JavaScript-%E5%8F%A4%E7%B1%8F-%E4%B8%80%E6%B5%A9/dp/4839913544]]
* [[イラレで便利|http://d-p.2-d.jp/ai-js/]]

:もっとデモ:
* 雪の結晶
* IllustratorでERb。LLのお題?
** LLDN キミならどう書く「Ruby」(規定演技)の発表資料
** http://ll.jus.or.jp/2005/files/IlluCalc-LLDN2005a.zip

:質疑応答:
:Macでも使いたい:
::[[RubyOSA: Ruby/AppleEvent Bridge|http://rubyosa.rubyforge.org/]]とかJavaScriptとか。
::JavaScriptだと、OS周りの機能が使えない。

:変なプロセスが残ったりしない?:
::手で消したり、コマンドラインツールが増えたのでそれを使えばよい?
"" Tasklist:
"" ローカル コンピュータまたはリモート コンピュータのどちらかで実行されているすべてのタスクについて、アプリケーションとサービスの一覧をプロセス ID (PID) と共に表示します。

!!!! 参考資料
: プレゼンソース :
:: {{attach_anchor(RubyOleIllustrator.rb)}}
# 当日の物とは若干の修正があります
** 「I」と「l」の見分けがつくようなフォントにしました
*** その際、字詰めや表現等若干の修正をしています、ロジックも
# 実行はなかなか難しいと思います、ごめんなさい
** 指定のフォントがないとエラーになり、実行が止まります
** イメージファイルはローカルパスにしています
*** きっとファイルがなくてエラーになり、実行が止まります
** ver 10.0.3 での実行しか確認していません
### CS2 体験版でも実行できるように改造しようかと思ったんですが、現在のコードでは両対応(フォントも大変) は難しいです、あきらめました。御免なさい。
### CS版でも駄目だと思います

!!! 「==30分==20分で分かる継続の使い方」 by yharaさん

時間の都合で30分から20分に短縮

:内容:
*継続って何?
*継続はすごい
*継続は危ない


:継続(continuation, callcc)って何?:
::プログラムは順次実行、分岐、繰り返しで構成されている。
::rubyは上記3つに加えてワープがある→このワープを実現するのがcallcc

:ゲームで考えてみよう:
::class Matsumotoというクラスがあるとする(Matsumotoは勇者の名前です)
*王様と話すとセーブ出来る
*死亡→セーブポイントから再開

:このセーブ機能を実現するのがcallcc:
::callccでセーブ
::cc.callでロード

  $cc = nil
  
  def test
    print 2
    callcc{|cc| $cc=cc}
    print 3
    print 4
  end
  
  print 1
  test
  $cc.call

*callcc{|cc| $cc=cc}で$ccに状態を保存(ccはContinuationクラスのインスタンス)
*$cc.callでcallccの次の行からを実行

*call時に引数を指定した場合、再開時のcallccの戻り値になる。


:継続はすごい:


::3重ループを一発で脱出出来る

  callcc{|cc|
         for
           for
            for
              cc.call
            end
          end
        end
        }

*throw,catchでも出来てしまうけど

:メソッドを少しずつ実行する:
::callccが呼ばれた時点でセーブしてreturn
::次回呼出時にセーブしたところから再開


:全探索を簡単に:
*Baker, Cooper, Fletcher, MillerとSmithは五階建てアパートの異なる階に住んでいる。
*Bakerは最上階に住むのではない。
*Cooperは最下階に住むのではない。
*Fletcherは最上階にも最下階にも住むのではない。
*MillerはCooperより上の階に住んでいる。
*SmithはFletcherの隣の階に住むのではない。
*FletcherはCooperの隣の階に住むのではない。
::それぞれはどの階に住んでいるか。
**元はSICPらしい

:その他:
::generator.rb
::ppp
**pデバッグを自動化する
**1.8.5以降では動かない

:継承は危ない:
::バグの温床になる

:まとめ:
::継続を使うとスパゲッテイコードが簡単に書ける
::処理は強力
::他人に読めないコードになりやすい
::楽しい、けど思いもよらないバグを生成
::将来なくなるかも…


!! コメント
*2007-06-16 (土) 22:48:05 mish : 初級者向けレッスン面白かったです。上級者のコードも見てみたい。
*2007-06-17 (日) 01:46:51 Raito : http://valkyrja.ddo.jp/~raito/hiki/?2007-06-16
{{comment}}

!! 反応リンク集

* trackback : [[[Ruby]Ruby関西勉強会第16回に参加 (会者定離で以降)|http://d.hatena.ne.jp/murase_syuka/20070620/1182347865]] (2007-06-20 (Wed) 22:57:57)
"" 先週の土曜日参加しましたけど、カエルでした。 猫もありましたけど、やっぱり蛙ですよね。 まあ勉強会の後の懇親会、気づくと回りがお酒飲まない人ばっかりみたいで、 一人でビール開けてました。 そのため家帰ると、直ぐバタンで床に寝てしまっていて一寸風邪気味*A* 教

* trackback : [[第16回Ruby勉強会@関西に行ってきた (Kanasansoft Web Lab.)|http://www.kanasansoft.com/weblab/2007/06/16ruby.html]] (2007-06-19 (Tue) 00:40:25)
""「Ruby 初心者向けレッスン第13回」の演習問題は以下の通り。 色々...

* trackback : [[Ruby勉強会@関西-16 (Nov's daily? report)|http://nov.tdiary.net/20070616.html#p01]] (2007-06-19 (Tue) 00:33:57)
""Ruby-15/Rails-8 と 2 度ほどスキップしたけど、RubyKaigi2007 で愛とパワーをもらったので、今回は参加。

* http://d.hatena.ne.jp/hakobe932/20070616/1182015552
* trackback : [[ MDD (サイログ。MiyakoとかRubyとかなんとか+Miyako ACCESS MAP)|http://d.hatena.ne.jp/cyross/20070617/1182076198]] (2007-06-17 (Sun) 19:30:21)
""  やっぱり勉強会でもMDDネタは受けていました。まじろう最強。 ・・・てか、アレ、マジでやるんですか?(謎)

* trackback : [[[Ruby][Perl]第16回Ruby勉強会とAMB (はこべにっき#)|http://d.hatena.ne.jp/hakobe932/20070616/1182015552]] (2007-06-17 (Sun) 02:39:18)
"" 第16回Ruby勉強会にいってきました。数少ない、うちがRubyistになる瞬間です。でも今回は割とPerlも書いてました。ごめんなさい。 だいぶメンバーも見慣れた感じになってきましたね。いろいろと情報交換や議論が行われるだけでなく、いろんなイベントもここのメンバーの中か

* trackback : [[【Ruby関西】RubyプログラムからJavaの匂いを消したい (プログラマの思索)|http://forza.cocolog-nifty.com/blog/2007/06/rubyrubyjava_93e5.html]] (2007-06-17 (Sun) 00:06:23)
"" 第16回 Ruby関西に行ってきた。  Ruby会議2007の話もあり、牛尾さ


// !! 会場設備とノートPCの持ち込みについて
// * 会場の教室には電源とLANコンセントが完備しています。無線はありません。
// * LANケーブルは、忘れず持参してください。
// * LANのDHCPは登録しないと使えません。
// ** 自分のノートPCをネット接続したい人は, konamiアットkyoto-wuドットacドットjp まで 氏名,PCのMACアドレス,OSをメールで知らせてください。(前々日夜まで)
// ** 登録はその回限りですから,毎回新規に申し込んでください。
// *  勉強会の当日にはネット接続が必須というわけではありません。Ruby がインストールされたPCさえあればたいてい大丈夫です。
// * 当日,ファイルの配布をご希望の方は, USB メモリをご持参ください。

// !! 名札について
// * 初参加の方々もいらっしゃいますので、名札をお持ちの方は是非/持参してください。もちろん名前を大きく書いて。通称もあり。

// !! ロガー・初級者向けレッスンTAの募集
// * [[KansaiWorkshopRequestParticipant]]

// !! バス運行ダイヤ
// [[プリンセスライン京都駅前行(土曜日ダイヤ)|http://www.css-c.com/princessline/11_12keitou.html#2]]

// [[プリンセスライン河原町行|http://www.css-c.com/princessline/index6.html]]