うかべん大阪 #9 実況


本日5月3日(日)、伺的ソフトウェア勉強会(うかべん) 大阪 #9 が実施されます。
というわけで恒例のテキスト実況をおこないますので皆様よろしく。


【この記事の内容について】
この記事は、私がスピーカーの皆さんの発表を聞き、自分なりに理解し、かみ砕いて書き下し(ていませんが)、感想を付け加えたものです。
(各発表の冒頭にある「概要」と末尾にある「感想」は、私自身の意見・感想です。)
とくに私の理解力不足により、スピーカーの皆さんが発表された内容と相違している可能性があります。
誤りや問題点がありましたら、コメント・拍手等でご指摘ください。
また、公式記録ではありません。ご了承下さい。


Ustream実況中】
http://t.co/qIPXq2IfV2 にアクセスしてください。

第一部 11:00〜

「新しい伺的勉強会のかたち」 - 畝傍 様

  • 概要
    • これからのうかべんについて
  • 基調講演「イベントのやり方」(初級)
    • 気合を入れる
    • ぶちあげる
    • 終わり。出来る。
  • ちゃんとしたやり方(その1)
    • 日時を決める
      • 該当ジャンルのイベントの開催日が被っていないかを確認。逆に被らせることで参加者が増えることも
    • 予算を決める
      • 無理のない範囲で。参加費設定時も注意。内臓を売るのは1回まで。
    • 場所を決める
      • 予算と相談しながら利便性のいいところを選ぶ。
  • ちゃんとしたやり方(その2)
    • 参加者募集する。
      • パンフレットやチラシの作成
      • 依頼する場合、現行作成に1ヶ月、校正1ヶ月、掲示に1ヶ月以上
    • 参加者募集は余裕をもってやること。キャンセル時の対応も要考慮(キャンセル締切日を設ける等)
    • パンフレット等は2〜3日は考えておけば間違いない
    • 開催予定日から逆算して動き始める
    • 不測の事態に備えて余裕のあるスケジュールを!
      • やってみて経験することが大事。小さいイベントからホップ・ステップ・かーるいし!
      • 過去に似たようなイベントを主催した人がいたら、話を聞いてみるのも役に立つ。(こともある)
      • うかべんの主催に聞いても何も出てきません。(by 主催)
  • お金の話
    • 部屋代、印刷代、その他消耗品代等で赤字にならないように計算
  • うかべんの現状
    • アクティブなスタッフはぽなさんと畝傍さんのみ→鋭意募集中
    • うかべん以外でも、オフ会・開発オフ・取材旅行オフ(遊び)等、いろいろなイベントを是非主催してください。
    • 次のうかべん(関西・その他地域)の主催は君だ!!!!!

伺かのための三角関数講座」 - ミラヤギコ 様

  • 概要
    • シェルを動かすmove関数での三角関数の書き方と三角関数の仕組みを頑張って分かりやすーく説明してみます。
    • 今回話すこと=「move関数(伺かの知識)」+「三角関数(数学の知識)」
    • 今回は数学再度からのフォローをします
  • 三角関数をわかりやすく…の前に、関数とはなにか?
    • 関数とは「なぞのはこ」です
    • 「なぞのはこ」は「何かを入れると」「(別の)何かが出てくる」
      • 何か入れたら何か返してくれるもの
      • 毎回同じ処理をしてくれる
      • 同じものを入れると「毎回同じ結果が返ってくる」
  • 数学の関数例
    • y=2x … 入れた数を2倍する関数
    • 前項の「関数の特徴」をすべてそなえている→関数
    • 三角関数も同じ!
  • 単位円上を動く点Pを考える
    • 図がないと説明できないのであとでスライドを見てください!(ごめん)
  • ここまでをまとめると
    • 関数:何かを入れたら何かが出てくる
    • 三角関数:「角度」を入れる
    • 半径1の円と点Pを使うをわかりやすい
    • sinは三角形の「たて」、cosは三角形の「よこ」
  • 質問
    • 里々で使えるのか?→里々はyayaの関数を借用する必要がある。灯(あかり)は今は単体で可能

第二部 12:50〜

「3Dで行こう!」 - yasi 様

  • 概要
    • 3Dシェル描画モジュール「Uka3D」について。
  • 2000年以降のゲーム等コンテンツ。
    • 3Dコンテンツが増加。リアルタイムレンダリングによる高品質アニメーションが使われるようになった。
  • もし、3Dシェルが使えたら?
    • 「可愛い仕草」「ゲームのような動き」「めくるのではなく、そっと覗..」
    • →「Uka3D」を使ってみよう!
    • 4年前の「うかべん横浜 #7」にも関連発表あり → http://d.hatena.ne.jp/hinoharu/20111009 「お楽しみ枠」

ーUka3Dの概要

    • 3DモデルをShellとしてリアルタイムレンダリングを行うモジュール。
    • SAORIとしてゴーストに組み込む。本体サーフェスウィンドウと半連動して稼働。
    • テストゴースト「MIKUさんDay's」で公開中。SAORI単体公開を実施。
  • 目的
    • 3D描画による安価なアニメーション表現を実現し、新たなキャラ表現を実現。
    • 一定のプログラミング力が必要であった3Dデスクトップマスコットの作成を安易に。
    • MMD界などからの新たな人材の取り込み。
  • デモンストレーション(MIKUさんDays)
    • 配布版は少し古いバージョン。新バージョン0.2は多ゴースト(多キャラ)立ち上げられるようになっている。
    • きせかえ機能も実装
    • ランダムトークはないが、かわいい仕草をする。新しい表現。
    • https://twitter.com/hinoharu/status/594714373160996864 多キャラモード
  • システム(概要)
    • 描画コア:DirectX9.0C以降(DXライブラリ)
    • 3Dデータ:PMD、モーションデータ:VMD(MMDで利用されているデータ形式
      • MMDの3DデータはPMXに変わりつつある。PMXも読めるが、上位互換部分の機能は動作しない。
    • Surfaces.txtに代わる独自規格の定義ファイル、Character.txt等を使用。
  • システム(構成)
    • 構成図 https://twitter.com/hinoharu/status/594715434496053248
    • Uka3Dでも2D仕様のsurface*.pngなどを保持しているが、ダミーファイル。(黒画像)
      • 旧来のサーフェスウインドウに重ねて3Dモデルを描画している。
    • GhostフォルダにSAORIとしてdllを保存。Ver.2では「Uka3D_Proxy.dll」と「Uka3D.exe」に分けている。
      • キャラクターの数だけ「Uka3D.exeのプロセスが立ち上がり、Proxy経由で本体と通信」
    • Shellフォルダの中に「Uka3D」フォルダを配置し、中にキャラクターデータ・3Dデータ・テクスチャ・アニメ等を保存
      • Uka3DのpmdファイルはDirectXの仕様で「連番」でなければならないが、使いやすさのため、「Character.txt」でエイリアス番号を割り当てしている
    • https://twitter.com/hinoharu/status/594716726517837826
  • システム(通信)
    • 既存のダミーウインドウとUka3Dウインドウの間でデータを通信
    • 起動時:既存ウインドウ→【位置情報】→Uka3Dウインドウ
      • Uka3Dウインドウの作成時に既存ウインドウのWHNDを要求している(?)
      • 前回終了位置をUka3Dレイヤーで保存するのが面倒なので、毎回位置情報を要求
    • 起動後:Uka3Dウインドウ→【マウスイベント、位置情報、Zオーダー】→既存ウインドウ
      • クリック時にバルーンも手前に出てきてもらうためにZオーダーを利用
      • Zオーダーは制御できるときだけしている。「常に手前に表示」には未対応。※SSP本体の「常に手前」と併用のこと
    • Uka3Dウインドウ(Uka3D.exe)だけでなく、Uka3D_Proxy.dll も本体SSPにデータを送っている。(DirectSSTPなど)
      • 複数キャラクターからまとめて本体でデータを受け渡ししないといけないときはproxy経由
  • 定義ファイル
    • 既存のsurfacestxtと同じような書式。
    • アニメイションさせることを前提としたシステム。
      • ループアニメ指定可能(アニメの最初と最後を同じポーズにする)
      • 次に再生されるアニメーションが指定可能
      • モーションA・B間のブレンドアニメーション(モーフィング)設定
    • コリジョン設定ではマテリアルIDを指定する。
      • 3Dの部品のIDみたいなもの
    • 着せ替えのかわりにアクセサリ設定が可能。
    • アニメーションの構成→3つの部分。「動きのある最初の部分」「ポーズ部分」「元に戻る部分」
      • ex.「ビックリして」「固まって」「もとに戻る」→一連の設定を指定することができる
  • 辞書での実装
    • すべての開始イベント(起動、切り替え受け等)でcreateリクエストを実行。
      • createリクエストの引数に「イベント名」を含めることができる→On3DBootのref0で帰ってくる
      • ref0で分岐可能
      • uka3Dウインドウを作る→初期準備を終えたらOn3DBootイベントを返す。
    • すべての終了イベントで明示的アンロード、もしくはallresetリクエストを実行する必要がある。
      • 基本的に、Shioriは終了時にSAORIを自動的にはアンロードしないので、これをしないとUka3Dプロセスが残ってしまう
    • On3DMotionChange (2DでいうOnSurfaceChangeと同じ働き)で通知されるモーションIDをもとに、次に再生するべきモーションIDをリクエストする
  • 課題
    • Character.txtを記述するためにDXライブラリ付属の「DxLibModelViewer」が必要。マテリアルIDを調べるのに使う。
      • 今後、開発ツールに上記ソフト同等の機能を実装する必要がある。誰かやってください。
    • 起動中、ウインドウサイズの変更ができない。(シェルサイズを変更したい、等)
      • 本当は変更できるが、DXライブラリの初期設定を破棄→再読み込みする必要がある。資料を読み込みきれていない。
    • 多キャラ対応したことで更に定義ファイルの企画策定が難航中。一人で決めるのは大変。
      • 実際にゴーストを作ってみるしかない。
      • 仕様公開後に大幅な仕様変更をかける可能性も否定できない
    • SAORIでの実装には限界はある。
      • ex.更新時、SHIORISAORIをアンロードするため、更新時はキャラが隠れてしまう
      • できればSAORIの枠の先を目指したいが…SERIKOの切り離しができれば…(ここでぽなさん逃亡)
    • ※2012年当時のやりとり
      • 現在2Dで表示されているゴーストに3Dの追加シェルを作ることはできるか?
      • SERIKOシステムの切り離し仕様に依存するものと思われる。が、おそらく作れるでしょう。それを考えて作っている。(ぽなさん談)
  • 今後の展開
    • 最低限の規格策定後、単体・仕様の公開(専用サイトの開設)
    • テンプレ用サンプルゴーストの作成
    • 3Dシェル支援ツールの作成
    • モデル本体以外の描画(エフェクト等)
  • 企画の策定には皆様の協力が不可欠!今後ともご協力をおねがいします。
  • 質疑
    • 物理演算はリアルタイムなのか、ベイクされているのか?
      • MIKUさんDaysではベイクしていない。(ベイクすることもできる。読み込みが若干遅くなるが、起動後の計算量は減るので軽くなる)
      • 物理演算は入っているが、使うか使わないかデベロッパが決められる。MMD側で定義されているアニメーション(髪の動き方など)はそのまま動く。

「よろしくUKADOC -実写版-」 - もっしょくし 様

  • UKADOCとは?
    • 「Disc2の文章を基盤に、散逸しがちな伺かの仕様文書をできるだけ集めるプロジェクト」
      • いろいろな人が作ったものを集めて一つの作品を作るため、仕様がまとまっていることが大事
    • 伺か関係の仕様文書集約プロジェクト。および、その成果物としてのドキュメントのこと。
    • SSP公式仕様文書 (※materia、CROWなどの公式文書ではない)
    • サブプロジェクトとして、SSPのヘルプのメンテナンスも実施
      • 現在はヘルプが完全オンライン。オフラインヘルプも整備したい
  • 誰が管理してるの?
    • 「特定」多数共同の管理(コミッタ制)
      • メリット:手がいっぱいある。個人管理のものは情報が古いまま更新が止まってしまったものがある。
      • メリット:Wikiと違い特定管理なので荒らされにくい
    • Ownerは2名(ぽなさん、緋龍華さん)
    • Committer14名(もっしょくしさん、畝某さん など)
  • Disc-2との関係は?
    • Disc-2(緋龍華さん管理)とデザインが似ている→許可を得てデザイン提供いただきました
    • 情報はukadocのほうがup-to-dateなのでぜひご利用ください
  • どう使ったら便利?
    • ページ内容の概要が記載されているので熟読のこと
    • 「記述例」を追加しているので、SSPのSendboxから本体にスクリプトを投げるとサンプル動作させられる(powered by あーるでぃ様)
    • ex:\_bタグの実演。画像をbase64エンコードした文字列を与えてインライン表示するサンプル。かっこいい!
    • ex:ShioriEventのサンプル。OnMouseDoubleClickイベントのリファレンス(引数)の意味を調べてみる。便利!
    • 現状では辞書のような使い方を想定だが、将来的には「教科書」にもしたい。ukadocを見ればゴーストの作り方のツカミを理解できるようにしたい。
      • あまり教科書成分を強くし過ぎるとサイトの軸がぶれるので、「参考書」レベルには濃くしたくない
  • 今後の予定は?
    • 各仕様概説をきちんとまとめる
      • 「駄でべ」にあるSSPの仕様文書を引き上げる(ただしこれはもともとの伺か仕様とSSP仕様の差分でしかない)
      • うさださくら」の根本仕様を補完。ukadocだけ見て全体がわかるようにしたい
    • SHIORI/3.1
      • SSPの仕様をSHIORI/3.1として新しく定義してはどうか?という話
    • もっと根本的な用語定義がほしい(うさださくらにはあるが…)
      • 伺か、GHOST、SHELL など
    • SERIKO描画メソッドなどに図解を追加。
      • Overlay、Replace などをわかりやすく
    • さくらスクリプト以外にも凡例を追加したい
    • 助けてくださるかた募集中!
      • Committerにならなくても良い、画像の編集とか手伝ってくれるだけでok
    • Google Code終了に伴い、GitHubに引っ越し予定
  • 誤字報告や要望はどこへ?
    • サイトのヘッダにある「報告・連絡」ボタンから、SSP Bugtraqの「Todo(SSP以外)」へ!
  • まとめ
    • UKADOCは(SSPの公式)仕様文書集です
    • UKADOCは現在進行形のプロジェクトです
    • UKADOCへのリンクをよろしくお願いします
      • (TIPSを外部記事で書いたときにリファレンスとしてリンクを貼ってもらえると嬉しい)
    • UKADOCはあなたのコミットをお待ちしてます
  • ところで
    • マスコットキャラクターがほしいのですが
      • UKADOG(犬)っていう名前だけ思いついたので、どなたかシェルと辞書書いてください!(安心と信頼の丸投げ)
  • 質疑
    • 「\p[x]タグのサンプルで文中の「\0」がエスケープされてないが?
      • \が抜けています。某あーるでぃーさんを叱っておいてください(byもっしょくしさん)
      • 治りました。(byぽなさん)
    • 万一に備えてうさださくらをバックアップ(保存)しているか?
      • 個人的には念のためしている。
    • Committerになるにはどうしたらいいですか?
      • ぽなさんに言えばもれなくなれます。

「『さとりすと』里々ゴーストの統合開発環境をつくったよ」 - ななっち 様

  • 概要
  • 統合開発環境とは・
    • ゴーストを作るのに必要なものを色々集めたもの
      • 例:SSP+メモ帳、FFFTP、フォトビューアー、さとりて、れしば、エクスプローラ
      • SSP以外のすべてを「さとりすと」で!
    • 画面例
  • (特長1)辞書のリスト
    • 「同じ名前で」「同じ名前と条件で」トークを追加するようなことが簡単にできる。ランダムトークリストを作れる。
    • 辞書を直接編集することもできる。
      • 初回起動時にどちらにするか尋ねられる。あとで変更も可能。ファイルごとに変更も可能。
  • (特長2)デバッグ機能
    • 「さとりて」を使わずに、書いたトークをそのままゴーストに喋らせられる。(コピペ不要)
    • 変数の確認と設定、リロード、イベント呼び出しが「さとりすと」から可能。いちいちデバッグ処理をゴーストに組み込む必要がない
    • 「れしば」を内部に持っているので、新たに起動する必要がない
  • (特長3)設定ファイル編集機能
    • satori_conf や developer_options をリスト形式で編集することができる
    • 更新ファイル設定なども可能(削除ファイル等の設定)
  • (特長4)更新アップロード機能
    • FFFTPなどを起動しなくてもOK(自動化システムと同じ機能)
  • (特長5)立ち絵確認機能
    • シェル合成もやってくれるため、別に画像を用意する必要がない
    • サーフェスパレット」も作れる
  • (特長6)さわり反応領域表示・編集
  • やってみたいこと
    • 里々との直接連携
      • 里々本体に「さとりすと」連携専用の機能を搭載して、デバッグをより手軽にしたい。(変数一括取得など)
      • 「さとりすと」専用の機能をつけてもいいのかな…→ぽなさん「いいです」(1秒)
    • リクエスト対応
      • 需要に応じて機能を拡張する、など。いつも使っている人の意見を聞きたい。
      • バグが出てきたら修正します
  • まとめ(一番いいたいこと)
  • -
  • おまけ
    • ゴースト配布サイトジェネレータ
      • HTML/CSSを一切書かずに公開サイトを作れます。配布サイト→
  • 実際にやってみた(デモ)
    • スクリプト作成支援機能(サムネイルをダブルクリックでサーフェス番号入力など)
    • 更新ファイルアップロード機能(誰も気づかないくらい一瞬で更新完了→自動ツイート)
    • ukadoc連携、SHIORIイベントリファレンス表示機能
    • 「さとりすと」自動アップデート機能
    • ゴースト新規作成ウィザード
    • その他、痒いところに手が届く機能満載!(めっちゃすごい)
  • 質疑・要望
    • ワンクリックでウエイト挿入できないか?
      • 右クリックメニューをカスタマイズ可能です
    • REPLACE と REPLACE_AFTER の色分け?
      • 設定で可能?
    • 今出来ないけどそのうち実現したいことは?
      • サーフェスプレビューの精度が悪いので、ukadocの拡充してほしい
    • 一部処理で速度が出ない
      • 里々本体との連携ができれば最高
    • 自動でネタを考えてください
      • 恒例なので気にしないでください(ぽなさん)
    • 設定のエクスポート・インポート機能ほしい
      • 全部の設定でよければ設定ファイルを複製してください
    • プラグイン作りたい
      • 入出力まわりの仕様を教えてもらえれば対応したい
    • すでに里々で作っているゴーストを読み込んで編集することもできるか?
      • できる。最初からさとりすとで開発している必要はない。
      • すでに機能をつくりこんだゴーストも読み込めるのか?
      • 可能。さとりすと専用のゴーストになることもない。
    • \eのあとをコメント扱いにしてほしい(\eでトークとしては終了するが、あとにコメントをつけることがある)
      • 「//」と同様の扱いにすればいいのかも。できればやる方向で。

「"ゴーストプレイヤー フロムウエブブラウザア"」 - duxca 様、奈良阪某 様

*奈良阪某さんパート*

  • なぜ作ったか?
    • スマートフォン全盛時代にデスクトップの消滅危機
    • ゴーストが立つ場所がなくなる→やばい
    • Windowsデスクトップ依存からの脱却→ブラウザ上で動作させたい
    • 伺かという創作表現の存続を図るために開発
  • なぜ作ったか(2)
    • 先発のSSP等よりもよりよい設計のものが作れるかも?
    • SSPが動かない環境を制覇することがSSPに淘汰されない唯一の道である
  • どう動くのか
    • システム構成図
    • シェル系・イベント処理系・ファイルシステム系・SHIORI系に別れている
    • 存在するファイルからSHIORIを判別する(栞プラグインを利用)
    • シェルとバルーンを起動(duxcaさん担当)
    • 「こういう動作がおこなわれたら」「イベントを発生させる」という処理をプラグイン方式としている
    • 以降、ベースウェアの動きの話を始められる(SSPなどもやっていること)
    • (イベント発火チェーンの開設)→OnBoot発生→さくらスクリプト発生→サーフェス表示!(拍手)
  • 課題

*duxca(ダクスカ)さんパート*

  • ゴーストプレイヤー フロムウエブブラウザア
    • 伺か互換環境の人
    • ウェブブラウザで動くシェル描画エンジンを作戦(CATTLEBONE、イカの殻=如何かのシェル)
  • なぜウェブブラウザで動かすの?
    • 最近ゴーストを起動していない理由?
      • ゲイのサディストだから
      • ではなく、Windowsを使っておらず、パソコンを持っておらず、パソコンを使ってないから
      • 最近の若い人はWindows離れが著しい…が、どれも「Webブラウザが動いている」
    • WEBブラウザで動く=移植性が高い!
    • そしてCUTTLEBONEとは…伺かを多様化するコンピュータ環境に潜り込ませるための技術
  • どういうしくみなの?
  • どう使えばいいの?
    • 描画エンジンを叩く必要がある
    • 再利用も可能
  • まとめ
    • Webブラウザでシェル病がするライブラリを作った
    • IKAGAKA SHELL APIで抽象化
    • 再利用してください!(いろいろなところで活用してね!)
  • 質疑
    • 作った動機は?
      • (duxca)ゴースト配布ページのサンプル画像を(ゴーストのように)動かしたかった!
      • (奈良阪)ブラウザをベースウェアにしたかった!
    • 描画系とベースウェア系に分けてあることでどんな活用ができるか?
      • ユーザが投稿したトークをブラウザで再生したりできるようになる
    • ページをブラウジングしながらゴーストをいじることはできないのか?(専用タブでなく、任意のタブに立たせたい)
      • Chrome Extention などを使えば実現できるかもしれないが、今のところ不明。
      • ぶっちゃけJavascriptが動くならどんな動かし方もできる
    • SAORIの実現のめどは?
      • オープンソースSAORIがあまりないので、Javascriptで再開発する必要がある。それをするリソースがない。
      • SAORIのインターフェースをどうするかが未定。(Windows上であればdllとして読みこめばいい)
    • (ぽな)いまどきアンマネージドDLLはないよね(と10年前から言っていた)。SSPは過去互換をしながら維持している間に、クリーンな実装が出てくるのを期待していたが、これで実現してしまっている。
    • 開発者側からみてDLLは鬼っ子。できれば脱却したいが…。
      • たとえば「ゴミ箱を空にする」を実現するのに、ブラウザだと各OS用の処理が必要になる。課題。
    • 先の発表のUka3Dとの連結は?
      • Uka3D仕様をCUTTLEBONE上で実現すれば可能では。
    • WebArchiveやウェブ魚拓の中でもゴーストが動くってロマンじゃない?
      • WebArchiveはデータが飛ぶからどこでも動くようにしようよ
    • プラグインカプセル化で実現できそうなこと
      • Ikagaka Shell APIの先に物理ロボットをつなげばリアルシェルも実現可能!?
      • 合成音声バルーンも実現可能!?
    • ぽなさんのコメント
      • すげぇ。
  • おわび
    • 若干まとめきれてない部分があるので、詳しくは発表資料を参照してください(ヒノハル)