2017年12月12日火曜日

Windows で再起動時にエクスプローラーの状態を復元

最近お仕事で Mac を使うことが増えたのですが、Mac を起動したときにシャットダウンしたときの状態に戻るのでがすごく便利だなーと思ってたんですね。
これ Windows でもできないのかなーと思って調べたら、(エクスプローラーのみですが)標準機能でできたんですね!
もう10年以上お仕事してますが、めっちゃ損してましたよ!

設定の仕方
表示メニューを開き、一番右にあるオプションボタンからフォルダオプションを開きます。

フォルダオプションを開いたら、「表示」タブを選択します。
詳細設定のリスト中に「ログオン時に以前のフォルダーウィンドウを表示する」があるのでそれにチェックを入れます。

これで設定完了です。

アプリは復元できないのか?
エクスプローラーの状態を復元することはできましたが、Mac のように各アプリの状態も復元したいです。
これに関してググると大抵「Cache My Work を使おう」という記事が見つかります。
PC再起動時にアプリケーションやウィンドウの状態を復元する - @IT自分戦略研究所
再起動後に仕事を再開しやすくする·Cache My Work MOONGIFT
『Cache My Work』で再起動の後にワークスペースを復元! | ライフハッカー[日本版]
Windows 標準でできたら嬉しかったですねぇ…
後述しますが導入は見送りました。

Chrome のタブの状態を戻す
これは個人的によくやっている手段ですが、
Chrome では Ctrl + Shfit + T で以前開いていたタブを開き直すことができます。

履歴は有限ですが、複数回押せばその分タブの状態を復元できます。

会社来て、ブラウザ開いたらまずこのショートカットを打ってます。

最後に
Cache My Work の見送り理由
Windows 標準機能でないってのも理由の1つですが、そもそも再起動することが減ってました。(スリープさせることが多い。会社だとシャットダウンしますが…)
あと、実は再起動時に復元して欲しいものって、エクスプローラーとブラウザの状態がほとんどだなーと思ったからです。
であれば、Cache My Work を使わなくても問題ないので見送りました。

機能はデフォルトON
前の仕事場でもよく言われてきたことですが、なにか機能を作ったとき、
その機能を ON/OFF できるのなら、デフォルトは機能が有効になるようにすべきであると思います。
(当てはまらないケースも当然あると思いますが)
ユーザーが邪魔だな、おせっかいだな、どうしたら機能無効にできるんだろう?って思われようが、機能があることを知ってもらうのが大事です。
「実はその機能あるんです」ってなんの自慢にもならない。



あらためて、ふりかえるイイ機会になりました。
あー

2017年12月5日火曜日

Google Home を買った

東京に来てだいぶ落ち着いてきたので、Google Home を買いました!

「すみません、お役に立てそうにありません」
そんなことばかり言わせてしまってますが、まぁまぁそれは今後に期待するとして…


やっぱり外部連携させたいですよね!
ということで、さっくりやってみました~

とりあえず IFTTT で連携
とりあえず IFTTT で連携できることはしっていたので、それを使うことにしました。

やり方とかは参考ページを見ていただければと思います。(二番煎じ、三番煎じなので)

「twitterで $ とつぶやいて」で $ の部分がツイートされるようにしてみました。
実際にやって結果がこちら。


入寮判定のコツ
入力の判定にあたって、少しだけコツがありました。
入力は全部ひらがなで入ってくるわけではなく、アルファベットや漢字に変換されることです。
たとえば、「きょうはいつかえるの」をトリガーにしたい場合は、「今日はいつかえるの」では一致せず「今日はいつ帰るの」で一致しました。「ついったー」は「twitter」でした。
IFTTT では、キーワードは1つではなく複数設定できるので、いくつかバリエーションを登録しておくとイイかもしてません。


Google Home がどう認識したか確認する
Google Home がどう認識したか、ちゃんと確認できます。
セットアップで「Google Home アプリ」をインストールしたと思いますが、そちらのメニューの「マイ アクティビティ」を開いてください。
こちらがコマンドを認識させるのに役に立つと思います。


最後に
Google Home を使って色々やってみようと思うので、またここで報告できたらと思います。
では~


※今セールで半額なので買うには良いタイミングだと思います。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

【楽天スーパーSALE限定価格】Google Home Mini チャコール
価格:3240円(税込、送料無料) (2017/12/5時点)



[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

【楽天スーパーSALE限定価格】Google Home Mini チョーク
価格:3240円(税込、送料無料) (2017/12/5時点)




ビックカメラなら Mini じゃない Google Home も半額です!

ビックカメラ.com | Google Google Home GA3A00538A16

2017年11月28日火曜日

[CI] Rocro で public リポジトリが使えるようになっていた!

Rocro で public リポジトリが使えるようになったので、iutest での本格的に運用を開始しました!
前回の紹介記事はこちら→「ブログズミ: [CI] Rocro 使ってみた

今回は前回試してみたときからパワーアップしたところを紹介しつつ、設定したところも紹介します。

前回との差分
public リポジトリが扱えるようになった!
まずはこれですね。前回は private リポジトリのみだったので、Bitbucket に private なリポジトリを作って試していましたが、これで本格運用に入れます!

Cppcheck の結果が集計されるようになった
前回使ったときは、Cppcheck の結果はログからみる必要がありましたが、現在は他のツールと同じように集計されて見やすくなってます。



ファイルグレードが表示されるようになった
続いて目に入る変化としてファイルグレードがあります。
以下のようにレポートに表示されるようになってました。


これは解析結果からファイルを「Grade A」~「Grade F」に評価したもののようです。
指標の1つとして使えそうです。

バッジにファイルグレード版が追加されました
最後に、ファイルグレードの結果がバッジとして使えるようにもなってました。
こちらは通常のバッジと同じく、「Settings」にある「Badges」から使うことができます。


rocro.yml に Cppcheck の設定を書く
Cppcheck の解析結果が表示されるようになりましたが、インクルードパスなど適切に設定しないとあまり意味のないものになってしまします。
ツールなどへの設定は rocro.yml で指定できるようなので、設定してみました。

参考:Cppcheck · INSPECODE



ほかにも環境変数などの設定もできるようですが、まだ「EXPERIMENTAL」、実験中みたいです。


使ってみて気になったこと
  • --force オプションつけるとタイムアウトしてしまう
    -D/-U オプションで解析ブランチを減らすか、--max-configs で深さを指定することで回避するしかなさそう
  • 並列オプションが使えない
    -j オプションほしいですね。
  • suppress に syntaxError を指定したが一部の除外されないものがある
    これは Rocro 側ではなく cppcheck の問題だと思います。(ローカル環境でもそうだったので)
    syntaxError で報告されてるけど、内部的にエラーIDが異なってたりするのだろうか?
  • ログの詳細がみたい。Cppcheck の解析中のログも見れたら設定の参考にできるな、と思った。

最後に
iutest での本格運用を開始しましたし、まだ使っていないツールもあるので、
またノウハウが蓄積したらブログにしたいと思ってます。

Supported Tools · INSPECODE


scan-build があるから Semaphore から Rocro に引っ越しできそう
Rocro のさらなる進化に期待してます。
今回は以上です。では。

2017年11月22日水曜日

CloudBees Jenkins Advisor をインストールしてみた


第11回 Jenkins勉強会」で知った CloudBees Jenkins Advisor をインストールしてみました。
勉強会参加報告はこちら→(ブログズミ: 「第11回 Jenkins勉強会」に参加してきました



SignUp してインストール
「USE IT FREE NOW!」からサインナップします。


完了すると以下のような画面になります。
Trial Period Overなのは、むかーし使ってたことがあるから。前と大分変わりましたね)


以前に登録していたので SignUp 手順が確認できませんでしたが、必要になってくるのはアカウント名とパスワードなので、それがあれば問題ありません。


プラグインインストール
プラグインのインストールは普通に Jenkins のプラグイン管理からできます。
「CloudBees Jenkins Advisor Plugin」があるので、いつもどおりインストールしましょう。



セットアップ
「Jenkins の管理」を開くと以下のようなメッセージが出ています。「Connect Now」をクリックしましょう。


接続設定画面が開くので、先程登録した「CloudBees」のアカウントメールアドレスとパスワードを入力します。
「Advanced configuration」がありますが、とりあえず使いたいだけなので特に設定せずに「Connect account」します。


すると、アカウントメールアドレスに以下のようなメールが来ます。
レポートが1日ごとに来るようなので、1日待ちましょう。


レポート




なんか出てますね・・・
とりあえず今回はインストールして使ってみただけなので、ゆくゆく調べながら対応していきますか。

最後に
Jenkins Advisor についてはこちらの CloudBees のブログにも書かれています。
Jenkins AdvisorでJenkinsのダウンタイムを防ぐ | Cloudbees Jenkins Solutions
ロードマップによれば、閉じられた環境の Jenkins の診断対応やダッシュボードの追加がされるようです。
こちらにも期待しつつ、インストールした状態でしばらく使ってみようと思います。

では。



2017年11月13日月曜日

「第11回 Jenkins勉強会」に参加してきました

どうも僕です。仕事が始まって1週間。こちらでの生活にも慣れてきました。
そんなこんなで「第11回 Jenkins勉強会」に参加してきました。
東京来て一発目の勉強会!久しぶりの参加報告って感じですね。

今回の講演は3つ + LT 3本立て。
「初めての自動テスト meets Jenkins」


最初は「初めての自動テスト ―Webシステムのための自動テスト基礎」を翻訳された玉川紘子(@nkns165)さんの講演。

原著者がアジャイルサムライを書いた人と一緒とか、CI の章がないが CI があっての自動テスト(あるの当たり前)とか、翻訳こぼれ話とか、興味深い話が聞けました。
自分も本に関わってみたいなぁー



「Jenkins World 2017 の報告」
2つ目は Jenkins World 2017 で「Most Valuable Advocate」受賞の中村知成(@ikikko) さん!
(そのへんは @ikikko さんのブログへ)



Jenkins Advisor はじめて知りました。さっそく使ってみようと思いました。

Jenkins world の動画はここかな?
https://www.youtube.com/user/CloudBeesTV


「Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ」
最後は川口さん!

↓は今回の講演と(たぶん)同じヤツ




#はい

when で任意ブランチでのみ stage できるっぽいので、iutest のパッケージビルドを Jenkinsfile にお引っ越ししようと思いました。


LT
ここから LT
遠くの"計画"よりも今日の"CD"(継続的デプロイ)


タミヤ カムプログラムロボット工作セットで作るXFD


開発者(個人)のためのJenkins 運用編


感想
参考になる話、知見、情報と持ち帰るものが予想以上にあってよかった。
LT はホントいつも面白いし、すごい!
懇親会でも色々いいお話聞けたのでとっても大満足。

最後に、テクマトリックスさん、スタッフのみなさん、そして講演者の方々、ありがとうございました~

2017年11月8日水曜日

[Appveyor] イメージを環境変数で指定する

今回は Appveyor で環境変数を使ったイメージの指定を紹介します。
iutest のテストでイメージごとにそれぞれ異なる環境変数を設定したかったときに、この方法に行き着きましたのでそれの紹介です。

テストではよくマトリックスを組んで複数の環境でテストをすることが多いと思います。
Appveyor なら、イメージが複数用意されているので、それぞれでテストを実行することになります。その場合はイメージを複数指定すれば OK です。
さらに環境変数を列として、イメージ×環境変数のマトリックスも組むこともできます。
さきにこちらの方法を紹介しておきます。

イメージと環境変数のマトリックス
まずイメージは「SETTINGS」「Environment」の「Build worker image」で複数設定することができます。
指定したイメージの分だけ、ジョブが実行されます。


さらに、同じく「Environment」の「Environment variables」で環境変数を指定できます。
「Add variable」だと、各イメージで共通の環境変数が設定されますが、「Add build matrix group」では環境変数のマトリックスを作成できます。


グループを追加すると「Environment variables - 1」「Environment variables - 2」のようにグループが増えていきます。
それぞれ「Add variable」から環境変数を設定できます。



テーブルにするとこんな感じです。
ENV_M valueVisual Studio 2015Visual Studio 2017
Environment variables - 111
Environment variables - 222

Visual Stduio 2015/2017 のイメージそれぞれに対して、ENV_M が 1 と 2 のジョブが実行され、計4つのジョブが実行されます。

iutest でやりたかった構成
さて、これに対して iutest でやりたかったことはこうです。
ENV_M valueVisual Studio 2015Visual Studio 2017
Environment variables - 11×
Environment variables - 2×2
※×印はジョブを実行しないという意味です
上と合わせて書きましたが、わかりやすくするとこうです。
Visual Studio 2015Visual Studio 2017
ENV_M value12
つまり、マトリックスにしたいわけではなく、イメージ対して一意な環境変数を設定したいわけです。



これができないか調べていたら、イメージのマトリックスを使わずに、「APPVEYOR_BUILD_WORKER_IMAGE」環境変数でイメージの指定ができることを知りましたので、これで解決しました。

イメージを環境変数で指定する
環境変数マトリックスでイメージを指定するので「Build worker image」は空にします。
次に、「Add build matrix group」で環境変数のグループを作成し、環境変数名「APPVEYOR_BUILD_WORKER_IMAGE」でイメージの名前を設定します。


これで実行すると「Environment variables - 1」のときだけ、イメージ設定が上書きされます。


環境変数が変わっただけでイメージが変わってないかもしれないので、以下のコマンドで確認しました。


結果、このようにイメージが変わっていることを確認。


まとめ
イメージに対して環境変数を別途指定したい場合は、環境変数のマトリックスと APPVEYOR_BUILD_WORKER_IMAGE を使うと実現できます。
イメージ×環境変数のマトリックスを組みつつ、イメージに対して個別で一意な環境変数をセットしたい場合は、APPVEYOR_BUILD_WORKER_IMAGE 環境変数を参照して判断するのが良さそうです。

マトリックス化する予定があるなら、最初から APPVEYOR_BUILD_WORKER_IMAGE を参照して分岐させるほうがいいかもしれないです。
このへんは好み、かなぁ・・・
ともあれ、APPVEYOR_BUILD_WORKER_IMAGE は ReadOnly じゃなくて Write もできるってことを覚えておくと今後役に立つかもしれません。(たぶん)


今回は以上です。では。

2017年11月1日水曜日

初出社

本日、初出社でございます。
報告記事でブログ更新回数を稼いでいますが、ここ1ヶ月ほどやることが多くて全くもってプログラムをしてませんでした。(引越前の駆け込み観光とか引越後の観光とか)インプットがないとアウトプットもなかなかないわけで…

休暇も終わってこれから新天地での生活ルーチンが構築されていくわけですが、これまで通り趣味プロやブログを書く時間を作っていきたいと思います。(早速この記事は通勤中に書いてます)

では、今後ともよろしくお願いしますm(__)m

2017年10月4日水曜日

[CI] Rocro 使ってみた

ソニーネットワークコミュニケーションズ、新会社「Rocro株式会社」を設立
ソフトウェア開発者向けサービス群「Rocro」のベータ版の提供を開始
~自動コードレビュー、自動APIドキュメント生成、自動負荷試験をSaaSで提供~
http://www.sonynetwork.co.jp/corporation/release/2017/pr20170914_0036.html



ちょっと見てみたら、C++ にも対応しているようだったので試してみました。

登録
Rocro にまずはアクセス。
INSPECODE LOADROID DOCSTAND の3つありますが、今回は INSPECODE を使ってみます。



「Sign in」ボタンを押すと Github か Bitbucket の選択肢が出てくるので好きな方を選んでください。
(※後述しますが、現時点では public リポジトリに対応してません)


今回は Github を選択しました。
ナビゲーション通り進めれば登録は完了するはずです。

完了すると、ダッシュボードが表示されます。

Repositories をクリックして検証したいリポジトリを登録しましょう。

リポジトリ登録
「Repositories」を開くと以下のように表示されました。


「As of now, only private repositories are supported. Public repositories will be supported soon.」
Public リポジトリに対応してませんでした(2017/10/2 現在)
いずれ対応するとのことなので、ひとまず今回は Bitbucket に private リポジトリを作って試してみることにします。



気を取り直して Bitbucket でサインインするとこのようになります。



無事、リストアップされましたので、解析したいリポジトリを選択して登録をします。

解析
リポジトリ登録すると自動で解析が始まります。









けっこう待ちます。
(Cppcheck がながいのかな?)







解析が終わりました。赤くなっているということは何かしら問題があったようですね。
アイコンをクリックして結果を見てみましょう。

解析結果を見る


まず開くとこのようなページが表示されます。
失敗原因は Cppcheck のようです。
下にスクロールしていくと出力からどこが原因かがわかります。


(ログから読み解くのではなく、Jenkins みたいに集計できるともっと便利ですが…今後に期待)




ついでなので、ほかの解析結果も見ていきましょう。
「View Report」ボタンを押してください。



まずは「Summary」

シンプルな感じ。

「Files」タブを開くと各ファイルのメトリクスを見れます。

各ファイルをクリックすると詳細が確認できます。(Issues とソースコードとメトリクスの詳細)

「Issues」タブを開くと問題の詳細が確認できます。(サマリーからも飛んでこれます)



うーん。「ブログズミ: 続・ソースコード中の単語からの略語/スペルミス検出に挑戦」で直しきれなかったミススペルが・・・(コメント中のミススペル。コメントもチェックするように変えようかなぁ…)

Settings
一応「Settings」でできることも紹介しておきます。
まず、「Notifications」では通知設定ができます。現時点では「メール」「Slack」「HipChat」の設定ができました。

「Bitbucket/Github」ではホスティングサービスとの連携周りのリセットができます。
(※Github は private リポジトリを持ってなかったため未確認)

「Branches」では、CI を回すブランチを指定することができます。


バッジ
最後にお約束のバッジの付け方です。
バッジも「Settings」の中にあり「Badges」タブを開くと以下のようにテキストが得られます。



今は赤いですが、そのうち対応したい・・・


最後に
まだ public リポジトリに対応していないため、私が使いたいリポジトリでは直ぐには実運用はできない状態ですが、private リポジトリで開発している方なら問題なく使っていけるかと。
特に Cppcheck がデフォルトでチェックされるのが便利ですね!(結果の見やすさ改善は今後に期待)
コードレビュー系の CI サービスで C++ をサポートしてるのって珍しい気がするので、とってもありがたいです。
public リポジトリ対応されたら、iutest での運用を開始しつつ、より深く触っていきたいと思います。

以上。