Hatena::ブログ(Diary)

Islands in the byte stream

2015-01-05

Swift訳語集をつくった

https://github.com/gfx/swift-words

WEB+DBのSwift特集を書くときに訳語を決める必要があったので作ったものです。順次改定しているので必ずしも特集記事と一致しているわけではないですが、今後日本語でSwiftの記事を書くときはこれに従うつもりです。

2014-12-24

WEB+DB PRESS Vol.84にSwiftの入門記事を書きました

Swiftはまだ出て間もない言語で、いますぐ採用すべきかというとなかなか難しい所はあります。ただプログラミング言語としてはOptional型やパターンマッチング*1など面白い機能が豊富で、学ぶ価値のある言語だと思います。今回の特集がSwiftに触れるきっかけになれば幸いです。

*1正規表現ではなく、関数型言語でよく見られる値のパターンの検出と分解のほう

2014-12-03

Android依存ライブラリバージョン固定システムの構想

Androidのビルドシステムには、BundlerとかCartonみたいに推移的な依存関係*1のバージョンを固定するものがありません*2。これをなんとかしたいと思っています。

で、メモ。Gradleには「ビルドスクリプトの依存関係(Gradle plugins)」と「モジュールの依存関係」があって、どちらのバージョンも固定する必要があります。

バージョンの固定は、まず依存関係を解決した依存グラフをつくり、そのライブラリを持ったローカルなmaven repoを作ってそちらを参照するようにすればいいはず。このあたりはCartonを参考にすればいいと思っています。

依存関係の可決についてはAndroid用だと"androidDependencies"というタスクが依存グラフを出してくれます。これはDependencyReportTask.groovyが実体なのでこのあたりから掘っていけばいいはず。Gradleスクリプトについては未調査です。

$ ./gradlew androidDependencies
:app:androidDependencies
debug
+--- com.google.android.gms:play-services:6.1.71
|    \--- com.android.support:support-v4:20.0.0
|         \--- LOCAL: internal_impl-20.0.0.jar
\--- com.android.support:appcompat-v7:20.0.0
     \--- com.android.support:support-v4:20.0.0
          \--- LOCAL: internal_impl-20.0.0.jar
(snip)

ちなみに素のGradleにはgradle-dependency-lock-pluginというのがあるけどちょっとイメージが違うしAndroid用には使えなそうです。

See Also

*1:transitive dependencies: 依存ライブラリの依存ライブラリみたいな関係

*2:知らないだけかもしれない。もしご存知でしたら教えて下さい。

2014-10-19

Template Engine Nightで「Xslate振り返り」をしました

このあたりで一度まとめておこうと思ったのでいい機会でした。@moznionさん、ありがとうございました。

なお、スライド中の「arity」は、この直前のトークで「ASTのnodeの種類を表すのにarityという単語を使っているのは意味が違うのではないか」と質問されたので急遽いれたものです。これは、『ビューティフル・コード』でDouglas Crockfordが演算子優先順位構文解析法によってJavaScriptのparserを実装しており、その中でtokenの種類を表すのにarityという単語を使っていたからなのでした。Xslateはそのparserをもとにしているのでarityという言葉を使っています。

2014-10-02

Travis CI meets Swift!

There's an absolutely great news for Swift developers: The Travis CI Blog: Status update on the Xcode 6 and iOS 8 rollout

Meaning that now Swift libraries can be tested on Travis. Here is a Swift library with working .travis.yml:

There are points you'd like to know:

  • Make the test target shared and commit it to the repo
  • Use the latest xctool, instead of xcodebuild
  • Specify -sdk iphonesimulator

That's it. CI should work just like as: https://travis-ci.org/gfx/Swift-JsonSerializer

Enjoy Swift!

P.S. there is a Japanese version on Qiita: http://qiita.com/gfx/items/e5bc4ab22d63b09f6ee8