2016年10月11日火曜日

TreeTagger を使ってソースコード中の単語をリストアップしてみた

ちょっと入用で、ソースコード中の単語をリストアップしてみました。
お仕事で MeCab を使って日本語テキストを解析して、「とあること」の検出ができないかなーと試したことがあったのですが、今回はソースコードの単語を抽出して「とあること」をしようと思いついたので、やってみました。

ソースコードからの単語検出ということで、英語の形態素解析ツールを使うことにしました。
今回使ったのは TreeTagger です。
環境は Windows + TreeTagger + Python です。



TreeTagger のインストール
WIndows にインストールする場合の手順はこちら
tree-tagger-windows-X.X.zip (筆者ダウンロード時は 3.2)をダウンロードしたら展開し、INSTALL.txt に従ってインストールします。
要約すると、Perl のインストールと、必要なパラメーターファイルを .par 拡張子に変えて lib に置くことと、C:\TreeTagger に配置して bin フォルダを PATH に通せば OK。
※ C:\TreeTagger なのは bat ファイルにパスがベタ書きされているため。別にここである必要はないです。
※ Perl も今回は Python から呼び出すのでなくても問題ない

今回、言語は英語を使います。こちらからパラメーターファイル(English parameter file)をダウンロードしました。
http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/#Linux

TreeTagger を Python から使う
検索して一番最初に出てきた treetaggerwrapper を使用することにしました。
最初に書いた参考URLではダウンロードしてインストールしていましたが、pip からインストールできるようだったのでそちらでインストールしました。
pip install treetaggerwrapper
pip install six

※ six は treetaggerwrapper が使ってるので、なければインストール

treetaggerwrapper.py は english.par を要求するので、TreeTagger のインストールでダウンロードしてきたパラメーターファイルをコピーリネームしておきます。

試しに以下のサンプルを実行します。
import treetaggerwrapper
import os

tagdir = os.getenv('TREETAGGER_ROOT')
tagger = treetaggerwrapper.TreeTagger(TAGLANG='en',TAGDIR=tagdir)
tags = tagger.TagText(u"Save the time of the reader. SAMPLETEST. SampleTest.")
for tag in tags:
    print tag

TAGDIR には TreeTagger のインストールディレクトリを指定しますが、bin に PATH が通っていれば空で問題ないようです。

ソースコード中の単語のリストアップ
とりあえず、コメント行(// で始まる行、/**/ や行末コメントは非対応)除いてリストアップしてみました。
対象のソースコードは iutest の実装全部入り(fused-src/iutest.hpp)です。


C++ のキーワードを除外するとこんな感じ。


圧倒的に iutest が多いですね。(当たり前か)

リストアップに使用したソースコードは github で公開しています。
https://github.com/srz-zumix/taggertool

2016年10月7日金曜日

Visual Studio "15" Preview 5

Announcing Visual Studio “15” Preview 5 | The Visual Studio Blog
Visual Studo 15 Preview 5 がリリースされたのでインストールしました。
実は Preview 4 のときはトラブってかなり苦労したので(結局あきらめた)、今回も…と思ったのですが、
あっさりインストールできてしまいました。



Preview 4 のときはインストールが失敗して苦労したんですよね…




そのころメモってブログにあげようと思ってたのが以下。
(このまま消すのもあれなので、アップしちゃう)


「Visual Studio "15" Preview 4 のインストールが「this directory is not empty」で失敗する」

https://blogs.msdn.microsoft.com/visualstudio/2016/08/22/visual-studio-15-preview-4/#comment-203695

こちらに同様の質問があります。
"Program Files (x86)\Microsoft Visual Studio\VS15Preview" を削除しろと回答があります。
該当のフォルダが残っていたので削除、インストールできたと思ったら別のエラー。。。

2016-08-28T23:04:11 : Verbose : Getting installed product. [installerId: SetupEngine, installationId: 9c96d633, productId: Microsoft.VisualStudio.Product.Enterprise]
2016-08-28T23:11:33 : Warning : Installation package warnings:
Package 'Microsoft.VisualC.RuntimeDebug.14' failed to install
Package 'Microsoft.VisualC.RuntimeDebug.14' failed to install
2016-08-28T23:11:33 : Error : Failed to update product. [installerId: SetupEngine, productId: Microsoft.VisualStudio.Product.Enterprise, installationPath: 'C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview', error: Package 'Microsoft.VisualC.RuntimeDebug.14' failed to install;Package 'Microsoft.VisualC.RuntimeDebug.14' failed to install at Error: Package 'Microsoft.VisualC.RuntimeDebug.14' failed to install;Package 'Microsoft.VisualC.RuntimeDebug.14' failed to install
    at SetupEngineAdapter.handleError (C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\lib\Installer\Adapters\SetupEngineAdapter.js:316:31)
    at C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\lib\Installer\Adapters\SetupEngineAdapter.js:154:45
    at process._tickCallback (internal/process/next_tick.js:103:7)]
2016-08-28T23:11:34 : Verbose : Getting product summaries. [installerId: SetupEngine]
2016-08-28T23:11:34 : Verbose : Getting installed product summaries. [installerId: SetupEngine]
2016-08-28T23:11:34 : Verbose : Getting product. [installerId: SetupEngine, productId: Microsoft.VisualStudio.Product.Enterprise].
2016-08-28T23:11:35 : Verbose : Getting installed product. [installerId: SetupEngine, installationId: 9c96d633, productId: Microsoft.VisualStudio.Product.Enterprise]

https://blogs.msdn.microsoft.com/visualstudio/2016/08/22/visual-studio-15-preview-4/#comment-203435

We will have this issue fixed in the next release of Visual Studio. For now you can ignore the error and the debugger will still work fine.

エラー出るものの使えるみたいです。

しかし、なんとも気持ちが悪いので、上のリンク先にも書いてある vc_runtimeDebug*.msi をアンインストールしてから、再度インストールしました。



一応大丈夫そうです。たぶん。

2016年10月5日水曜日

無料で使える CI サービス比較(定期実行編)

SCM との連携で更新タイミングで CI が実行されるサービスがほとんどですが、ちょっと定期的に実行させたいことがあり調べたのでまとめました。

以前まとめた情報はこちら
※まとめた時期が結構前なのでもう腐った情報になってるかもしれませんので注意!
ブログズミ: 無料で使える CI サービス比較
ブログズミ: 無料で使える CI サービス比較(Artifacts)

AppVeyorCircle CICodeshipdrone.ioMagnum CIsemaphoreShippableSnap CITravis CIWercker
定期実行 × ×

Appveyor
Build configuration - AppVeyor
Syntax はこちら Crontab Expression · atifaziz/NCrontab Wiki
Jenkins と同じ感じです。


Circle CI
Circle CI では定期実行する仕組みはありませんが、外部から実行開始することができます。
Nightly Builds - CircleCI
なので、何かしらの cron サービスと組み合わせれば定期実行は可能というわけです。

実際に定期実行させた例が Qiita にありました。

Codeship
API | Codeship Documentation
API が用意されていて、リスタートはできそうなのですが、新規に実行する方法が?だったので×にしました。

Magnum CI
Circle CI と同様に外部から実行開始できるので △ にしました。
https://magnum-ci.com/docs/integration

Semaphore
Project Settings に Build Scheduler があります。
Scheduling builds - Semaphore


Shippable
API を利用して外部から実行開始できるので △ にしました。
Shippable API for Projects - Shippable Docs

Snap CI
Scheduling and skipping builds | Snap CI Documentation, FAQ, and Troubleshooting
プロジェクトのページに「Build Schedule」があるので、そこから設定できます。



Travis CI
Cron Jobs - Travis CI
Please note that cron jobs are not enabled by default. Set “Build pushes” to on in your settings, then ask us to unlock this feature for your repository: support@travis-ci.com
デフォルトでは使えません。サポートチームに連絡する必要があるようです。

Wercker
Introducing Cronetes
こちらにやり方が書いてあります。が、ちょっと面倒くさそう。

最後に
ここで×としたサービスもただ単に機能を見逃しているだけで使えるかもしれません。
また、この情報記事投稿前の情報です。今後サービスは拡充していくと思いますので、公式ページで最新の情報を確認するようにお願いします。


さて、これで一旦調べ終わったので、どこかで定期実行ジョブを作りたいと思います。
では、今回は以上。