現在位置: ホーム 清水川記
ドキュメントアクション

cmscomさん主催の開発合宿に参加してきました

黒磯のホテルアライ

@tk0miya作のWebモックビルダ

8/28, 29 の2日間、 CMSコミュニケーションズ さん主催の開発合宿に初めて参加してきました。

今回の10回目まで毎回合宿会場を変えているらしいのですが、今回は残念ながらネットワーク難民が大量に発生するサバイバルな合宿になってしまいました。どうやら、 初回以来の大遭難(ping的な意味で) だったようです。会場は、那須塩原の少し先の黒磯。UQ-WiMAXは圏外、emobileもホテルの居室内ではギリギリでした。室内にLAN口があったのでこれでなんとか。2日目に借りたホテルの会議室ではLAN口もなく、emobileもアウトでping通らず。自分は普段オフラインでも開発出来るようにしているので問題無かったのですが、他の皆さんはなかなかキビシかったようで...。それでも最後にはかなり濃い成果発表を聞くことが出来ました。

参加者の方々の成果発表ではiPhoneやiPadのアプリ開発や活用関係が多く、プログラムを書かずにiPhoneアプリっぽいものを作れる Sencha は非常に興味深かったです。最近手を広げすぎなのでしばらく触る予定はないけど、いつか触るかも。

一緒に参加した @tk0miya 先生は定義からWeb画面のモックを生成するツールを作ってました。つまり、Sphinxのディレクティブに実装すれば画面設計図を作れるという話ですね、期待してます@tk0miya先生!(geckoエンジンでWeb画面を画像ファイルにする仕組みにする予定なのでSphinxに組み込むには依存が多すぎるらしいですが...)期待してます。

あとは教育系の話題が多かったのが興味深い。アルゴリズムの学習とか。

自分はまたまた xdv の活用方法について色々とまとめていて、今回の合宿ではまずまずの成果を上げることが出来ました。この成果は近いうちに公開出来るんじゃないかなと思っています。

BPStudy#36 に参加しました Jiemamyとbeproud-bot君の紹介

Jiemamyデモ

beproud-botの紹介

BPStudy#36 に参加しました Jiemamyとbeproud-bot君の紹介

BPStudy#36 に参加してきました。 前回35回にも参加してましたが疲れててメモ取らなかったからな……。

今回のネタは"Jiemamy"と"beproud-bot君"。

第一部「DB meets Jiemamy ? 「DBも、進化せよ。」」

Jiemamyとは

Jiemamyサイトから引用:

Jiemamyは単なるER図エディタではありません。ER図を使ってデータの編集を行いますが、大局的な目的は、データベース構成管理プロセスを改善し、より変更に強いソフトウェア開発を実践できる環境づくりをすることです。

機能
  • データベース構成(スキーマ+データセット)情報のモデル化及びその操作
  • アプリケーションの各リビジョンに対応する構成情報の管理
  • アプリケーションのビルドに伴った、モデルに沿ったデータベース構成の自動構築

発表からポイントをメモ

  • Jiemamyは 開発モデル

  • SVNからプロジェクトを持ってきてもすぐ動く訳じゃない

  • antやMavenなどの スマートビルド はプロジェクトに必須

  • DB構成(スキーマ)もプログラムのリビジョンと合わせて管理が必須

  • JiemamyのデータはXML(マージの可能性)

  • ER図エディタが欲しいならJiemamy以外に良いのが色々あるよ

  • JiemamyのER図エディタはデータファイル形式を考え抜いている(まだ考えてる)

  • モデルエディタで開始スクリプト・終了スクリプトを設定出来る

  • Jiemamyが究極的に目指すのは一つのjerからどのDB向けのSQLも生成できる
    • だから開始スクリプト・終了スクリプトはあまり使わない方が良い

しみずかわの理解

  • ああ、ジーマミーって沖縄の豆腐料理ですね。
  • Jiemamyプロジェクトは概念を伝えるプロジェクト
  • 概念を伝えるための矯正器具・サポートツールを提供する
  • DBスキーマ管理をJavaで提供するための補助ツール(ER図エディタ等)を提供
  • Rubyのmigration管理の概念と同じ感じ

質疑応答なかったので質問を書いておく

  • dialectはエディタ上以外でも指定できますか?アプリが使うDBとJiemamyがはき出すDBのSQL形式が連動して欲しいので、DB形式指定は1カ所にしたいわけです
  • モデル図のPDF出力や印刷など、納品物生成的な使い方はできますか?

結論

  • Jiemamyは 開発モデル

第二部 beproud-bot君の紹介

発表: @haru860

発表からポイントをメモ

  • 「子は鎹」という言葉があるが「beproud-botは鎹」

  • メンバーの何名かがbot化されている

  • グループチャットにbeproud-botを招待するとコマンドに答えてくれる

  • Skypeを中心に据える
    • みんなが入ってるグループチャットを作る

    • コミットやNagiosのアラートなどもSkypeのグループチャットに集める

    • 同じ場所にいてもSkypeを見る

    • そのうち違う場所に居ることに気づかなくなる
      • 小さい会社だと場所の問題があるのでこれは重要
      • 能力を分かっている協力メンバーは完全リモートで参加が出来る
    • 週一回の進捗管理ミーティングなどが基本的に不要になる
      • 常に進行状況が見えている
    • 雑談の中にこそ会社のメンバーの要望などが潜んでいる
      • BP4などの効果的な福利厚生を提供できる
  • beproud-botはオープンソースになっています

カテゴリ
Event

Zope/Plone開発勉強会#14 でxdvについてまとめました

8/21(土) は Zope/Plone開発勉強会#14 でした。

そこでxdvのQuickStartについてまとめたので、貼っておきます。

なお、xdvはDeliveranceから派生した互換プロジェクトです。概念についてはDeliveranceの紹介スライドを参照して下さい。 -> Deliveranceによるデザインカスタマイズ (Ploneを題材にしていますがPlone以外、Python以外でも利用できますよ!)

XDV クイックスタート

このクイックスタートでは、あるサイトの見た目を変化させて表示するHTTPサーバーを用意します。これで、xdvのルール設定をしながら画面がどう変わるかを確認することが出来るようになります。この目的のため、以下のパッケージを利用しています。

xdv:ルールコンパイラ
dv.xdvserver:WSGIフィルタ
Paster:WSGIサーバー, Proxy

インストール: buildoutの場合

zc.buildoutを利用すれば、OS上の/usr/lib/pythonなどにあるsite-packagesにインストールせずに色々なpythonライブラリを利用した環境を構築する事が出来ます。詳しくは Python Hack-a-thon 4 ハンズオン 中級コース などを参照してください。

buildout環境

まずはbuildout環境を初期化します。

$ mkdir /tmp/xdvenv
$ cd /tmp/xdvenv
$ wget http://svn.zope.org/repos/main/zc.buildout/trunk/bootstrap/bootstrap.py
$ python bootstrap.py init
buildout.cfg

つぎにbuildout.cfgが生成されているので、このファイルを以下の内容で記載します。

[buildout]
parts = xdv xdvserver

[xdv]
recipe = zc.recipe.egg
eggs =
    xdv
    dv.xdvserver
    PasteDeploy
interpreter = py
bin/buildout

以下のコマンドを実行して環境を構築して下さい。

$ bin/buildout

これで環境構築は完了です。

dv.xdvserver-1.0b7 へのpatch

dv.xdvserver-1.0b7には日本語関連のバグがあるので、ちょっとパッチあてます。なお、これはxdvのバグではなくWSGI層のバグなので、Ploneで使われているcollective.xdvなどを使っている場合は、問題無いはずです。

--- C:/Project/buildout-eggs/dv.xdvserver-1.0b7-py2.6.egg/dv/xdvserver/filter.py.orig       Sat Aug 21 17:05:44 2010
+++ C:/Project/buildout-eggs/dv.xdvserver-1.0b7-py2.6.egg/dv/xdvserver/filter.py    Sat Aug 21 17:57:38 2010
@@ -66,10 +66,9 @@

     def apply_transform(self, environ, body):

+        body = body.decode('utf-8') # add this line
         content = etree.fromstring(body, parser=etree.HTMLParser())
         transformed = self.transform(content)
-        return etree.tostring(transformed)
+        return etree.tostring(transformed, encoding='utf-8') # add encoding

     def __call__(self, environ, start_response):

設定ファイルの作成

wsgi.ini

動作確認用に設定ファイルを書きます。buildout.cfg等と同じディレクトリにwsgi.iniを作成して以下の内容を記載します。bin/pasterコマンド(PasteDeployのスクリプト)にこのファイルを渡すとWSGIアプリケーションを動的に作成してくれます。

[server:main]
use = egg:Paste#http
host = 0.0.0.0
port = 8000

[composite:main]
use = egg:Paste#urlmap
/static = static
/ = default

[app:static]
use = egg:Paste#static
document_root = %(here)s/static

[pipeline:default]
pipeline = egg:Paste#cgitb
           egg:Paste#httpexceptions
           xdv.theme
           proxy

[filter:xdv.theme]
use = egg:dv.xdvserver#xdv
theme = %(here)s/static/theme.html
rules = %(here)s/static/rule.xml
live = true

[app:proxy]
use = egg:Paste#proxy
address = http://www.ruby-lang.org/

上記の例では最後の行でRubyの公式サイトを表示するようにしています。

最後に、上記設定ファイルで指定しているディレクトリやファイルを用意します。まずstaticディレクトリを作成して、その中にそれぞれ以下の内容でtheme.htmlとrule.xmlを置いて下さい。

theme.html

このファイルでこれから作成するサイトのデザインを定義します。このHTMLファイルに、動的に内容を埋め込んでいくルールを、次に説明するrule.xmlで指定します。

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>XDVの練習中です</title>
    </head>
    <body>
        ほげほげ
    </body>
</html>
rule.xml

ルールです。取りあえず空。

<rules xmlns="http://namespaces.plone.org/xdv"
       xmlns:css="http://namespaces.plone.org/xdv+css">

</rules>

プログラムの実行とルールのカスタマイズ

起動とアクセス

以下のコマンドで起動して下さい。前述の設定通りであれば8000番ポートで起動します。

$ bin/paster wsgi.ini

起動したら http://localhost:8000/ にアクセスして下さい。あ、対象サイトがリダイレクト応答を返してくる場合、今の設定ではリダイレクトしてしまうので、今回のrubyサイトの例では http://localhost:8000/ja/ にアクセスするなどしてください。

ルールのカスタマイズ

rule.xml を編集しましょう。例えば以下の行を追加します。

<append theme="/html/head" content="/html/head/link"/>
<replace theme="/html/body" content="/html/body"/>
カテゴリ
python python