LoginSignup
4
4

More than 5 years have passed since last update.

Flow最新版をWindowsで動かしてみた

Posted at

注意

この記事は 2016/06/29 時点の内容です。FlowのWindows対応は現在進行中のため、ここに書いてあることはすぐに陳腐化する恐れがあります。

はじめに

2016/06/29時点ではFlow (v0.27.0) はWindows環境に正式対応していない

Requirements

Flow works with:

Mac OS X
Linux (64-bit)

そこで、どうしてもWindows環境でFlowを使いたい場合は、OCamlPro teamによるビルド版を使うという方法があった。過去にQiitaの記事このOCamlPro team版が紹介されていた。

しかしながら、OCamlPro team版は2015年12月以降は更新が止まっており、バージョンが0.19.1と古いままとなっていた。

そんな時、FlowのWindows対応のIssueをsubscribeしていると、二日前に 最新版をWindowsでビルドできるようになったよ というコメントが投稿されたことに気づいた。

oviava commented 2 days ago

You can build the latest version directly with OCAML win:
https://gist.github.com/oviava/9c7f0a5ec2fdcdc737b0a75239e6546f

このコメントを投稿したoviava氏は上記GistでWindowsでの動かし方について書いてくれている。
というわけで自分もこれを参考にして動かしてみた。

事前準備

OCPWinのインストール

FlowのビルドにOCamlが必要なので、Windows版バイナリのOCPWinをこちらから入手してインストールしておく。
なお、oviava氏のGistでは ocpwin64-20160113-4.01.0+ocp1-full-mingw64.exe が使われていたが、自分は少し新しい ocpwin64-20160113-4.02.1+ocp1-full-mingw64.exe で試してみている。

ansiconのインストール

コマンドラインでflowを実行すると、ANSIエスケープシーケンスで色付けされるのだがWindows7のコマンドプロンプトやGit Bashだとこれが認識されず、制御文字丸見えで非常に読みづらい。
Windows7だと ansicon をインストールすればこれは解決できるので、入れておいた。

※試していないがWindows10だとANSIエスケープシーケンスのサポートがされたようなのでansiconは不要と思われる。

Flowのビルド

Flowをソースよりビルドする。まずはGitHubよりソースを取得する。

GitHubよりgit clone
git clone https://github.com/facebook/flow

後は、ビルドスクリプトとして make.batがあるためこれを叩くだけと簡単。Windowsのコマンドプロンプトを開き実行すればよい。ただし、masterブランチの状態によってはビルドが失敗するケースがあるの注意。
例えば 2016/06/29時点で最新のcommit 120140baef42941b786dfa1e0cb2953b32a6882cならビルドできたが、1つ前の commit 92ee96f32c3e327e7bae0e5aae60f8f0050e859c ではビルドが壊れてしまっているので注意。

ビルド実行
c:\Users\wadahiro\src\github.com\facebook\flow>make.bat

c:\Users\wadahiro\src\github.com\facebook\flow>REM No echo arguments will be printed in the current state
find_project_root
...
0.06s flow\flow.cmo                                                    [ done ]
0.16s flow\flow.cmx                                                    [ done ]
0.98s flow\flow.byte.exe                                               [ done ]
1.84s flow\flow.asm.exe                                                [ done ]
Build Successful in 83.26s. 761 jobs (parallelism 0.8x), 1265 files generated.
ocp-build: Leaving directory `c:\\Users\wadahiro\src\github.com\facebook\flow'
        1 個のファイルをコピーしました。

後はビルドされたflow.exeをPATHが通っているc:\Users\<my_user>\AppData\Roaming\npm\にコピーしておく。

flow.exeのコピー
c:\Users\wadahiro\src\github.com\facebook\flow>copy bin\flow.exe c:\Users\<my_user>\AppData\Roaming\npm
        1 個のファイルをコピーしました。

使ってみる

$ flow init
$ flow check
Found 0 errors

エラーケースを試す。下記内容のindex.jsを作成し、

index.js
// @flow

function foo(n) {
  return n * 2;
}

foo('bar');

flow checkすると、ちゃんと動いていますね!

$ flow check
index.js:7
  7: foo('bar');
     ^^^^^^^^^^ function call
  4:   return n * 2;
              ^ string. This type is incompatible with
  4:   return n * 2;
              ^^^^^ number


Found 1 error

Nuclideでも試してみた

oviava氏のGistでは、Windows環境のNuclide上でFlowチェックを走らせる方法も書いてくれている。

Gistによると、c:\Users\<my_user>\.atom\packages\nuclide\pkg\nuclide-flow-base\lib\FlowHelpers.js の修正が必要と書かれているが、実はoviava氏がNuclideに本問題のPull Requestを出しており既にマージさている。なので、最新版(v0.148.0)のNuclideを使えばこの問題は発生せず、修正は特に不要である。

コマンドラインでチェックしたindex.jsをNuclideで開くと、下記のようにこちらも無事に動作することを確認した。

nuclide_flow.png

まとめ

ずっと放置されていたみたいだが、ようやくFlowもオフィシャルにWindows対応してくれそうな動きになってきました。ただし、Windows対応のIssueでFlow開発者のgabelevi氏が下記のようにコメントしており、まだ使用はおすすめはしないとのことなので、実プロダクトへの適用はもうちょっと待ったほうがよさそうです。

@oviava - yep, as you've noticed Windows support is getting closer! It builds and mostly works, but I wouldn't recommend it quite yet.

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4