読者です 読者をやめる 読者になる 読者になる

四十三庵

蔀の雑記帳

ソースコードは書いた瞬間にブラックボックス化していく

IT

最近仕事でブラックボックスになったシステムをどうにかするみたいな流れになっている。
そんな流れで、システムのブラックボックス化について考えたことのメモ書き。

  • ソースコードは書いた瞬間にブラックボックス化していく

新規システムは、開発というフェーズが必要となる。
誰かがプログラミングして、ゴリゴリ開発することになるんだけども、
その瞬間に既にブラックボックス化が進行していく。
今日書いたコードは明日には忘れていくし、一年後には他人が書いたようにすら見える。
開発者の中で忘れていくプロセスがまず存在する。

次に、システム会社の中で、人の流れがある。
仮にソースの中身をよく知っている人間がいても、転職やら異動やら定年退職やらで、いなくなってしまう。
その人が後輩にきちんと引き継いでいるのであればいいけども、
たいていの企業で開発や運用について成果をあげれば評価されるが、
引き継ぎは評価対象になっていないので、おざなりになってしまう。
blog.stm43.com
そのあたりの問題についてはこの記事を参照。

  • コードを書くべきではない

インターネットでこういうことを言うと怒られるんだろうけども、
長年使うシステムであれば、なるべきコードを新規に書くべきではない。
(もちろん書くことと書けることは別だが)
既存のモジュールを使うとか、DRY原則を守るとか、オープンソースを活用するとか。
ただ新しく書かかないで、既存のコードをコピペし続ける文化が定着すると、
新人が全然技術力つかなくなるので、そこは気をつけた方がいい気がする。

  • ドキュメントは銀の弾丸ではない

ブラックボックス化したシステムでよく使われる解決策として、ドキュメントを整備するというのがある。
もちろん最低限の設計書・手順書がなく、属人化した運用がなされているのは論外だけども、
だからといってドキュメントをガワだけ整備することにあんま意味は無い。
IBMとかOracleとかMicrosoftとか一応ドキュメント用意してくれてるけど、
そのドキュメントを見たら余裕でシステム開発できるかと言えばそんなこともない。
だいたい教科書があれば知識の継承が100%完了するのではあれば、学校教育は要らないだろう。

知識の継承において、ドキュメントが整備されていることは一つの条件でしかない。
実際はわかっている人が、わかってない人に教えることが必要だったりする。

以上、最近思うことをとりあえず文章にしました。
(了)

「日本の技術力」はまだ存在するか

論考 経済

最近、日本メーカーの凋落が激しい

・SHARP→鴻海に買収
・三菱自動車→燃費偽装発覚
・東芝→粉飾決算発覚(実際は巨額赤字)

そんな中で、まだ「日本の技術力で〜」という文言を聞く。
果たしてまだ「日本の技術力」なるものは存在するのだろうか。

手を動かすということ

Made in Japanが、粗悪品の代名詞から高い品質を示す言葉になったのは、戦後の話だ。
1ドル360円の固定相場制や、アメリカとの良好な関係など、
色々要因はあるのだろうけれど、日本は工業国として急成長を遂げた。
ソニーやトヨタなど、世界に名だたる大企業が次々と誕生した。

しかし経済成長が更に続くと、実際に手を動かすより人に作らせることが重要になる。
どんな業界でも、職人としての腕を磨いていってもどこかで給料に限界があって、給料を上げたければ経営サイドに回るしかない。
たとえば美容師、建築、寿司職人、エンジニアなど、現場で圧倒的に優秀であるなら、
独立開業して自分でビジネスをやった方が儲かる。

リーダーが求められる

そんなわけで、経済成長が進むと、求められる人材が変化してくる。
工業国だった頃は、真面目に管理職の指示に従う人間が求められた。
しかし先進国として成熟してくると、「手を動かす」人ではなく、「人を動かす」人間が求められるようになってくる。
就活でよく聞いた「周囲を巻き込み行動する」とか「リーダーシップがある」とか、その類の人間だ。

日本のIT業界(特に業務系)では特に問題になるけど、
コードかける人間が薄給で、それをマネジメントするExcelおじさん達が高給をもらうという構図。
プログラミングに関しては、製造業に比べて製造工程の標準化がそこまで出来てないので、
手を動かせる人間の価値というのはもっと評価されてしかるべき。
しかし製造業とかになると、工場の作業というのはマニュアル化されていて、
現場の職人技はあるっちゃあるんだろうけども、さほど重要ではなくなってきている。
(もしITもそんな風にシステマティックにコードを生成する何かが出来たら、
エンジニアはガチガチの研究職と、マネジメントするだけの総合職と、オフショア開発みたいになるんだろうけども、
幸いにしてそのコード生成する何かというのは、実用的なレベルではまだ出てきていない)

「日本の技術力」はまだ存在するか

日本国内の製造現場は、非正規雇用が多いし、円高が進むにつれて海外移転も進んだ。
たまーにソニー製品とか買ってみると、だいたいMade in 東南アジアのどこかだったりする。
日本国内の工場で、全員日本人の正社員で生産を回していたら、多分今より赤字はもっと酷いことになっていたんだろうけども、
長期的に見ると日本の技術力は着実に落ちていくと思う。

ただじゃあどうしたらいいのかというのは結構辛いところで、
20世紀後半のバンバンいろんな技術革新が起きていた時代とは違うので、
単純に研究開発費増やしても、きっとリターンを得るのはだいぶ後になってからで、
今の四半期に一度は株主に業績を報告する株式会社のシステムの中で、そんな余裕のある金の使い方ができるかというと難しい。

中国・台湾・韓国のメーカーも、サムスンやらなんやら色々大企業でてきたけども、
日本企業を超えることはできても、このまま成長し続けていられるかというと、
そうは思わえず、どこかで壁にぶち当たる気がしている。
(了)

Excelに代わるプロジェクト管理ツールを求めて

IT 仕事

ここしばらく仕事で色々試みてたことの覚書。

プロジェクト管理とは

プロジェクト単位で仕事してる会社であれば、プロジェクト管理の問題は出てくる。
何を、誰が、どう管理するのか。

「何を」に関しては、僕の働いている会社だと、

・成果物
・期限
・メンバー
・工数

の四つを主に管理している。

「誰が」というのは、主にチームリーダーがやる。
チームリーダーにいるプロジェクトマネージャーは、基本的には自分の手を動かさない。
他部署との折衝とか、経営陣への報告とか、進捗管理とかを行うのが理想とされる。

「どう」管理するのかが、今回の話題で、僕の会社ではWBSで管理している。
魔改造されたExcelのテンプレートがあり、それにポチポチ入れると、いい感じにタスクが割り振れる。
数年前のバージョンには、工数管理まで魔改造Excelで行われており、
工数の差異分析とかまでやるように魔改造されていた。
そもそも工数管理は別の社内システムがあり、Excelシートの使い方ももはやよくわからなくなっていたので、
僕の入る数年前に先輩たちが機能を廃止して、シンプルにした。

以下、プロジェクト管理に使うツールについて、思うところを書きます。

テキスト(メモ帳等)

正直ガチガチに進捗管理しない案件であれば、メモ帳とかに軽くタスクと担当メモる程度で進む。
ただテキストだと、以下のような問題が起こる。
・過去のプロジェクトが参照しづらい
・WBSが書けない
・部署全体のプロジェクト数が増えてくると全体が把握できなくなる

要するに、更新する側としては簡単だけど、
第三者から見た時にプロジェクトの全体像が見えづらいという欠点がある。

Excel

「Excelはプロジェクト管理ツールではない」
これは僕も入社以来ずっとそう思ってました。
ただもう変なツール入れるくらいなら全然Excelでいいじゃん、というのが今の僕の気持ち。
特に先人が魔改造したExcelがあると思います。
それを共有ファイルサーバーにつっこんで、皆でつつく。
タテにタスクが書かれていて、担当者や開始日・終了日が書かれた列があって、
ヨコにカレンダーが載っているような。
これがあるなら、必要最低限のプロジェクト管理は可能。

ただExcelはあくまで表計算ソフトなので、細かい点で結構気に入らないところが出てくる。
たとえば横の列を一年以上の期間とろうとすると、どこかで列が追加できなくなる。
xls形式だと256列までという制限があるからだ。
WBS作ってるときになぜか列が追加できなくなって、30分ぐらい必死でExcelと格闘してたのは今思うと泣ける。
何の意味があったんだ。
(僕の会社のテンプレがxls形式なのでいけないんだけども、xlsx形式にすると、限界が拡張されているらしい)

問題は、
・プロジェクトを管理する側がExcelの調整がめんどくさい
・一人がつかんでると他の人間が編集できなくなる
(共有設定にしてもいいんだろうけど…)

そんなワケでちゃんとしたツールをいれましょ〜となると、どんな選択肢があるか。

有料ツール

プロジェクト管理ツールと一口に言っても、Wikipediaにあるだけでも相当な数存在する。
単なるスケジュール管理から、会計管理までしてくれるものまで、
色々あるらしいが、正直あんまり評判のいいものは聞かない。。。
プロジェクト管理ツールの比較 - Wikipedia
Comparison of project management software - Wikipedia, the free encyclopedia
※英語版の方が充実している。

僕の会社だと、Microsoft Projectが使えるっぽかったんだけど、個人的にはイマイチだなあと。
有料ツールに関してはほとんど知らないので、むしろいいのがあったら誰か教えて下さい。

無料ツール

Excelに代わるツールの必須条件として、無料であることがあげられる。
となると、選択肢は結構限られる。
最近の感じだとRedmine一択という気もしたが、僕が自由に使える社内サーバーがWindows2003しかなかったという制約があったため、
それ以外のツールを探すことになった。

GanttProject

f:id:st43:20160507195100j:plain
GanttProject: free desktop project management app
ガントチャートを書くツール。
Javaで書かれてるらしい。
オープンソースのツールで、操作感としては悪く無い。
f:id:st43:20160507195354p:plain

機能的には問題なかったが、制約として、
・専用のアプリケーションのインストールが必要
・Javaの最新版が要る
という二点があった。
Javaの最新版は入れろよ、という話で終わりなのだけど、
ちゃんと使うとなると、専用アプリのインストールがちょっとした障壁になりそうだ。
SIのPC環境であればだいたいExcelは入ってるので、そういう意味でExcelのWBSは使いやすい。

エクスポート機能はあるにはあって、csv形式やpdf、html形式でガントチャートが出力できるんだけども、
結構貧弱なエクスポート機能で、イマイチな感じだった。
しかも更新するたびに共有ファイルサーバーに突っ込まなければいけないので、ちょっと無理。
部署全員がGanttProject入れてくれれば、問題はないが、お試し期間中だったので、そういうワケにもいかなかった。

結局二週間ほどお試しで使ってみて、やっぱWebブラウザでやりたい気持ちが強くなったので、Redmineを使うことにした。

Redmine

f:id:st43:20160507195854p:plain
現在一番使われてるっぽいオープンソースのプロジェクト管理ツール。
Webブラウザ経由で利用できる。
基本的にはアジャイル開発を想定しているっぽい雰囲気だけど、カスタマイズすればいかようにでも使えそう。
f:id:st43:20160507200333p:plain
↑ログイン画面

欠点としては、先述の通りWEBサーバーが必要で、
環境構築が他のツールとくらべてやや難易度が高いこと。
ちゃんと環境作ろうとすると、
・Redmineそのもの
・Ruby
・Ruby on Rails
・MySQL(またはSQLite、ポスグレ)

これを入れて、Redmineのドキュメント通り設定して、Apacheを動かさないといけない。
と、あとメール設定とGit、Subversionのバージョン管理との連携はオプション。
ただ入れるだけならいいんだけど、Redmineのバージョンによってそれぞれのバージョンを合わせないと不具合出るっぽい。
ちゃんとやろうと、なんだかんだ途中で詰まって、3日くらいかかりそう。

ただこんなめんどくさい環境構築だが、Bitnamiという便利なワンストップパッケージを使うと30分もかからずにできる。
Install Redmine, Download Redmine
ここからインストーラをダウンロードして、Redmine入れたい環境で起動。
勝手にインストールが進み、指示通りにすすめる。
入れたら、WEBブラウザからその環境のIPアドレスにアクセス。
http://xxx.xxx.xxx.xxx/redmine(Win)
http://xxx.xxx.xxx.xxx:8080/redmine(Linux)
とうちこんで、「Redmineのインストール完了!」みたいなページが出たら成功。

Windows2003サーバーだと「もっと新しいOS使ってください!」と怒られる。
結局どうしたのかというと、余ってたPC(Windows7)に入れました。
本当はちゃんとサーバー立てたいのですが、まあお試し期間なので。。。

まとめ

プロジェクト管理ツールのメリット/デメリットをまとめると、こんな感じだと思う。

更新性 客観性 多案件の整理 共有が容易か 導入難易度 経済性 アプリが要るか
テキスト 不要
Excel Excelのみ
GanttProject 専用アプリが必要
Redmine ブラウザで操作可能

やっぱ現状であればRedmineが一番いいというのが僕の結論なんですが、
Redmineを導入すればバラ色というわけでもないのは、以下を参照。

takashiba-labo.hatenablog.com

結局ツールはツールでしかないので、一番いいツールを入れただけじゃダメで、
ツールを選んで、かつちゃんと運用してくっていうのが必要みたいですね。
(了)