« 2018年3月 | トップページ

2018年4月

2018/04/25

Redmineの直近の課題~競合ツールGitlabに対抗できるか

2018年4月現在、Redmineの今後の課題について考えてみる。
以下はラフなメモ書き。

【1】Redmine大阪や東京Redmine勉強会にスタッフとして活動してきた中、参加者も大幅に増えて、参加者層も初心者から経験者まで広がり、業種もIT業界だけでなく特に製造業にも広がっている印象を持っている。

たぶん、RedmineはRailsアプリ、そしてチケット管理ツールの中で、日本で最も普及したアプリの一つだろう、と思う。

しかし、技術革新の流れが早い中、Redmineにも課題がチラホラ見えてきたように思う。
僕は、Redmineの直近の課題は、Redmineのシングルページアプリケーション化、Redmineのコンテナ化、Git連携の強化だろうと思う。

【2】1つ目は、RedmineのUIが古臭いと言われる問題意識だ。
たとえば、スマホに慣れていると、Redmineのように画面更新のたびにリフレッシュされる仕組みは正直手間がかかるイメージだ。
一つの画面内で、必要な箇所だけ更新するだけで、画面全体がリフレッシュされる必要はないはず。
その分、処理速度も早くなるし、ユーザの利便性も上がる。
つまり、昨今のUIで主流のシングルページアプリケーションのような仕組みをRedmineにも導入していくべきだろう。

以前、RailsはJavascriptと相性が良いので画面UIもリッチで使いやすかった。
しかし、Railsフロントエンド技術も、昨今の時代の流れの影響を受けて、どんどん進化している。

Railsフロントエンド技術の今とこれから - Hack Your Design!

rails × AngularJSでシングルページアプリケーションを作るTips - Qiita

Rails5.1に向けてフロントエンド周りで起こっている革命まとめ - Qiita

一方、競合の状況を見ると、有償のチケット管理ツールであるJiraやBacklogに比較されやすい。
それらツールは、昨今の時流に合わせてUIフレンドリーな画面になっている。
もちろん、OSSのRedmineに対し、営利目的の会社が多数の開発者というリソースを持つ競合の方が恵まれている点は否めない。

【2】2つ目は、Redmineのインストールやバージョンアップが難しいと言われる点だ。
初心者にとって、RubyやGemをインストールする時、バージョン違いによって、ハマってしまう場合が多い。
Redmineを使いたいだけなのに、セットアップに手間取ってしまって断念するケースも多いのではないか。

Redmine 3.4をCentOS 7.3にインストールする手順 | Redmine.JP Blog

この点に関しては、最近、Gitlabにも注目している。
特に、Gitlabでは、バックアップやコンテナ化など技術的にも優れている点が見えてくる。

たとえば、バックアップやリストアはrakeタスクで用意されているので、Cron化しておけば、保守で気にする必要はない。

Rake tasks | GitLab

また、GitlabCIまでセットアップすれば、Redmine+Jenkinsよりも使いやすい点はあるだろう。
インストール対象が2つのツール(RedmineとJenkins)よりも1個のツール(GitlabCI)の方が楽だから。

Gitlab + Gitlab CI をためす - LGTM

個人的には、RedmineのバージョンアップをiOSの自動更新みたいに、もっと手軽にすべきだろう、と思う。
現状でも、プラグインをGem化するアイデア、RedmineをDockerでコンテナ化する、等が色々試されている。

Feature #27705: Gemify redmine plugins - Redmine

これらアイデアをさらに発展させて、Redmineのバージョンアップの自動更新がワンクリックで可能になるように、改善されるべきだろう。
たぶん、Dockerのようなコンテナ化に解決の鍵があると感じている。

なぜなら、ちょうど今はコンテナ化や仮想化のように、インフラ基盤をプログラム化する技術が一番ホットな話題であること、それら技術がクラウドと相性がすごく良い事もあるからだ。

【3】3つ目は、RedmineはGit連携の機能が弱い点は、従来からずっと知られていた。

一方、Gitlabのチケット管理もRedmineより弱いとは言え、着実に改善されている。
一般に、SVNよりもGitを使うのが普通なので、この点に関してRedmineは多少不利な面がある。
いつか、Redmineの競合候補になってくるのではないか。

RedmineとGitLabを連携すると、RedmineをGitHub化できるか: プログラマの思索

RedmineとGitを巡る疑問点~Gitとの連携機能の強化がRedmineの課題: プログラマの思索

【4】個人的には、Redmineの競合ツールは有償ツールであるJiraやBacklogではなく、OSSのGitlabになるのではないか、と思っている。

理由は、ポジショニングマップで書くと、RedmineとGitlabはちょうど正反対の位置に配置されるからだ。
実際、「Git連携が強い・弱い」軸と「チケット管理機能が強い・弱い」軸の2次元でプロットしてみれば、「Git連携が強く、チケット機能が弱い」GitLabと、「Git連携が弱く、チケット機能が強い」Redmineで斜め方向にプロットできる。

よって、RedmineとGitlabは全く正反対の性質を持つツールなので、現在は双方を連携することで相互補完する方向に進化している。
すなわち、Redmineでチケット管理して、Git管理やプルリクエストはGitlabで行い、WebhookによりチケットとGitを連携できるようにする運用スタイルだ。

GitLabとRedmineを連携してみるの巻 - アルパカDiary Pro

GitlabとRedmineを連携させる方法の覚書。 - Qiita

でも、RedmineもGitlabもGit管理やチケット管理の機能を強化していく方向へ進化するならば、競合することになるだろう。

なお、Gitlabには、GithubクローンとしてOSS版とエンタープライズ版が提供されている。
ビジネスモデルとしても、うまいやり方だと思う。
なぜなら、OSSで提供することにより、ユーザ数を増やせること、また、ユーザのフィードバックを受けて有償ツールに反映してどんどん機能拡張できること、があるからだ。

GitlabもRedmineと同じくRails基盤なので、改修しやすいし、機能改善の進化も速いので、近い将来、現在のRedmineの優位性は変化していくかもしれない。

たとえば、Gitlabが強力なチケット管理機能を実装したら、プログラマ層は皆、RedmineよりもGitlabに流れてしまい、Redmineのユーザ数は減ってしまうだろう。

現在は、たまたま、日本のRedmineユーザに熱いパッションを持つ人達が多いので、最新機能をいち早く試して人柱になったり、数多くの運用事例を紹介してくれたりして、コミュニティ中心に盛り上がっているけれど、いつまでもそういう幸運は続かないかもしれない。

GitLabでタスク管理してみた感想(主にRedmineとの比較) - YoshinoriN's Memento

【5】とはいえ、そういう課題がRedmineに見えてきたが、たぶん、解決できるだろうと楽観視している。
また、技術者として、ツールの課題を技術面から解決していったり、それについて色々試行錯誤して技術を試すことは楽しい。

今後もいろいろ考えてみる。

| | コメント (0)

2018/04/06

「小水力発電が地域を救う」の感想

佐藤知一さんのBlogで「小水力発電が地域を救う」が紹介されていたので読んでみた。
読みやすかったので簡単なメモ。

【参考】
書評:「小水力発電が地域を救う」中島大・著 : タイム・コンサルタントの日誌から

Life is beautiful: 私が事故後、脱原発派に転向した一番の理由

【1】本を読んでみて、小水力発電の技術だけでなく、小水力発電を中核とした地域経済のエコシステム、そして、超低金利が普通となった現代において資本主義の終焉が間近に語られるようになった今、今後の文明の行き先みたいなことまで妄想してしまった。

【2】P.17-18
世界的に、経済のグローバル化と、それに抵抗する動きの対立が目立つようになりました。
(中略)
私自身の意見は、世界はモザイクのように個性的な市場がたくさん存在するのが自然だということになります。

P.18
東京の生活はお金さえあればとても便利ですが、いざ物資が入らなくなったら何もできません。
分業が進むと効率が上がりますが、効率性は脆弱性と裏表の関係にあります。

震災や福島原発の事故があった時の東京、関西を思い出せば、都市の生活は非常に脆いと身を持って感じた。

【3】P.176
町育ちの人たちばかりになると、社会が脆くなります。

P.177
私は、都市は人を育てない、と考えています。
都市は競争社会です。腕に覚えのある人が集まるウィンブルドンのようなものです。

一方、人を育てるというのは、とても冗長な営みです。
多様な才能を丁寧に育てないと優秀な人材は育ちませんし、育った優秀な人材がその時代の社会に適合するとは限りません。

これも同感。
だから、グローバル化に反対する人が欧米でも日本でも多くなったような気もする。
冨山和彦さんが提唱する「グローバル経済圏、ローカル経済圏」の話(「なぜローカル経済から日本は甦るのか」)もこれに通じる。

【4】P.22
小水力発電の可能性のある場所を開発すれば、山間地は電力の面で自立できるわけで、地域にとっては十分に大きな電力だと言えるのです。

p.47
農産加工品などの市場開拓は簡単ではありません。ところが、小水力発電の電気は、FITのおかげで必ず売れるという利点があります。

P.38
小学校の存続は、地域が存続するかどうかの先行指標と言っても過言ではありません。
子育て環境の悪化で若い夫婦がいなくなるだけでなく、子どもたちの帰属意識が薄れ、高校・大学を卒業した後戻ってくる動機が弱くなるからです。

子育てが重要な理由は、子供たちが大人になって、また地元の経済を活性化させる、というエコシステムの一部であるからだろう。
だから、今の日本では少子高齢化の危機意識が高まっているわけだ。

P.66
山村の土建会社は小水力発電で生き残れ

P.67
建設業者は水力発電と相性がいい。

P.138
(村長が発言)
道路をつくる予算を使って、代わりに水力発電所をつくれば、毎年、お金が入ってくる。
そのお金はムラのために使うことのできる自由なお金だ。

本来、日本は山が多い国なので、小水力発電に向く場所は多い。
小水力発電による発電量は少ないかもしれないが、村の住民の電気を賄うことは可能だし、今は売電することで安定的に利益も得られるメリットがある。

一方、村の土建業者にとって、小水力発電の建設、修繕、復旧などの作業は自分達のノウハウをそのまま流用できるので、技術的にも相性が良い。
しかも、公共工事の変動に左右されずに、売電収入が安定的に得られるメリットもある。
そして、土建会社の経営者は、経営面でもコスト感覚の優れた人達が多いので、小水力発電のようなビジネスを上手く回すのに向いている。
また、村の土建会社の経営者は、その地域の有力者の一人の場合が多いので、地域社会の取りまとめ役にも最適だ、と言う。

この辺りの内容は、書評:「小水力発電が地域を救う」中島大・著 : タイム・コンサルタントの日誌からの記事で詳しく解説されているので分かりやすい。

【5】P.145
自分達が主体になれば、地域が長く生き残れる

しかし、過疎地域で小水力発電を実現するには、地域の人達自身がリーダーシップを発揮して、彼ら自身で運営する仕組みが必要だ。
つまり、小水力発電という中核システムを基盤として、地域経済の持続的発展を目指すように、地域内の利害関係者が団結する必要がある。

「補償金は人を幸せにしない」「オープンにすることで地域利益を確保する」などのノウハウも書かれていて面白い。

【6】P.129
水力は高いは本当か?
水力発電は太陽光や風力に比べて初期投資の金額が大きくなるからです。

P.130
そのかわり、水力発電には、太陽光や風力よりも設備の耐用年数が長いことと、年間発電量が多いことの二つの利点があります。
100年間の総費用を100年間の総発電量で割って平均コストを算出すれば、おそらく太陽光や風力と同じか、むしろ安くなるはずだと考えています。
ただし、この計算では金利を一切考慮していません。

P.130
ソフト・エネルギー・パス」で「長期割引率はゼロもしくは若干マイナスと」すべき、と書いて以来、エネルギーシステムの持続可能性の議論において、割引率をプラスで考えるか、ゼロ以下にすべきか、経済はと環境派の対立点の一つになってきました。

P.131
割引率をゼロとする立場に立てば、金利を考えない100年間の平均コスト比較に合理性があるはずです。
また、現実の話、今の超低金利は一時的な現象ではなく、これからの標準的な状況だと考えています。

P.131
そもそも、高度経済成長期のような、リスクを取らずに金利が得られるという経済状況がむしろ珍しく、イスラム金融ルールのように、リスクを取らなければ金利を取るべきではないという経済状況の方が歴史的にはむしろ普通だったのではないでしょうか。

水力発電は他の再生利用エネルギーよりもコストが高いか否か、という問題点は重要だ。
筆者の意見では、長期的な割引率をゼロ以下とみなせば、むしろ安くなるはず、という。
理由は、現在の超低金利は一過性の事象ではなく、今後の標準的な事象とみなせるから、と。

この点に関しては、僕も同感。
既に、日本だけでなく欧米でも経済成長率がかなり落ち込んでいるのは誰が見ても明らか。
そして、日本や欧米の超低金利は一過性の事象ではなく、今後も続くだろう、とたぶん誰もが心の中で感じているのではないか。

ティール組織」でも、P.491にて「経済成長率がゼロの社会では、利子を産まないかマイナス利子を生む新しいタイプの通貨に投資しなければならなくなると考えている」という一節がある。
将来の経済について深く考えている人たちは、金利がマイナスになる経済、つまり資本主義の終焉について既に色々考えているのだろう、と思う。

| | コメント (0)

2018/04/04

「プロエンジニアになるための「アジャイル開発」再入門」が素晴らしい

倉貫さんの資料プロエンジニアになるための「アジャイル開発」再入門が素晴らしいのでリンクしておく。
新入社員向けのアジャイル研修の資料は、これを使えば十分ではないかな、と思った。
以下はラフなメモ書き。

【研修資料】

【参考】
アジャイル開発とウォーターフォール型開発の違いについて再考: プログラマの思索

アジャイルとウォーターフォールは文化や価値観のレベルで異なるという話 - たなかこういちの開発ノート

アジャイル開発の本質 ? アジャイルとウォーターフォールの違いとは | Social Change!

ソフトウェアは完成しても価値はない ? アジャイル開発は何を解決するのか | Social Change!

アジャイル開発とは:「アジャイル開発」をエグゼクティブサマリにまとめてみた | Social Change!

ドキュメントをなくしてもうまくいく? ? 人に依存するリスクへの対処とは | Social Change!

【1】「ソフトウェア開発をチームで行う内容をよく知らない新入社員に、アジャイル開発をどのように説明すればよいか?」という問題に対し、上記の資料はその解決にとても役立つ。

倉貫さんのBlogや資料がとても読みやすく優れているなあ、と思う点は、ITをよく知らない人、アジャイル開発を知らない人に対して、普段着の言葉でその本質を上手く的確に表現している点だろうと思う。

既にアジャイル開発を知っている人ならば、上記の資料はとても当たり前の内容だろう。
しかし、その当たり前に思っている感覚を、新入社員やITに詳しくない経営者に説明して納得させるのは、とても難しい。
自分がこれだけ、今後のソフトウェア開発はアジャイル開発になるべきだ、と確信していても、普通の人には伝わらない。

一番分かりやすい説明方法の一つは、対比させることだろう。
たとえば、上記資料では、「これまでの開発は、ノンビリしていたな」「でも、これからの開発は、Software is eating the World」のように、従来と今後の開発スタイルを的確に表現している。

また、アジャイル開発の特徴である「最初に決めた機能を全部作らない」「最大限の構想よりも最小限の完成品を作る」「何を作るのか、ではなく、何を作らないか」「タスクをバラし、見積もりし、優先順位を決める」などを分かりやすく説明してくれている。

【2】日本人がアジャイル開発を理解しにくい理由は、日本人が製造業の成功体験に縛られていて、品質の考え方をアジャイル開発へ置き換えられない事が、最大の原因ではないか、とずっと思っている。

【2-1】上記資料では、その点について「“Point of Sales”から“Point of Use”へ」で明確に記されている。
製造業では、一度作った製品はその後で変更できないのが普通なので、出荷時に最高品質を保証できるように頑張る。

一方、ソフトウェアは一度リリースしたとしても、それから利用し始めて初めて、ユーザにとって、ありがたみを感じることになる。
つまり、本番リリース後の保守フェーズで品質を上げていく発想が重要だ。
この点は何度強調しても強調しきれない。

すなわち、ソフトウェアは完成しても価値はない ? アジャイル開発は何を解決するのか | Social Change!の記事の通り、「ソフトウェアは完成だけしても意味はない。むしろ負債である」という事を意味している。

【2-2】経営者ならば、損益分岐点分析は必ず知っているが、それをソフトウェアに適用すると、まさに初回リリース時点では、まだ利用していないのだから、初期投資した分だけ赤字だ。
そこからシステムを利用して、実際に回収して、初めて、損益分岐点を上回れば、元を取った、という事になる。
それまでは、システムはずっと負債であり、利益を得るまで回収する責任や義務が発生するわけだ。

僕も、経験上、ソフトウェア投資は資産なのか負債なのか、と暗黙的に疑問に感じてきたが、上記資料では、明確に、「ソフトウェアは負債だ」と明確に説明してくれているので、改めて腑に落ちている。

【2-3】では、この発想を受け入れると、どんな影響が出てくるか?

結論は、ソフトウェア開発の目的が品質重視から、価値重視へと変換されることだろう。
それはどんな意味を持つのか?

従来の製造業の発想では、マーケティング1.0の供給者重視からマーケティング2.0の顧客重視へ変わった。
さらに、上記の発想では、マーケティング2.0の顧客重視だけでなく、顧客に届ける価値を重視する発想、つまり、持続可能な社会を実現するマーケティング3.0へ発展するだろう、と考える。

なぜなら、顧客が利用し続けて、高額な初期投資を回収できて利益が得られるならば、いかに早く回収するか、という方向へ発展して、最終的には、では、顧客が使い続けてくれるにはどこに価値を感じてくれるのか、という方向へ考えるようになるだろうからだ。

すなわち、顧客の企業だけが儲かれば良い、という発想ではなく、持続的に成長して会社を半永久的に維持していくには、顧客の企業を取り巻くステークホルダー、たとえば、従業員や取引先、地域の人々、との関係性を重視して、エコシステムを作っていく、という流れに変わっていかざるを得ないからだ。
そうでなければ、顧客の価値を実現したとは言えないと思う。

つまり、アジャイル開発で「価値重視」と呼ばれる所以は、そういう背景がある、と考える。

【2-4】すると、ソフトウェアの品質にすごく影響してくる。
初回リリース前のテストでいくら頑張ったとしても、本番リリース後にユーザが価値を感じて利用してくれなければ、システムはただのゴミ箱に過ぎない。
また、利用中に機能追加していくうちに、使いづらくなった、と感じて、利用が減ると、ソフトウェアの価値はどんどん減ってしまう。

つまり、保守フェーズでの品質維持、さらには利用頻度向上が大事になるので、機能性や信頼性よりも、保守性や移植性という品質特性が重視されるようになるだろう。
ソフトウェアはそのまま放置しておくと、エントロピーが増大して、その複雑性が手に負えなくなっていくからだ。

そのために、リファクタリング、テスト駆動、継続的デプロイ、DevOpsなどの開発技術が研究され、今も技術革新されているわけだ。
そして「アジャイル開発では全部作らない」という発想へつながっていく。

【3】さらに、プログラマに求められる価値は、製造業のワーカーのように、技術標準や作業標準を起点としてPDCA(つまりSDCA)サイクルを回す方法ではなく、クリエイティブな発想を大切にしながらそれを実現していく方法へ変わっていく。
この辺りの内容は、数多くの手法が提唱されていて、どれかに理論として一つに統一されている感覚は受けない。
つまり、まさに色んな人達が、汎用的な手法を試行錯誤している所だろう、と思う。

おそらく、プログラマのいるソフトウェア開発の会社は、従来の病院や会計事務所、法律事務所などのような「プロフェッショナル官僚制」へと発展していくのかな、と思ったりもする。
なぜなら、倉貫さんが提唱する顧問プログラマは、顧問弁護士、顧問税理士にたとえられるので、プログラマの人数が増えれば、そういう方向へ進化するのではないか、と想像できるから。

H. ミンツバーグ経営論 : 戸崎将宏の行政経営百夜百冊

官僚制と管理システム

「H.ミンツバーグ経営論 第8章「組織設計:流行を追うか、適合性を選ぶか」」のオーディオブック - audiobook.jp

しかし、一方で、「ティール組織」のように、個人のパフォーマンス重視の組織へ進化するアイデアも提唱されている。
実際、倉貫さんが提唱するホラクラシーは、「ティール組織」が提唱する最終型の組織にぴったりだ。

「ティール組織」の本を読んでみて、アジャイルとウォーターフォールは文化や価値観のレベルで異なるという話 - たなかこういちの開発ノートの内容がまさに当てはまる、と感じた。

つまり、「ティール組織」が提唱する最終型の組織は、従来の我々が知っている組織文化や価値観と全く違うのだ。
そういう事実を理解しなければ、「ティール組織」は大変読みにくい本だろう、と思う。

「ティール組織」の感想はまた後で書く。

| | コメント (0)

« 2018年3月 | トップページ