2012年12月28日金曜日

Groovyで文字列を連結する際の注意点

Groovyで文字列を連結する場合、+演算子は行末に書くのが無難そう。詳細は下記を参照。

2012年12月21日金曜日

【宣伝】iEverword冬休みセール

Evernoteと連携した単語カードiPhoneアプリ、 iEverwordを、2012/12/21から2013/1/8までの間、冬休みセールとして¥85(通常¥250)で販売します。ご興味のあるかたは、下記リンクをご参照ください。

2012年12月14日金曜日

Gradle Effective Implementation Guide – Chapter 1

以下、Gradle Effective Implementation Guideの1章についての読書メモ。

いわゆるGetting Started+α。Gradle経験者は見出しと実行例をざっとみて、知らないところや気になるところだけ拾い読みすれば大丈夫そう。Gradle初心者は素直に読み進めればよい。

なお、IDE (Eclipse, IntelliJ IDEA)でのGradleの使用については、12章に記述あり。

2012年12月10日月曜日

GradleでTask Ruleを使ってタスクを定義する

GradleでTask Ruleを使ってタスクを定義する方法は、以下の通り。

tasks.addRule("Pattern: sample<ID>") { String taskName ->
if (taskName.startsWith("sample")) {
task(taskName) << {
println taskName - 'sample'
}
}
}
view raw build.gradle hosted with ❤ by GitHub

 addRuleの第1引数に指定したdescriptionは、tasksタスク実行時にRulesのセクションに表示される。第2引数のクロージャでは、特定の条件にマッチするタスク名に対応するタスクを定義する。この例では、‘sample’で始まるタスク名をもつタスクを定義している。

tasksタスクを実行した結果は、以下の通り。
$ gradle tasks
:tasks

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

Help tasks
----------
dependencies - Displays all dependencies declared in root project 'aaa'.
dependencyInsight - Displays the insight into a specific dependency in root pr
ect 'aaa'.
help - Displays a help message
projects - Displays the sub-projects of root project 'aaa'.
properties - Displays the properties of root project 'aaa'.
tasks - Displays the tasks runnable from root project 'aaa' (some of the displ
ed tasks may belong to subprojects).

Rules
-----
Pattern: sample<ID>

To see all tasks and more detail, run with --all.

Task Ruleとして定義したタスクを実行した結果は、以下の通り。
$ gradle sample1 sample2
:sample1
1
:sample2
2

関連リンク

2012年12月6日木曜日

App Storeで特定期間セールを行うための設定

iPhoneアプリなどのiOSアプリで、特定の期間セールを行う手順は、下記リンクの通り。


なお、Price Tier End Dateはセール価格がもとの価格に戻る日である点に注意。例えば、Price Tier End Dateを12/25に設定すると、12/25になった時点でもとの価格に戻る。12/25までセール価格にしたい場合は、Price Tier End Dateに12/26に設定する必要がある。

また、タイムゾーンについては確かな情報がないが、iTunes ConnectのSales Reportに適用されるタイムゾーンから判断して、ある程度は考慮される模様。

関連リンク

2012年12月5日水曜日

Gradle Effective Implementation Guide – Chapter 11

以下、 Gradle Effective Implementation Guideの11章についての読書メモ。

GradleとCIツールの連携方法について記述。対象のツールは、Jenkins, JetBrains TeamCity およびAtlassian Bambooとなっているが、Jenkinsしか知らないので、Jenkinsの節のみを読む。

JenkinsのGradle Pluginを使い、Gitなどのソースコード管理システムから取得したプロジェクトのビルドスクリプトを実行する手順についての説明。記述は丁寧でわかりやすいが、内容的にはそれ以上でもそれ以下でもない。

Jenkins以外のツールについてもざっと眺めてみたが、記述レベルに変わりはなさそう。

2012年12月4日火曜日

EclipseからGistを登録する

下記リンクを参考に、GitHub Mylyn connector for Eclipseを使って、EclipseのエディタからGistを登録してみました。


具体的には、Eclipseのエディタで任意のテキストを選択し、右クリック後に、「GitHub」-「Create Public Gist」(または「Create Private Gist」)を選択すると、選択中のテキストがGistに登録されます。登録したGistは、Eclipse上ではMylynのタスクとして保存可能です。

Mylynを使ったことがないせいもあり、個人的にはGistをMylynのタスクとして扱うメリットが今ひとつピンときませんでした。また、ポスト時にdescriptionを指定できないのも不満です(タスクのdescriptionを修正してSubmitすることで更新は出来ますが、手間はかえって増えてしまいます)。ただ、スニペットを手軽にGistに登録できるのは確かなので、用途に合えば使ってみるのもよいかもしれません。

なお、現状では、Gistに保存したスニペットを利用するためのユースケースは想定されていないようです(この用途には、Sublime Text 2が良さそうです)。

2012年12月3日月曜日

GradleでJDBCドライバを使用してデータベースを操作する

Gradleで、JDBCドライバを使用してデータベースを操作する方法は、以下の通り。

import groovy.sql.Sql
apply plugin: 'groovy'
apply plugin: 'eclipse'
apply plugin: 'maven'
repositories { mavenCentral() }
configurations { driver }
dependencies { driver 'org.xerial:sqlite-jdbc:3.7.2' }
URLClassLoader loader = GroovyObject.class.classLoader
configurations.driver.each {File file ->
loader.addURL(file.toURL())
}
task jdbcSample << {
def sql = Sql.newInstance( 'jdbc:sqlite:test.db'
, ''
, ''
, 'org.sqlite.JDBC' )
sql.execute '''\
CREATE TABLE IF NOT EXISTS person(
id int primary key
,name varchar
)
'''
sql.execute '''\
INSERT OR IGNORE INTO person VALUES(
1
,'test'
)
'''
sql.eachRow( 'select * from person' ) {
int id = it.id
println "id:$id name:$it.name"
}
sql.close()
}
view raw build.gradle hosted with ❤ by GitHub

ビルドスクリプトでJDBCドライバを使用するには、Groovyのクラスローダーにドライバのクラスをロードしておく必要があるらしい。上記のビルドスクリプトを実行した結果は、以下の通り。

$ gradle -q jdbcSample
id:1 name:test

関連リンク