お知らせ
本日5月4日(祝)、伺的ソフトウェア勉強会(うかべん) 横浜 #5 が実施されます。
ここんとこ何度かやっておりますテキスト実況ですが、
今回もがんばってみようと思います。
順調にいけば正午頃から開始しますので皆様よろしくどうぞ。
【この記事の内容について】
この記事は、私がスピーカーの皆さんの発表を聞き、自分なりに理解し、かみ砕いて書き下し(ていませんが)、感想を付け加えたものです。
(各発表の冒頭にある「概要」と末尾にある「感想」は、私自身の意見・感想です。)
とくに私の理解力不足により、スピーカーの皆さんが発表された内容と相違している可能性があります。
誤りや問題点がありましたら、コメント・拍手等でご指摘ください。
また、公式記録ではありません。ご了承下さい。
【お知らせ】
- 修正・加筆が必要な場所がありますが、諸般の事情のため作業は16日以降になる予定です。
- 画像・動画のアップロードもしばらくお待ちください。
前半の部
「システム開発から見たゴースト開発」 - フィーネ・ラグサズ
- 前説
- 今回で横浜も5回目。なんか気分いいですね!
- 懇親会参加率も9割以上!にぎやかになるといいですね!
- 概要
- システム開発の流れ
- 要件定義=どんなものが欲しいのか整理すること
- 基本設計=どんな形(インタフェース、データ形式)がいいかを大まかに設計すること
- 詳細設計=基本設計を元にして細かく画面や機能の設計図を書くこと
- 実装=プログラム本体を作る。コーディング、リソース作成
- テスト=バグ探しと修正、一番大変とも言われる
- リリース=完成。納品。この後契約に応じて修正や機能追加もある
- ゴーストの開発にあてはめると…?
-
- 基本設計・詳細設計=性格は?シェルは?搭載機能は?SHIORIは?ねとわくは?
- 本来なら設計図を書くのだが、ゴーストではそんなの書かなくてもOK
- 基本設計・詳細設計=性格は?シェルは?搭載機能は?SHIORIは?ねとわくは?
-
- 実装・テスト・リリース=そのまんま。
- とくにイベント等はテスト必須(しないとどうなるか身を持って知った)
- 実装・テスト・リリース=そのまんま。
- 応用できそうなこと
- 辞書を書くときに役に立ちそうなネタ
- わかりやすい名前をつける
- 書き方(コーディング)に規則性を持たせる
- コメントをつける
- 辞書を書くときに役に立ちそうなネタ
-
- 関数などにわかりやすい名前をつける
- 一文字変数はやめよう( a, i, hensu1 )
- 意味のある単語を使おう( useNm=ユーザー名 )
- →意味が通る範囲で母音を省略するなどして、短い変数名にするのが通例。
- 関数などにわかりやすい名前をつける
-
- 書き方に決まりをつくろう
- 改行やカッコの使い方を全体で統一する。辞書の書き方はかなり自由度が高い。
- 書き方に決まりをつくろう
-
- コメントをつけよう
- だいたいの栞では辞書にコメントを挿入できる。実行時は無視されるので何を書いてもいい。
- 「明日の自分は今日の自分とは別の人」といいます! 一年後に見返すとコメントなしでは理解できません
- 関数の機能、引数の定義、if条件の中身(ここはどんな条件?)
- コメントに愚痴とか書くとユーザにも読めるので注意!
- コメントをつけよう
- まとめ
- システム開発の流れとゴースト開発の流れは似ている
- 段階を追って考えるやり方は流用できる
- 辞書を書く際はルールを決めると読みやすくなる
- 名前はわかりやすく
- 書き方に規則をつける
- コメントをつける
- システム開発の流れとゴースト開発の流れは似ている
- 質疑応答
-
- ループに i とか使うのは?
- その場限りで短い変数を使うのはあり。( for ($i=1;$i<$length;$i++)
- ただ、たとえば好感度を「$L」などで表すのは好ましくない。後で見て意味がわからない。
- ループに i とか使うのは?
- 感想
- コメントアウトで使わなくなったコードを隠したりしますが、本当はあまり良くないのですよね…。
「Ghostの設計と進化」 - C.Ponapalt
- 自己紹介
- 伺かデータランタイム「ベースウェア」SSPの現開発者(初代はDoiChan!氏)
- http://ssp.shillest.net/
- 通称「所長」「バグのひと」もはやエンバグが持ちネタ
- 概要
- 全体構造の外観(おさらい)
- (全体概要)
- (外部通信)
- 見た目(Shell)と中身(Ghost)の分離
- 互いの制御は「本体」を介さないとできない(制御用はSakuraScript経由)
- 昔はShellしかなかった
- 元々はShellが複数、Ghostは1つだった。(口調語尾変更機能はこのへんがモト)
- 内部処理用実装(Shiori、Saori、Makoto、Plugin)…中で何をやっているのか?
- 中身はただのDLL。(細かいことはスライド参照)
- インタフェース(戸口)は「load、unload、request」の3つのみ。
- うち、本当に働いているのはrequestのみ
- BOOL load(HGLOBAL h. LONG len)
- hの中身は「データを読み込むパス」へのポインタ、通常DLLの場所と同じ
- lenはパスの長さ。(hは冒頭の場所だけを示しているため、パスの長さを指定)ゼロ終端ではない
- ゼロ終端であること前提の処理をするとDLLが原因で落ちることがある。
- ただしSSPではこっそり最後に\0をつけてるので大丈夫
- BOOL unload(void)
- 解放時に呼び出される。
- 失敗(返値FALSE)でも誰も面倒見ない(あとは野となれ山となれ)
- 中身はただのDLL。(細かいことはスライド参照)
- 利点欠点
- 利点=とにかく超高速
- プロセス間通信やソケットやその他複雑な仕組みは一切ないので高速
- 同じメモリ空間内でデータを行ったりきたりさせるだけ(YAYAの関数呼び出しなんかより全然速い)
- 実装もずいぶん楽
- 欠点=子亀こけたら親亀も…
- DLL内で不具合があればアプリごと落ちる
- DLLを別プロセスにすれば大丈夫(ex.Google Chrome)だが、互換性が…
- 別プロセスにすると、たとえばosuwari.dllなどは動作しない。(他のウインドウの情報を得られなくなるため)
CROWはそういう実装
- 利点=とにかく超高速
- その他終端
- 続きはウェブで!(流されました)
- なぜゼロ終端ではなく長さ指定なの?
- なぜ _cdecl なの?
- そのた
- 外部との通信(SSTP = Sakura Script Transfer Protocol)
- SocketSSTPとDirectSSTP
- DSSTPの仕組み
- IPC用ウインドウメッセージを打ち込む
- SendMessage(相手先hwnd, WM_COPYDATA, 自分のhwnd,COPYDATASTRUCTポインタ)
- IPC用ウインドウメッセージを打ち込む
- 現状の問題点
- キャラリナ
- Apricot
- デジタルスプライト(ぐぐれ)
- まとめ
- 機能強化
- ゆるい結合の利点
- 疎結合の利点を損ねない拡張
- ゆるい結合の利点とは
- 柔軟なデータの変更(追加Shellとか)
- 開発が楽な「まるなげ」構造」
- 同時に考えなくてはいけないものが少なくてすむ
- 「イベント駆動」、「Model-View-Controller」→開発を楽にするための一般的構造
表示部分、データ部分、それらを制御する部分にわけられる - 「オブジェクト指向」の根幹にも通じる
- 機能の強化
- 表現力強化
- 「ふきだしアニメーション」「バルーン内のリッチテキスト」「Shellにテキスト入れたい」
- こういう拡張は「結合がゆるいまま」、する必要がある
- 動的Shell定義機能、噴出しへの過度な拡張などはちょっと危険
- そのような点を重視しながら開発をしている。ので、機能要望する側もすこーしだけ考えてね!
- 表現力強化
「例の検索システムを里々で作ってみた」 - yamagashi
- 「例の検索システム」とは?
- うかべん横浜#4でのないんないん氏の発表(http://d.hatena.ne.jp/hinoharu/20091108)
- ゴーストが検索語句を受け取り、googleの検索引数につっこんで、ブラウザのかわりに検索をする
- 返ってきたHTMLを解析し、ユーザに提示する(もしくはブラウザで結果を表示する)
- まずメニューから検索エンジンを選択(google、yahoo、wikipediaなど)
検索エンジンに対応するURLはゴーストに内蔵されている。 - OnUserInputイベントを使用し、検索語句をユーザに入力させる
- 検索エンジンのURLとユーザの入力した検索語句を合成し、\![open,brouser,...]タグへ突っ込む
- エラー処理
- 入力された検索語句が""(なにもない)場合
- 例1)トップページURLを用意しておけば、トップページに飛ぶようにする
- 例2)ランダム用語で検索する(これだからマサオは etc)
- 入力された検索語句が""(なにもない)場合
- 質疑応答
- 検索結果表示をブラウザに任せるのではなく、ゴースト内でdigestして表示できないか?
- がんばればできるかも?やってみる。
- 検索結果表示をブラウザに任せるのではなく、ゴースト内でdigestして表示できないか?
「今日から役に立つ(かもしれない)豆知識」 - 神夜みゅん
- 概要
- SSPの一部機能をおさらい。
- 開発パレット=今や必須の機能!
- 利点
- サーフェス一覧が簡単にチェックできる
- エラーログ表示させバグ拾いができる。
- 当たり判定表示でシェル作成時にも確認可能
- 欠点?
- 常に表示させておくとちょっと邪魔!(ぽな「小さくする仕様書書いてください」)
- 利点
- 本体設定
- フォルダ設定(ゴーストフォルダ、バルーンフォルダ他)
- 利点
- たくさんゴーストをインストールしている場合、フォルダわけをすることでメニューから選びやすくなる
(ゴーストメニューが階層化されるのは初耳!)
- たくさんゴーストをインストールしている場合、フォルダわけをすることでメニューから選びやすくなる
- 欠点
- セーブ読み(Reta)を使っていたり、その対象となるゴーストを別フォルダにするとRetaが読んでくれない?
- ゴースト間でセーブデータを読み合ったりする場合(FSWなど)
- 本体設定-開発/その他
- (危険)って何?!
- 同じゴーストを複数起動できる。→セーブデータの書き換えが競合する、ファイル読み込み
- 同時に複数同じものを起動することは基本的に危険
- でもぽなさんはチェック入れてる。
- 使ってるぞグラフ
- ゴースト名のところで右クリックするとゴーストを呼び出すことができる
- 「データ削除」が並んでるので注意
- おまけ「Reta」って何?
「絵の描き方〜とりあえず手を動かしてみよう〜」 - こいずみ玲衣(rera)
- 概要
- 絵を描いてみたいけど難しそう、という人に、まずは手の動かし方をレクチャー。
- 大丈夫!できる!できる!諦めなければ大丈夫!(shuzo風に読んでください)
- すでに絵を描いてる人はお絵かきでもしていてください。
- 必要な道具
- アナログ=白っぽい紙、鉛筆(シャーペン)
- デジタル=ペンタブレット、絵を描くためのアプリケーション(ドローソフト)
- とりあえず練習してみる
- ただひたすらに円を描く。綺麗な円になるように意識しながら描く。
- 円がめんどうならうにゅうを描く。良いうにゅうになるように意識しながら描く。
- だけどうにゅうは難しい。
- 疲れたり飽きたらやめる。またやりたくなったらやる。
- こいずみさんの絵の描き方
- 描き始める前にどんな絵にするかぼんやり考える。
- 自分の中でなんとなく決まったら描き始める。ずっと考えててもダメ。
- (書き方の例画像)
- 塗り方とかはpixivで調べる
- イメージ通りにならないことの方が多い。気にしないようにしよう
- 描くのがつらくなることもある。そんなときは…
- 寝る。夜更かしや徹夜をしてたら休む。
- 別のことをする。好きなことをしながらまた描きたくなるまで待つ
- こいずみさんは空や建物の写真を撮ったりしてるそうです。気分転換に、絵の資料に。
- うまくいかない理由を考えるのはほどほどに。
- いろいろ考えるのはいいこと。でも、考えすぎてただの言い訳にならないように。
- まとめ
- 絵を描いてみたいと思ったら、その気持ちが消えないうちに何か描いてみる。円でもうにゅうでもOK。
- 年単位で放置しても大丈夫。完全に投げ出さなければ大丈夫。
- 最初は思い通りにならないかもしれないけど、描きたくなったときにまた手を動かそう!
- 質疑応答
- なんで○なんですか?
- 丸の方がなんとなくいいような気がするから?
- 丸は描くのがむずかしいし、ゆがむとすぐわかるから?
- 描いたものはすぐ人に見せるのがいいの?それとも自分の中でつきつめた方がいいの?
- うまくなりたいのか、楽しくやりたいのかによる。ほめられたい人はうまく出来たと思うのを見せていくといい。
- なんで○なんですか?
-
- 32bitPNGには対応しないの?
- してます。ただし互換性の関係でデフォルトではPNAのみ読み込む。
- 32bitPNGには対応しないの?
-
- いまの講座中にお絵かきをしていた方=3人
-
- (以下、明日香さんとぽなさんのやりとり)
- PNAファイルってなんのためにあるんですか?なんか容量食ってるんですが→PNGの中にアルファチャンネルを埋め込める環境が少なかった。
- PNAファイルがあるとどう違うの?→エッジがなめらかになる。透明度も変えられる。
- 消したらまずいの?→まずいです!!!!
- (以下、明日香さんとぽなさんのやりとり)
- 参考
- PNAを作るソフトウェア http://sakura.nanika.jp/software/maskalpha/ (TravelerJoe氏作)
後半の部
物語創作における「二人」の必要性 - りすな
- アバターとしての\0または\1
- 偏った話題をするなら相方にアバターを配置する提案
- トークは異常のまま終わらせない
- ex.「鉄の夢」→もにゅうの一般的視点が大事(栄子の普通じゃなさを明らかにさせるツッコミの役割)
- 「異常」のまま終わるトークが多いと、世界観の中で何が正しく何が間違っているのかがわからなくなってくる
- 非日常から日常に戻す物語というものが多い
- ex. ドラゴンボールZ 地球の危機=非日常、平和な地球=日常)
-
- 逆に、日常→桃源郷→日常 という話もある。(舌きりすずめ)
- 「おじいさんはすずめと幸せに暮らしました」とはならず、いじわる婆さんのもとへ帰ってしまう
- 逆に、日常→桃源郷→日常 という話もある。(舌きりすずめ)
- 異常を指摘して異常をはっきりさせる
- 栄子:「その場で連中を全員始末して…遁走するのが最良」→もにゅう「そんなん出来るんはお前だけやって」
- →つまり、栄子は普通ではない(ことの確認をしている)
- さらに、「傭兵の中でも普通ではない」ことを確認している?
- だが、実はゴーストにアバターは不要かもしれない?
- しかし二人組にこだわる理由
- おまけ(余興)
ライトニングトーク
ACTING IS REACTING - 酔狂
- ゴーストというArtの両論
- ソフトウェアとキャラクタ・エンターテインメント
- ソフトウェア偏重ではつまらない
- 先達に学ぼう「気軽に輸入してみよう」「演技」
- Ed Hooks、「アニメーション教科書」「演技はリアクション、演技は行動」
- かわいい顔をして話すだけのゴーストではつまらない
- 何かのユーザアクションに対して行動を返すのが「リアクション」
- ユーザの行動に対してリアクションが帰ってくる、それを見てユーザがゴーストに対する印象を持つ。フィードバックの繰り返し。
- 世の中にはたくさんの知恵がある!活用しよう! ただし…
- 全部まるごと利用しない!
- メディアなどによる向き不向きを勘案し、ゴーストとしての表現を磨く必要がある
Present for ... 僕らにできること」 - おうせみなと
- 好きなゴーストのために出来ることって?
- バグ報告
- イラスト、SS、感想などを送る
- 追加シェル、専用バルーン、アイコン
- 音楽
- 切替反応 etcetc...
- やれることは以外にある。あなたもやってみませんか!
- じゃあ何をすればいいの?→おうせみなとさんがこれまでやったこと
- 実際にバルーンを作ってみた例(写真)
- まとめ
- ゴーストと出会えたこと、ユーザと出会えたこと、きっかけとなったゴースト、そのゴーストの作者さん、そしてSSP作者さん! どうもありがとう!
「デモ」- C.Ponappalt
ディスカッション「うかべんだけど何か質問ある?」
- ネタが出ないときはどうしますか?
- (ぽな)風呂入って寝る!こいずみさんも言っていたとおり、寝ると思いつく。
- (明日香)ネタだから?
- (ぽな)うるさい!
- (明日香)音楽の話でちょっと違うかもしれないけど、トイレの中とか、ひとりでほっとできるところだと浮かぶかも。
- (りすな)取材にいく。
ネタのゴーストを作るときは、 の集会に参加した。 - (明日香)普通じゃなないところに身を置くといいかもしれません!
- オリエント工業とSSPが共同で開発する予定はありませんか?
- (ぽな)連絡待ちです!
- (明日香)どのあたりに協力して欲しい?
- (ぽな)実体化でしょう。
- (明日香)とくにどのあたりを?
- (ぽな)回答は3時間後ぐらいに…
- (ぽな)実際は時間とお金さえあれば…という時代になっている。
- (明日香)ところでああいうのってあったかいんですかね?
- (ぽな)ヒーター入れる?
- よそのゴーストのネタばかり浮かぶんですがどうしたらいいですか?
- (明日香)作者さんにこそっと教えてあげる。されて嫌な人はいないんじゃ?セクハラ的なことじゃなければ…
- 皆さんへ。ゴーストを何体入れてますか?お気に入りゴースト何体いますか?
- (明日香)約2000体です。お気に入りは…難しいな…一番お気に入りは握江トク。
- (明日香)ゴーストいっぱい入れると起動に時間がかかるが、右下に表示されるプログレスバナーを毎回じーーっと見てる。バルーンも1000ぐらい入ってる。あれもじーーっと見てる。
- (ぽな)約1000体。やっぱり紳士スタイルでじーーっと起動待ってる。キャッシュを実装したいと思っているが、キャッシュ判定を失敗したら最悪落ちる。どうしようかな
- (オーディエンス)1000体以上=5〜6人、800〜900人=? 600〜700人=? 200〜500ぐらい=15人くらい 100体以下=5人くらい
- (明日香)昨年12月時点で4500体くらいいるようです。
- トークはどのくらい作るとちょうどいいのか?
- (ぽな)作者サイドだと50〜100くらい、ユーザサイドだと…多ければ多いほどいい!
- Macユーザです。他の人がどんなツール使って創作してるのか知りたい。
- バグ報告を相手の機嫌を損ねずにする方法は?
- ゴーストがきっかけで趣味・興味が増えたことは?
- (明日香)ゴーストには自分の興味が反映されるものだから、ゴーストを通じて仲間が増えることがあるのでは?
- どうすればダミアン様を攻にできますか?
- (明日香)ダミアン様は総受けだからダメです。でも…浴衣さんなら描いてくれるかも?
- タスクトレイ用アイコンを作りましたが、一色だけ色が抜けてしまう。どんな原因が?
- (ぽな)16色システムパレットのアイコンしかWin2000では通らない。逆にいうとXP以降では通るのでは?環境を教えてほしい。
- (質問者)2000です
- (明日香)もすかするとXP以降ではちゃんと通るかもしれない。参考にしてください。
- ゴーストで追加シェルを作ってもらっているとき、マスターを更新したくなったときはどうしますか?
- 表情増やすぐらいであれば、シェル描いてくれた人にちょっとお願いしてみるのはどうか?
- FMOはSakura、Keroとありますが、\p[2]以降は取得できないですか?
- 現行の仕様でDSSTPなどを使って特定ゴーストの\p[2]以降のhwndを取得する方法はないんでしょうか?(\p[2]以降にせくはらしたいお)
- (ぽな)仕様書書くてくれたら実装します!
- 最近伺か以外でハマれるネタはありますか?
- (明日香)スティッカムで動画やってます。動画配信をやっていきたい。
- (明日香)はまれるネタはぽなさんが考えてくれると思うのでまあこんなところで…
- (ぽな)ちょっと待てー!
おわりに - Fine Lagusaz
- 本日はみなさんお疲れさまでした!
- 今日は明日から使えるネタや将来に活用できるようなネタがいっぱい出たと思うので、懇親会や自分のブログでもう一度掘り下げてみてください。
- 以上!
※テキスト整理や感想の追加はもうすこし時間をくださいませ。