俺の中で山城は完全に死んだ。

LTしたが涙ぐんで、ちゃんと話せなくてみっともない感じになってしまった。

でも、言いたかったことは何となく伝わった感じだったので良かった。

利用したサービスについて

amazon.co.jp

今更説明するまでもないけど、検索すれば、かなり無茶なものでも売ってる。

サードパーティが食品売ってるので、もう何でも買える。

スイカ見つけた時には勝った感すらあった(何に勝つのかは分からない)

ジャパンネット銀行

ブラウザだけで完結してる銀行口座として本当に便利。

特に使い捨てのクレジットカード番号が使えるVisaデビットがあるお陰で、ちょいと変なサイトでも容赦なくクレジットカード番号をエントリできる。

それから、一日に使える金額をカジュアルに変えられるのも凄く良い。ちなみに、僕は15万に設定してる。

peatix.com

支払い方法が沢山あるのと、売上の受け取り方法が沢山あって金銭的な不安感の無いサービスで本当に素晴らしい。

良いと思った点をまとめておくと、

  • paypal 以外の入出金ができる
  • サイトが軽快に動作する
  • イベント毎にサブドメインを作れるのでURLを小さくし易い
  • ヘルプが丁寧に作りこまれている

ただ、受付用のモバイルアプリが僕のXperia SXでは上手く動かなかった。

このエントリを参考にしてサイトを選んだ。

Print-ON

同人印刷屋さんで、画像と発注書のPDFをメールで投げつつ金を払うとグッズを作ってくれる。

今回は200個で結構多い発注だったけど、10個からサクっと作ってくれるので小規模なイベントのグッズ作るのは悪くないと思う。

配送も見積もり通りのタイミングでキッチリダンボールに詰まって届いた。

ゴンベエドメイン

.ro ドメインを売ってくれるのは国内でここだけだったので使った。

技術的なアレはGitHub側へどうぞ

つまり、AWSには金払ってない。

収支について

結構雑な所もあるけど、今整理出来るだけの資料で収支を最後に書いておく。

収入

チケットの売上

90 * 15,000 = 1,350,000

当日に受け取った参加費

15,000 * 3 = 45,000

収入合計

1,395,000

支出

カナルカフェ利用料

847,500 + 189,000 = 1,036,500
  • 飲食代 650,000
  • サービス料 32,500
  • オプション

    • 音響設備 20,000
    • 映像機器 45,000
    • 花火 100,000
  • 延長料金

    • 90 * 2000 + 9,000 = 189,000

当日、移動中に頭の中でシミュレーションしてみた結果、

二時間じゃ絶対終わらないと思って、当日に延長したが延長料金がヤバイ。

でも、時間的には忙しいながらも結構丁度いい感じだったと、自分では思ってる。

peatix の手数料

cf. Peatixの手数料はいくらかかりますか?

(15,000 * 90 * 0.029) + (90 * 70) = 45,450

yamshi.ro ドメイン登録料

二年間の登録料

18,900

景品

Macbook Air

(176,001 + 381) * 2 = 352,764

iPad Air

77,905 + 381 + 3,886 + 381 = 82,553

その他景品 凡そ30点

82,320

ブルーシート、サランラップを含む。amazonの注文伝票が多すぎて分離するのが面倒になった。申し訳ない。

 その他雑貨

  • ボールペン 100本 2,060
  • ベルギービールセット 3,150
  • スイカ 4,550
  • ホッカイロ 40,000

支出合計

1,036,500 + 45,450 + 18,900 + 352,764 + 82,553 + 82,320 + 2,060 + 3,150 + 4,550 + 40,000 = 1,668,247

収支合計

1,395,000 - 1,668,247 = -273,247

イベントやってみてわかったのは、資金とスケジュールに余裕のあるプロジェクトはマジ楽勝であるって事。

追記

いや、会場ではマジ儲かるって本当に思ってたし、でも収支報告はちゃんとした方が良いなって思ってやってみたら意外と赤いけども、Apple製のゴミ箱よりは安上がりだったんで、良いかなって思ってる。

時間配分は、どうしようも無い感じだったけども、MBAiPad Airを計算して買えばプラス気味な感じな訳だし、次は上手くやるよ!

金余分に払ってくれるなんて思ってる殊勝なみんなは、そこで取り返すから次のイベントにも参加してね!

go言語のテスティングフレームワークについて

画像周りの動作が意味不明かつ使い辛いので移転しました。

go言語のテスティングフレームワークについて — さにあらず

Windowsユーザがgo言語の開発環境を構築する

画像周りの動作が極めて意味不明なので移転しました。

Windowsユーザがgo言語の開発環境を構築する — さにあらず

Doma要望リスト

ちょっとDomaをさわり始めたので、幾つか要望が出てきた。 Twitterにはぼろぼろと書いてるけど、それを一々拾うのは面倒だろうからまとめておくます。

Doma本体

  • PullRequestは細かい改善を送り易いので、GitHubにリポジトリを移行して欲しい。
  • ビルドとリリースをGradleにしては、どうだろうか?
  • .sqlファイルの存在チェックする際にみる先が.classファイルの出力先だけでは無く、ソースパスも見て欲しい。
    • eclipseだけでビルドしてると気にならないんだけど、ビルドスクリプト書くとリソースファイルのコピー先を.classファイルと同じにしなきゃいけなくて気持ち悪い。 このへんのコードをガチャガチャ弄れば何とかなりそうだけども…

    • AbstractSqlFileQueryMetaFactory

    protected FileObject getFileObject(String path, ExecutableElement method) {
        Filer filer = env.getFiler();
        try {
            return filer.getResource(StandardLocation.CLASS_OUTPUT, "", path);
        } catch (IOException e) {
            throw new AptException(Message.DOMA4143, env, method, e, path, e);
        }
    }
  • java7でビルドするとワーニングがポロポロ出るのを何とかしてほしい。@SupportedSourceVersion(SourceVersion.RELEASE_6)とか書いてるのをどうすれば、java6でもjava7でもワーニング出ない様に出来るのかよく分からないけども… ちなみに、こういうやつね。
    [javac] 警告:注釈プロセッサ'org.seasar.doma.internal.apt.DomainProcessor'から-source '1.7'より小さいソース・バージョン'RELEASE_6'がサポートされています
    [javac] 警告:注釈プロセッサ'org.seasar.doma.internal.apt.EnumDomainProcessor'から-source '1.7'より小さいソース・バージョン'RELEASE_6'がサポートされています
    [javac] 警告:注釈プロセッサ'org.seasar.doma.internal.apt.ExternalDomainProcessor'から-source '1.7'より小さいソース・バージョン'RELEASE_6'がサポートされています
    [javac] 警告:注釈プロセッサ'org.seasar.doma.internal.apt.DomainConvertersProcessor'から-source '1.7'より小さいソース・バージョン'RELEASE_6'がサポートされています
    [javac] 警告:注釈プロセッサ'org.seasar.doma.internal.apt.EntityProcessor'から-source '1.7'より小さいソース・バージョン'RELEASE_6'がサポートされています
    [javac] 警告:注釈プロセッサ'org.seasar.doma.internal.apt.DaoProcessor'から-source '1.7'より小さいソース・バージョン'RELEASE_6'がサポートされています
    [javac] 警告6個

ちゃんと検証してないけど、多分この記事にある通りにすれば、ワーニングは消えるっぽい。

つまり、org.seasar.doma.internal.apt.AbstractGeneratingProcessorで、以下のコードを追加すればよい。

@Override
public SourceVersion getSupportedSourceVersion() {
    return SourceVersion.latest();
}

残念な事に以下の様な書き方は出来ない。ぐぬぬ。

@SupportedSourceVersion(SourceVersion.latestSupported())

doma-tutorial

  • GradleWrapperを付属して欲しい。現状だとGradleをインストールしている人しか、build.gradleを使えない。
  • build.gradleを改善してGistにしておいたので、参考にして良い部分だけ取込んで欲しい。

doma-gen

dialectNameを指定しなくても良い様にしてほしい

dialectNameは、DriverClassNameもしくは、urlから類推できる程度に自明なので設定しなくても良い様にして欲しい。

H2にpostgresqlのドライバでアクセスするとか、そういう変態行為は無視して良いんじゃないかな。

doma-genのリリースアーカイブの内容を見直して欲しい。

トップレベルにあるbuild.xmlやpom.xmlはdoma-genの開発者にとって意味のあるものであって、 ユーザが使うものでは無いので別な所に動かすか、そもそもリリースアーカイブに含めないで欲しい。

resources/doma-gen-build.xmlなんてサブディレクトリに入ってるものが目的のファイルだなんて罠っぽすぎる。

タスクをロードし易い様にpropertiesファイルの入ったjarファイルをリリースして欲しい。

  • task.properties
gen=org.seasar.doma.extension.gen.task.Gen
genTest=org.seasar.doma.extension.gen.task.GenTest

以上のファイルが入っていると、以下の様な定義が出来る様になる。

<taskdef classpathref="classpath" resource="tasks.properties"/>

genTestタスクで生成されるテストコードのメソッド名及びテストクラス名を改善して欲しい

テストクラス名をパスの下から2番目にした上で、ファイル名をテストメソッド名にして欲しい。

  • 現状
public class SqlTest extends TestCase {

~~省略~~
    /**
     * 
     * @throws Exception
     */
    public void test0() throws Exception {
        SqlFile sqlFile = repository.getSqlFile("META-INF/example/dao/DepartmentDao/selectById.sql", dialect);
        execute(sqlFile);
    }

    /**
     * 
     * @throws Exception
     */
    public void test1() throws Exception {
        SqlFile sqlFile = repository.getSqlFile("META-INF/example/dao/DepartmentDao/selectByIdAndVersion.sql", dialect);
        execute(sqlFile);
    }

~~省略~~
}
  • 将来
public class DepartmentDaoTest extends TestCase {

~~省略~~
    /**
     * 
     * @throws Exception
     */
    public void selectById() throws Exception {
        SqlFile sqlFile = repository.getSqlFile("META-INF/example/dao/DepartmentDao/selectById.sql", dialect);
        execute(sqlFile);
    }

    /**
     * 
     * @throws Exception
     */
    public void selectByIdAndVersion() throws Exception {
        SqlFile sqlFile = repository.getSqlFile("META-INF/example/dao/DepartmentDao/selectByIdAndVersion.sql", dialect);
        execute(sqlFile);
    }


~~省略~~
}

サンプル用ビルドファイルに不要なコードがあるので削除して欲しい

具体的には以下の部分は不要。

<typedef name="entityConfig" classname="org.seasar.doma.extension.gen.task.EntityConfig" loaderref="loader"/>
<typedef name="daoConfig" classname="org.seasar.doma.extension.gen.task.DaoConfig" loaderref="loader"/>
<typedef name="sqlConfig" classname="org.seasar.doma.extension.gen.task.SqlConfig" loaderref="loader"/>
<typedef name="sqlTestConfig" classname="org.seasar.doma.extension.gen.task.SqlTestConfig" loaderref="loader"/>

8月24日発売の『WEB+DB PRESS Vol.76』にGradleの記事書いた。

題名で全部言ってしまってる感はある。

とは言え宣伝しろと通達を受けているので、宣伝記事を書く事とす。

想定対象読者

SIerの中におかれましては、AntやらMavenやらXMLベースのツールを利用しているかと存じます。

意識が高まり過ぎて外に出ていってしまった何とかさんが書いた地獄の様なbuild.xmlを後からメンテする人間の気持ちなど考えようも無く。

そういう人達こそがGradleを使うべきであると僕は考えていますので、僕の記事ではGroovyの基礎的な文法を紹介する所から丁寧に書きました。

GradleGroovyをふんだんに使っているので、並のJavaプログラマは大体面食らうと思う、多分。 そもそもGroovyはスーパーテクノロジなのであるけどもマイナー感が否めない。 とは言え、僕の周りだと何かみんなGroovy使ってる感すらある、なごやこわい。

ページ数が全然足りなくて書きたいと思ってた事の半分も書いてないのだけども、 読者の皆様方におかれましては続きが読みたければ、WEB-DB PRESSの編集長たる稲尾さんに、わっふるわっふるとお伝え下さい。

CIサーバとの連携であるとか、J2EEサーバと連携して自動テストする話であるとかもっとガチなネタあります。

f:id:warufuzaketaichi:20130806163947j:plain

無償で読めるGradleの記事

今すぐGradleについて知りたい等と言うせっかちなあなたは、この辺の記事を読めば良いと思います。

サンプルコードが欲しい時に参照すべきリポジトリ

Netflix/gradle-template

多分きっと世界で最もヘビーにGradleを使っていてかつ、色んなライブラリやツールをOSSにしてるNetflixのテンプレートリポジトリ。

何か困ったら、この中探すと良い感じのサンプルがあるので、一通り読んでおくと良いですよ。

SpringSource/spring-framework

昔はMavenをヘビーに使っていたSpringですけども今となってはヘビーにGradleを使っています。

それなりに規模感のあるコードをビルドする時には結構考えないといけない事があるのだけども、ここにはソレがあるます。

執筆環境

今回、僕は初めて雑誌の記事をゼロからソロプレイで書いたのだけども、それなりに大変だった様な気がしないでもない。 理由は開発環境に関するノウハウが全然無かったからだ。

どの程度のクオリティで記事が書かれているのかは、買って読んで下さいと言ってイイと思うのだけど、 どんな環境で記事書いたのかは、ここに記録しておく。

Markdown2Inao

id:naoyaさんがせっせとメンテナンスしているアレ。 UTF-8のmarkdownファイルをアップロードすると、InDesignのファイルが出てきます。 今は直接InDesignのファイルが出てくる様になった風味であるので、Markdown2InDesignだと思うのだけども。 本当にありがとうございます。

idtagreplacer

そもそもノリで煽ったら内製ツールを本当にOSSにしてしまった稲尾さんマジパネェって話でありまして、 煽った手前とりあえずGradleでビルドしつつテストを足したりしました。

そしたら、ちょうど良いから記事書いて下さい等とメンションが飛んできたので、今回の記事となりましてん。 id:naoyaさんのアレでInDesignのファイル出しても上手く扱えなかったので、僕はこれを使っていました。

内部的には、相当面白いツールで定性的な基準で変換する部分にRhinoが動いてて、設定ファイル内にJavaScript書く事で半構造データでも扱える様になっています。 Inao記法は、それくらい愉快なアレって事です、ええ。

NanaTerry

僕が長文をブログ以外のフォーマルな状況で書く為に使ってるアウトラインエディタです。 markdownで書いてプレビュー出来るとマジ最高なのですけども…。*1

初稿まではほぼこれとEvernoteで記事を書いた。

InDesign CS6

テキストファイルを送るとPDFが返ってきます等と言われましても、それでは細かい調整が出来なくて憤死するのが目に見えていた為、稲尾さんにおくりつける前に、自分でもPDFを作って確認してました。

そもそも、自分の書いたテキストファイルが一体何ページになるのか想像できない状態で指定されたページ数の記事書くとか正気の沙汰ではない。 8~10ページの記事を書いて下さいと言われて、僕が7割くらいの量ですと送ったテキストファイルをPDFに変換して貰ったら13ページあって、俺涙目。 既にその時点で内容をガッサリと削った訳です、ハイ。

僕としては、歪んだ余白の美学を持っているのですけども、最後の最後でやりきれなかった部分もあり、 微妙に不満が残っているのですけども多分きっと大部分の人は僕が何にやりきれない思いを感じるのかきっと分からないでしょう。

Just Right!5 Pro

ここまで、この記事を読んで下さった忍耐力のある読者におかれましては、お気づきの事と思いますが、僕の書く日本語はおかしいんです、ハイ。 後、漢字が多すぎて固い印象がある。

Just Rightを使うと、そういうおかしな部分を全部指摘してくれます。 僕はやはりJavaプログラマであり、eclipse依存プログラマでありますので、 自動構成ツール無しに対価を頂く様な文章は書けません、はい。

自動構成した所で文章が読み易くなる訳でも、美しくなる訳でもないのですけども、馬子にも衣装ってアレです、アレ。

WEB+DB PRESS Vol.76

そろそろ随分長いので、これくらいにしておきます。

*1:自分用のアウトラインエディタ欲しいなぁ…とか思ったけど、どうしようかねぇ…