仕様書とかをgithubで管理してから、半年ちょとでどうなったか

風邪を引いてそろそろ3週間目にはいりそうです。つらい。


さて、以前こういう事を書いていた。
その後予想通りデスマになって、落ち着いてのでこの挑戦がどうなったか振り返ってみようと思う。
2014-03-10 - longicornの日記
2014-03-24 - longicornの日記

当時はどんな状態だったか?

まず、当時は周りを見渡しても仕様書なんかまったく作られないそんな状態だった。
エンジニアすら、そんなの必要ないとかまで言っていた状態。
夢物語を書いた物はあったけど、みんな知識はないしでも忙しすぎて動けない状態だったので、最低でも自分の所属しているプロジェクトだけでも自分で初めて見た結果です。

どうなったか?

ドキュメント

まず、以前書いたとおり仕様書を含むドキュメントは基本githubにあげています。
もちろん仕事なので、有料にしてprivateにしています。
デスマには陥りましたし、その時に書ける範囲でしか書いていませんでしたが、それでも落ち着いてきたら追加、更新もして今では社内で一番ドキュメントが存在するプロジェクトとなりました。
内容は環境構築から、仕様書、リリース方法まで色々。


ドキュメントはMarkDownなので、書く方は楽ですし、githubMarkDownを綺麗に表示してくれるので非常に楽。
この表示機能のおかげで非エンジニもgitアカウントさえ作成させれば見るのには問題ないですし、どうせドキュメントは書かないし、書ける能力も意思もないので下手に編集も出来ないので非常に便利です。
また、YARDのようなドキュメントの自動生成も取り入れています。
今では、他の一部のプロジェクトでもこのやり方を真似してくれる人もいます。
githubを使わなくても、社内で仕様書のフォーマットを共通化しようというプロジェクトも立ち上がって動いています。


ドキュメントを書くことが嫌いな人はエンジニアやそうでないかに関わらずたくさんいますが(自分も嫌いですけどw)、メリットもたくさんあります。
例えば、転職や新入社員への教育、情報共有です。一度書けば同じ情報を共有出来ますし、そこに既存社員の時間を取られません。また、退職やプロジェクトの移動での引き継ぎが非常に楽です。
当たり前なんですけど、これが文字の力で、文字は時間や空間を超えて情報を共有できます。過去の文字が残っているからこそ過去の歴史を知れるわけです。
まあ、ドキュメントを書くのは確かに大変ですし、時間が取られますが、MarkDownならば某Officeとかの面倒な操作に悩まされずにさっと書けますし、時間の経過と比例して管理が楽になります。
"安心感がほしい"と書きましたが、最近は書いておいて本当に良かったという場面は多いですね。

テストコード

安心感といえばテストコードも重要。特に今のプロジェクトはエンジニアは自分一人でほかは営業とか管理の人ばかりのヒエラルキーは逆三角形。
RubyKaigiエンジニアはヒエラルキーの底辺の話を聞いて涙して、マジで死にたい。


だからこそ、時間のある時にはちょこちょこ書いているのですが、まだまだ足りない状況です。
まともな手動テストも出来ない人ばかりなので、テストコードは超重要。それなりにバグは出ますが、本当に大事な機能には最低限テストを書いてバグを見つけて修正を繰り返す。
さらにはJenkinsを使用もしています。
おかげで、なんとか運用ができている状態です。


テストコードもドキュメントと同じく一度書けばあとはそのまま使いまわせて(管理は必要ですが)、時間が経てば立つほど楽になっていきます。
テスト時間が少なくなり、その分足りないテストコードを書いたり、機能を増やしたり出来ます。テストコード万歳!
でも、TDDまではやりません。昔は頑張ったけどあれは精神的にしんどい。プログラミングスタイルというかリズムが変わるしね。
http://d.hatena.ne.jp/longicorn/20120913#p1

結局どうなった?

プロジェクト自体が落ち着いたというのもありますけど、大分楽になっています。一時は数ヶ月は休みがほぼ無い状態が今はほぼ定時から残業あっても1,2時間程度に。
リリースも何回か行いましたが、小さなバグはあるにしろ大きなバグは起きていませんし、おかげで新しい機能の開発にも手を出せています。
人の移動もありましたが、引き継ぎや教育にもさほど苦労はしていません。
さらには、他のプロジェクトにも飛び火したり多少なりとも良い方向に進みだしてます。
多少苦労はしましたがドキュメントやテストコードを書くのは無駄どころか非常に役に立っていると確信してます。
ただ、導入がしんどいのは確か。それなりに知識と経験がないとここが進められないのが悩みどころ。経験のない人ばかりのチームってどうすれば良いんでしょうね?


さて今後は、テストを増やして、細かなバグの修正、リファクタリングなどに手を出せればいいなぁ。
そして時間を作って来年こそはプライベートでの開発や新しい言語とかにチャレンジがしたい。
今年は体調と精神を整えるのでいっぱいです...

PC再セットアップ

久々のblog更新。
仕事いそがしいわ、RubyKaigiとYahoo未来予知アワードの2つのイベントに参加、PCの調子が悪くて色々あってデータ壊れて環境を1から作り直しとかで何もできなかったorz


ともかく忘れないうちに、環境作りなおしたのでメモしておく。
ローカルにもメモはしてるんだけどWebにも。

Arch Linuxを試す

Mintがバージョンアップ毎に再インストールするのが嫌で、前から目をつけていたArchを試してみた。
結果から言うとビデオカードで詰まって、諦めた。
頑張れば出来るんだろうが、すっと行かないので一旦中止。


ただ感想としてコンパイルがほぼ不要なGentooという感覚でなかなかいい。
ローリングリリースなので、一度セットアップすれば環境変わらない限りそのまま使えるのが嬉しい。
ハード変わったら多少めんどくさそうだけど、その場合は作り直しする良い機会な気がする。


ビデオカードは、今まで使っていたのは古すぎてダメ。ARUで行けるらしいが慣れてなくていきなりARUには戸惑って諦めた。
新しく、Geforce GTX 750TIが省電力で今の電源で十分動きそうなので勢いで買ったが、新しすぎて最新のドライバ(nouveau)でも動かなかった。辛い。
公式だと動くとは思うが後で再インストールが嫌で、一旦諦める方向に。

結局Mint

他にも色々有名所のディストリは試したのだけど、結局同じく無理なので、仮環境としてMintで作り直し。


ドライバのインストールはここを参考にしてインストールで動いた。
http://www.kkaneko.com/rinkou/linux/nvidia_ubuntu.html



やっぱりLinuxだとビデオカードはハードウェアの最後の難関だなぁ。
一昔前だと、サウンドも問題あったけど最近は大概問題なく動くし。良い時代になったものだ。

Mint Linux 16(Petra)から17(Qiana)へaptでアプデしてみた

skypeプロトコル変更して繋がらなくなったり、そもそもaptが配布されなくなったりしたので思い切ってupgradeしました。
短いですが今年初めての長期休暇とれましたし(日曜でないとダメだけど...)、やってみようかと。


さて、公式にはこのようにあります。
http://community.linuxmint.com/tutorial/view/2

 To be safe:

    Make a full backup of your data on an external device (USB stick or CD/DVD)
    Download and burn the liveCD of the newer release, and check that your hardware is fully functional with it.

早い話がデータバックアップして、新規インストールしてね的な。
いや、MintってUbuntu派生だし、UbuntはDebian派生なのでapt line変えてupgrade出来るだろと。
サポート面倒だからこういう方法にしてるのかな? 慣れてないと躓きそうだし。


まあともかく、最悪はなんとかなるはずなのでやってみました。
基本的にはここに書いてあるとおりにします。
http://www.tecmint.com/upgrade-linux-mint-16-to-linux-mint-17/


apt lineを以下の2パターンで切り替えます。
これUbuntuのaptも使ってるから2種類あるのだとだと思います。
s/saucy/trusty/
s/petra/qiana/


あとは、ふつうにDebianと同じようにアプデします。
$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get upgrade


自分の場合はdist-upgradeで何回か止まり、その度に'apt-get install -f'しました。
'apt-get install -f'が終わればまたdist-upgradeの繰り返し。
終われば当然再起動。


ひとまずこの手順で問題なく動作しています。

[Linux] SteamでCivilizationⅤ がLinux対応に!

少し仕事が落ち着いてきたのですが(嵐の前の静けさとも言う)、ふとSteamを見るとCiv5がLinux対応になっているじゃないですか。

環境

まずはLinuxの環境から。

OS

Linux Mint16。17出てますがまあ別に急いでいないのでアプデしてません。

CPU
$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6 
model           : 58
model name      : Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
  
VideoCard

GeForce GTX275
2009年あたりの製品のようです。結構大分古いですがLinuxなので特に気にせず使えてます。
特に映像の綺麗さにこだわってもないですし、必要ならば適当に買うつもりですが困ってないですしね。
むしろディスプレイがHDMIがついておらず、そろそろ厳しいかなぁと。

Steam本体

Steamはaptにもあるのですが、公式からインストールしました。特に問題なく起動します。

インストール

ということで早速Civ5をインストールすると20分程度で終了。


起動すると音が少し飛びますがまあ問題なくオープニングも再生されています。
テストプレイを2時間程プレイしましたが、特に問題なくプレイできました。
音飛びはOPだけっぽいですね。プレイ中は気にならなかったですがステトラジ系だからかもですね。さほどCPUもメモリも使わない方向のゲームですし。
アクション等の派手目のゲームになると今のスペックだと厳しいかもしれません。

スクリーンショット

Linuxでここまで動きます。素晴らしい!

Linux対応ゲームの現状

SteamがLinuxに正式対応したのが去年(2013年)の3月前後くらいでしょうか?
Steam Machineの発表などもあり大分力を入れているようです。実際にCiv5が対応したわけですし。


さてLinux対応ゲームはどうなっているのかと思ってさらっと見てみたのですが、数は以前見た時よりも増えた印象はあります。
TOPセールを見ていくとところどころLinux対応のゲームがあるようです。とは言っても実際まだまだWindowsの天下ですが。


でもCiv5のような大型ゲームが対応してきたわけですし今後にかなり期待です。
最近ゲームのためにWindowsマシンを買うか悩みだしていましたが、買わなくて済みそうですね。いざとなればwineでもある程度動きますしね。

[Linux] 最新?のFlashを使う方法

すでに大分前にAdobeLinux用のFlash Playerを11.2でリリースを終えると公表しています。
つまり、動画サイトを利用するには期限が出てきます。まあGnu Gnashというのもありますがまだまだでしょう。


というのが前提情報。で、今日ニコニコ動画を見ようとしたらついに最新バージョンじゃあないとか言われて動画が再生出来ない状態にorz。
いやいちいちチェックするなよと思いつつ、最近は結構依存しているのでWin用PCを買うとかMacを買うとか色々考えました。いや、Macは今年中には買いますけど....


で、確かGoogle ChromeLinuxでも独自でFlash Playerを付属していたはず。でもエラーがでる?
色々検索したら http://helpx.adobe.com/jp/flash-player/kb/cq20120816.html を発見。

これで再生できたのでメモしておきます。

C. Google ChromeFlash Player を有効にする

LinuxFirefox 用の最新の Flash Player は 11.2 ですが、Google Chrome ではより新しいバージョンが提供されています。コンテンツの再生に最新のプラグインが必要な場合は、デフォルトの Pepper Flash Player プラグインを有効にします。

    Google Chrome を起動し、アドレスバーに以下の文字列を入力します。

    chrome://plugins
    Details をクリックし、Flash セクションに移動します。
    libpepflashplayer.so の「Enable」をクリックして有効にします。
    ブラウザーを再起動し、リッチメディアコンテンツが再生されるか確認します。

おそらくデフォルトだとシステム側のflashライブラリを見ていたんだろうな。


ということで結論。Linuxユーザは動画再生だけはブラウザをChromeにして、上記設定すればあとは常に最新のFlash Playerが使えるはずです。
Googleさん、サポートはぜひ続けてください!