stack コマンドを使ってみた

6月9日に FP Complete から stack コマンドがリリースされました(公式ブログ)。とりあえずブログ1文目を訳すとこんな感じです。

stack は新しく、完璧で、クロスプラットフォームで動作する開発ツールで、新参も古参も対象にしていて、コンパイラーをインストールしてセットアップして、必要なパッケージをインストールして、ビルドして、プロジェクト内の1つ以上のパッケージのテストをするもしくはベンチマークを取るためのものです。

stack is a new, complete, cross-platform development tool aimed at both new and experienced Haskell developers alike, for installing and setting up the compiler, installing packages needed, and building, testing or benchmarking one or more packages in a project at a time.

とりあえずこれさえ入れておけば Haskell に必要なコマンドはこれで完結するというような謳い文句です。1つのプロジェクトをビルドしたら別のプロジェクトがビルドできなくなったというようないわゆる deps hell も解決すると書かれています。

stack コマンド

stack ghcGHC が起動します。インストールされていなければダウンロードしてインストールからしてくれます。同じように stack ghcistack runghc が使えます。

stack build でプロジェクトのビルドができます。設定は stack.yamlproject-name.cabal ファイルに書きます。stack は cabal を置き換えるものらしいですが、.cabal ファイルは使うようです。

cabal install に当たるようなコマンドはなさそうです。

設定ファイル

.cabal ファイルは cabal が使っていたものと同じです。stack.yaml は Stackage のどのバージョンを使用するかを表す resolver が必須になります。なので、最低限下記な感じ。

resolver: lts-2.13

Stackage に存在しないパッケージを利用する場合は extra-deps を追記します。

extra-deps:
- foo-1.2.3.4
- bar-9.8.7.6

パッケージ

インストールされるパッケージは、GHC と一緒についてくるものについては global に、Stackage にあるものについては snapshot に、extra-deps で指定したものについては local に保存されます。global には追加では一切パッケージは保存されなくて、snapshot はプロジェクト間で共有、local はプロジェクトごとに固有になっていて、deps hell を避けるようになっています。

感想

とりあえず Windows での Haskell 環境がめっちゃ楽になったぞい、です。

詳しい内容はこの辺Wiki を見てください。

ちなみにまだバージョン 0.0.0 ですが、0.1 が出ると tanakh さんがもっと詳しい記事を書いてくれると思います。

今見たら 0.0.1 は欠番?で 0.0.2 が出てた。

(2015.06.25 追記) tanakh さんがもう少し詳しくて新しい情報をまとめてくれました。

TEX Yoda TrackPoint Keyboard が来た&組み立てた

トラックポイントが付いてて Cherry MX スイッチなキーボードがクラウドファンディングで買えたのでポチった。

TEX Yoda TrackPoint Keyboard ってやつです。 特徴としては下記な感じ。

  • Cherry MX スイッチ(注文時に何色か選べる)
  • トラックポイント
  • 自分で組み立て(追加料金で組み立て済みもあった)

1月30日に購入して4月3日にアメリカ合衆国から発送されてドイツ経由で到着が4月15日。事業を始めたいっていうクラウドファンディングじゃなくて共同購入みたいな感じで購入者が多くなるほど廉くなるっていうしくみで、お値段 $199.99、送料込みで $261.47 でした。あと、日本の消費税が1000円と税関手数料が200円でそれは配達に来た郵便局員に手渡しました。消費税はどういう計算なんだろう…… そもそも税関で値段分からないような?

クラウドファンディングのサービスのロゴの入った箱とシールで来ました。

税関で箱開けられたみたいで郵便局のシールがその上に貼られてました。

量産品じゃないので TEX Beetle ってやつの箱に入ってました。

中身は筐体と回路基板とスイッチとキートップで、スイッチを1つずつ基板に半田付けしていきます。

スイッチをアルミ板にはめていって基板の穴にスイッチの端子を通したところ。キーの2倍の数の端子を穴に通さなくっちゃいけなくて結構手間取りました。

せっかく自分で半田付けするんで、秋葉原千石電商で追加のスイッチを買って場所によってスイッチを変えてみました。基本はキーボードと一緒に届いた黒軸で、修飾キーには黒より軽い赤軸を、マウスボタンにはクリック感のある茶軸を使ってみました。修飾キーを軽くしたのは小指で使うからで、マウスボタンはクリック感のあった方がいいかなとなんとなくです。追加のスイッチだけで2500円。

ここに組み立て手順書があるんですけど、単に「LED を付ける」って書いてあるところで実はスペーサーをかますべきだったみたいでした。後からパーツが余ったので気付きました。ただ、キートップが黒だとキーに埋もれるように LED が来てしまって分かりにくいのでスペーサーをかまさなかったのはわりとよかったです。

後はキートップを被せて完成。元々使ってた Filco Majestouch と。

裏に DIP スイッチがあって修飾キーの配置を変えられるので、OS でのリマップではどうにもならない Fn キーの位置だけを好みの場所に合わせました。

ちょっと値段が高かったけどトラックポイントが結構快適で満足な買い物でした。

一つ、箱の中の仕切りの紙がなぜ鏡文字だったかだけが謎。

Krile をビルドする手順

この記事は Krile Advent Calendar 2014 の8日目の(7本目の)記事です。

ふと、Krile をビルドしてみようかなと思いました。せっかちな人は最後の項だけ見ればいいです。ここに書いてあるのは最短手順ではないです。自分のしたことを辿っています。

きっかけ

Krile Advent Calendar 2014 を見付けます。Visual Studio Community 2013 がとりあえずインストールだけされてあります。

ソースコードを落とす

GitHubソースコードがあります。Git 環境は適当に調えなさい。

$ git clone git@github.com:karno/StarryEyes.git

Visual Studio Community 2013 をインストールする

ここからダウンロードして、インストーラーを起動すればよいです。分からないオプションは全部チェックしとけばいいんじゃないですかね。

VS 2013 Express が入ってたらアンインストールした方がよさそうです。

自分の環境では Language Pack のインストール中に下記のエラーが出て、新規にインストールした Community と前から入ってた Express をアンインストールしてから再度インストールしてみましたが結局日本語化できませんでした。

プロジェクトを開く

git clone したリポジトリーのルートディレクトリーにある StarryEyes.sln ファイルを VS で開きます。

おもむろに、緑色の再生マークのアイコンのある Start ボタンを押します。エラーです。

Error    1   An exception occurred during a WebClient request.   StarryEyes.Nightmare
Error   2   The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568. C:\Users\kazuki\Programming\StarryEyes\StarryEyes.Albireo\StarryEyes.Albireo.csproj 108 5   StarryEyes.Albireo
Error   3   Metadata file 'C:\Users\kazuki\Programming\StarryEyes\StarryEyes.Albireo\bin\Debug\StarryEyes.Albireo.dll' could not be found   
…

めくるめくエラー

エラーメッセージ内のリンク先を見ます。.NET の知識皆無でよく分かりません。

git submodule が使わてることに気付きます。

$ git submodule init
$ git submodule update

アップデートのある NuGet のパッケージをアップデートします。エラーが変わります。

なんか MahApps ってやつが使われていることに気が付きます。VS の Tools > NuGet Package Manager > NuGet Packages for Solution... からインストールしてみます。エラーがまだあります。git submodule で参照してるものが MahApps だったことに気付きます。さっきインストールしたパッケージを消します。

Error    1   The tag 'MetroWindow' does not exist in XML namespace 'clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro'. Line 1 Position 23.    C:\Users\kazuki\Programming\StarryEyes\StarryEyes\Views\Dialogs\AuthorizationWindow.xaml    1   23  StarryEyes
Error   2   The tag 'ProgressRing' does not exist in XML namespace 'http://metro.mahapps.com/winfx/xaml/controls'. Line 21 Position 14. C:\Users\kazuki\Programming\StarryEyes\StarryEyes\Views\Dialogs\WorkingWindow.xaml  21  14  StarryEyes
Error   3   The tag 'MetroWindow' does not exist in XML namespace 'clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro'. Line 1 Position 23.    C:\Users\kazuki\Programming\StarryEyes\StarryEyes\Views\Dialogs\KeyOverrideWindow.xaml  1   23  StarryEyes
…

XAML の中で独自クラスをタグとして使うところでなにか失敗してるなーぐらいしか分かりません。とりあえず、その線でググってみます。(ビングりはしません。)

あきらめます。

昼寝します。

起きます。

最初からトライ

$ git reset --hard
$ git submodule init
$ git submodule update

ディレクトリーをまっさらにします。

VS で Start します。

Krile が起動します。

やったね。

最近ミニ四駆がアツすぎるんだが #mini4wd

この記事はミニ四駆アドベントカレンダー 2014 の1日目の記事です。

「『ミニ四駆』そういえばそんなものもあったなぁ」という人向けに、「最近こんなんなっとんねんで」というのを伝えられたらなぁと思って書いています。

【おさらい】そもそもミニ四駆とは

こんなコースで

f:id:kakkun61:20141201225203j:plain

こんな模型を走らせます。

f:id:kakkun61:20141201223739j:plain

  • 手を離したら見守るだけ
  • 事前のセッティングが命

な遊びです。

15年前、25年前に2度のブームがあり、ダッシュ四駆太郎や爆走兄弟レッツ&ゴー!!などの漫画・アニメがはやりました。

爆走兄弟レッツ&ゴー! !  Blu-ray BOX

爆走兄弟レッツ&ゴー! ! Blu-ray BOX

ちなみに私がコロコロコミックを買ってもらいだしたころはレッツ&ゴー!!終わってましたし、アニメは電波が届きませんでした。なので、あんまりなつかしさがなかったりします。

で、今、第3次ブームと呼んでもいいんじゃないかという風が吹いています!

1988年から1999年まで12年間続いたジャパンカップが、2012年に13年ぶりに復活!

f:id:kakkun61:20140424163019j:plain

ミニ四駆、30年以上も続いたホビーですが今なお進化しつづけています。今のミニ四駆がどんなかを紹介しましょう。

2014年のミニ四駆とは

まず、驚くのがミッドシップ

f:id:kakkun61:20141201225607j:plain

モーター・電池を真ん中に置き、モーター軸の両端から車軸に運動を伝達します。もちろん今まで通りのシャフトドライブのシャーシにも新型が出て使われています。

次に大きく異なるのが、「制振」です。

昔はコロコロコミックに踊らされてとりあえず肉抜きをし、いかに軽くするかを考えていました。

それが今は、重りが載っています!

f:id:kakkun61:20141201231029j:plain

というのもコースに「立体」というものがあり、それをどう制するかの中で考え出された改造なのです。

f:id:kakkun61:20141201231700p:plain

このコースは左の山を駆け下りてそのままジャンプします。この重り、上下方向には固定されておらず自由に動くようになっています。ジャンプ後の着地でこの重りを跳ねさせることにより衝撃を逃がしてマシン自体の制振をしようというマスダンパーなのです。

もちろん今でも「平面」のコースもありますし、軽量化は大事な要素には変わりありません。

ほんとにはやってんの

正直、レッツ&ゴー!!の2次ブームほどではないです。ただ、去年の東京大会だと13時に会場に着いてもエントリーできたのに、今は9時に来るとエントリーを締め切られていることもあるくらいで、結構な速さで人が増えていっていることは確かです。

また、コロコロアニキという漫画雑誌が刊行され、大人になった烈と豪が漫画になったり、2015年3月15日発売予定のコロコロアニキ2号には、小学生当時にミニ四駆のデザインをし「シューティングスター」として採用された漫画家武井宏之さんによる連載「ダッシュ!四駆郎」が始まります。

これ以上人気が出ると大会の朝が早くて困るなぁというのもあるのですが、ミニ四駆楽しいので1000円にぎって模型屋さんに行ってみませんか?

ミニ四駆ステーション&ミニ四駆販売店 一覧

プラモデル塗料

プラモデルの塗装をしようとしてるんだけどいろいろ知識がなくて調べたのをまとめる。

種類

  • ラッカー塗料 = 強溶剤系アクリル樹脂塗料
  • アクリル塗料 = 可塑剤系アクリル樹脂塗料
  • エナメル塗料 = 弱溶剤系アクリル樹脂塗料

↑の認識で OK なのかな?
アクリル樹脂を液体にするために、可塑剤を使うものと溶剤を使うものがあって、溶剤系は溶剤の種類で強と弱がある。

続きを読む

ミニ四駆ジャパンカップ2013東京大会1 初2次予選突破

6月23日に品川シーサイドであったジャパンカップで初2次予選突破したぞーい!やったー!
このあいだのスプリンググランプリで初1次予選突破で、その次の大会で初2次予選突破とは!キてるわー。

続きを読む

すごい Haskell 読書会 in 大阪 #7 にチャット参加した

#1-6 までだいたい参加してたので、チャットで問題演習だけ参加した。すごいHaskell読書会 in 大阪 – Lingr でお話してる。
http://atnd.org/events/37645

続きを読む