So-net無料ブログ作成
検索選択

書籍『ストーリーとしての競争戦略』 [本]


社内の新任管理職研修で、この本の著者の楠木氏が講師をされる「戦略」に関した研修を受講しました。2つの会社の事例を用いて、戦略とは何かということで、色々と考えさせられる内容でした。

研修の続きではないですが、良い機会なので、この本を読んでみたいと思っています。

※ 昇格して管理職になった人達への研修なのですが、途中入社の私は最初から待遇が管理職なので受講させられています。

第14期「プログラミング言語Java」コース [プログラミング言語Java教育]

リコーITソリューションズ株式会社向けに、私にとっては通算第14期となる「プログラミング言語Java」コースを、今年12月24日(金)から開始します。今回は、要請があって開催します。今のところ、他に開催要請はないので、業務としてはこの1コースだけの可能性が高いです。第11期、12期、13期はまだ終わっていませんが、来年の初めには終わる予定です。

テキストは、以下の2冊です。

プログラミング言語Java (The Java Series)

プログラミング言語Java (The Java Series)


Effective Java 第2版 (The Java Series)

Effective Java 第2版 (The Java Series)

  • 作者: Joshua Bloch
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2008/11/27
  • メディア: 単行本(ソフトカバー)

指定副読本は、次の2冊です。

Java 2 Standard Edition 5.0 Tiger―拡張された言語仕様について

Java 2 Standard Edition 5.0 Tiger―拡張された言語仕様について

  • 作者: 柴田 芳樹
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2005/04
  • メディア: 単行本

グラフィックJava2〈Vol.1〉AWT編 (サンソフトプレスシリーズ)

グラフィックJava2〈Vol.1〉AWT編 (サンソフトプレスシリーズ)

  • 作者: デビッド ギアリー
  • 出版社/メーカー: アスキー
  • 発売日: 2000/06
  • メディア: 単行本

※「グラフィックJava2」は、絶版なので、不要な人はAmazon.co.jpのマーケットプレイスで売ってもらえると助かります。

技術的負債 [技術的負債]

以前、「Technical Debt」と言うことで、英語のまま引用したのですが、日本語版が出たので再度日本語版から引用します。

リーンソフトウェア開発と組織改革

リーンソフトウェア開発と組織改革

  • 作者: Mary and Tom Poppendieck 著、 依田光江 翻訳、 依田智夫 監訳
  • 出版社/メーカー: アスキー・メディアワークス
  • 発売日: 2010/10/09
  • メディア: 単行本(ソフトカバー)

技術的負債
成功するソフトウェアは変化している。成功するコードは変更を受け入れやすく書かれている。コードの変更をむずかしくするものはすべて技術的負債である。技術的負債は、ソフトウェアの所有コストを容赦なく引き上げ、いずれその精算を迫られたり、システムが破綻したりする。そんなことはすべてわかっている。けれども現実は・・・・
  1. 誰が引き継いでも意図が明確に伝わるコードを書こうとせずに、不明瞭なコードがあっても受け入れてしまう。開発者は、特に経験の浅い開発者は、「クリーンなコード」の書き方を訓練されるべきだ。クリーンなコードとは、わかりやすいロジックに基づく、シンプルで素直なコードだ。上級技術者は、不明瞭なコードはたとえテストをパスしたとしても、コードベースに追加させないように気をつけなければならない。
  2. リファクタリングに時間を割かない。既存コードになされた変更をすっきりとまとめるリファクタリングは、イテレーティブ(反復的)な開発には欠かすことができない。既存コードに新しいフィーチャーを追加すると、複雑になったり、あいまいになったり、重複が発生したりする。リファクタリングによって、こうした負債を解消できる。
  3. システムを展開する直前になって回帰テストを実行する。回帰テストは初めのうちは短時間ですむが、コードが追加されるたびに時間はどんどん長くなる。回帰テストで見つかる穴が増えるにつれて、次のリリースまでの間隔も広がる。リリースのオーバーヘッドが増え続ける悪循環から抜け出すには、回帰赤字(regression deficiti: 回帰テストをするたびに発生する結果(負債))を減らすしかない。コードベースが小さいうちに自動テストハーネスを使用し始め、コードベースへの追加と保守を行っておけば、コードへの変更がその日のうちにコードベースに反映させられるはずである。
  4. 技術的負債を生み出す大きな要因は依存性である。それがわかっていながら、膨大な依存性を抱えた古いシステムのリプレースを躊躇する。依存性のなるべく小さいアーキテクチャを開発し、それに移行しなければならない。その方法は以前からよく知られている-情報隠蔽(information hiding)と関心事の分割(separation of concerns)である。
  5. 安易にコードをブランチさせる。たとえば、新規開発を切り離すため、個々のアプリケーションに集中するために、フィーチャーセットを並行して開発するため、などの理由を挙げて。コードを2つにブランチ、それぞれが長くなればなるほど、後でマージするのがむずかしくなる。コードをビルドできるまでの日数が余計にかかり、さらに悪いことに、開発が終わるまでシステムのテストを遅らせる。避ける手立てがすでにあるのに、知ろうとしない。ビッグバン方式は時代遅れなのだ。
技術的負債の本当の姿を知らなければならない。負債が破綻に至らないよう、コスト上の重荷をふだんから取り除いておくべきだ。第2章で、技術的フレームを通したソフトウェア開発を取り上げ、技術的負債を避けるための実用性のあるテクニックについて説明する。
技術的負債を積み上げているソフトウェアの開発組織は、仮に新規にシステムを作り直すことを試みても、最初から技術的負債を積み上げてしまう可能性は高いです。なぜならば、ここに書かれている1から5までの問題をそもそも認識していない訳ですから、新規開発でも、再度同じことを行ってしまうことになるからです。

私自身は、過去10年間に、上記負債を最初から積み上げないようにして新たにシステムを作り直したプロジェクトを見たことがある一方で、負債を最初から積み上げてしまった結果、新たなシステムが日の目を見ないうちに終わってしまったプロジェクトも見てきました。

「テスト駆動開発入門」コース [プログラマー現役続行]

昨日、「テスト駆動開発入門」コース(社内教育)の今年最後の教育を行いました。少しずつですが、その必要性が認識され始め、実践されて始めてきました。しかし、ソフトウェア開発は、複雑な活動であり、様々な面があり、きちんと定着して実践されるようになるまでは何年も要するでしょう。

テスト駆動開発に関連したブログとして、以下の内容を過去書いています。
最近は、次の本を読んでいますが、ソフトウェア業界はさらに先に進んでいることを改めて認識させられます。


現在仕事では、私自身の過去の経験やこの書籍を含めた様々な書籍から得たノウハウを活用して、この本に書かれている「Deployment Pipeline」を既存のレガシー環境の改善を通して、どこまで実現可能かを、若手のエンジニアと一緒に試みています。

Kindleがやってきた(3) [プログラマー現役続行]

Kindleが届いてからほぼ一ヶ月です。主な使い方は、通勤時間に技術書を読むとのと、GMailのメールをチェックすることです。

技術書は、同時に4冊を並行して読んでいます。1つの章を読み終えると、次の本に切り替えて読んでいます。紙の本だと、4冊同時に持ち歩くことは不可能なので、このような読み方はできませんでした。4冊ともハードカバーの本で、頁数の合計は約2,200頁です。重さだけでなく、物理的な空間も占有しないので、書斎に本が増えないのも良いです。

紙ではないので、紙の本のようにパラパラと本全体をめくって、概要を知ることができないのが、欠点です。それと、アンダーラインを沢山引いてしまうと、頁にブックマークをしても、そのブックマークを探すのが少し面倒です。

技術書を1冊丸々Kindleで読み終えたという段階まではまだ使っていませんが、総合評価としては◎です。

会社は教育してくれる場ではない(2) [プログラマー現役続行]

会社が技術者としての社員に教育すべきことは、個別の技術ではなく、「継続して学習」する習慣を身につけさせることだと思います。そのための様々な支援制度を整えることが、技術教育コースを準備して受講させたり、外部の教育コースを受講させるよりも重要かもしれません。

支援制度として考えられることは、色々あるかと思います。今まで、私自身が見てきたものとしては、以下のようなものがあります。
  • 業務外の自発的な勉強会にある回数以上参加すれば、業績考課の加点ポイントとする。
  • 業務外の自発的な勉強会を主催してある回数以上開催すれば、業績考課の加点ポイントとする。
  • 業務外ですが、地域で集まっての勉強会に参加した場合に、一定金額を上限として、食事補助を支給する(某派遣会社)。
  • 業務外ですが、土曜日に会社の会議室や設備を使用した勉強会を開催して、交通費を補助する(某派遣会社)。
  • 業務外の勉強会であるが、土曜日に会社の会議室の使用を許可して使用させる(某ソフトウェア会社)。
このような会社のサーポートがなければ、継続した学習をしないというのでは困りますが、少なくとも会社としては「継続した学習の習慣を身に付けさせる」ための何らかの支援制度を考えるべきだと思います。

(「会社は教育してくれる場ではない」)

書籍『Hello World!: Computer Programming for Kids (And Other Beginners)』 [本]

Hello World!: Computer Programming for Kids (And Other Beginners)

Hello World!: Computer Programming for Kids (And Other Beginners)

  • 作者: Warren Sande
  • 出版社/メーカー: Manning Pubns Co
  • 発売日: 2009/03
  • メディア: ペーパーバック

Amazon.comに注文していた本が届きました。最初の方を読んだだけですが、タイトルに「for Kids」とあるように子供向けに優しく書かれています。

本文とは別の囲み記事として「WORD BOX」で専門用語の解説があったりします(GUIは何の略語であるかとか)。「IN THE GOOD OLD DAYS」で歴史的なことが書かれていたりします(なぜ、ループ変数にi、j、kを使用するのとか)。「BIG FANCY WORD ALERT!」では、用語の使い分けの解説がされてたりします(文字列を「add」するとは言わずに「concatenate」と言う)。

プログラミング経験が少ない新人にやらせるのにはちょうど手頃かもしれません。英語で読まないといけないですが、子供向けに書かれていますので、平易な英語です。使用されている言語はPythonです。

印刷された本を購入すると電子版も入手できます。

書籍『リーンソフトウェア開発と組織改革』 [プログラマー現役続行]

リーンソフトウェア開発と組織改革

リーンソフトウェア開発と組織改革

  • 作者: Mary and Tom Poppendieck 著、 依田光江 翻訳、 依田智夫 監訳
  • 出版社/メーカー: アスキー・メディアワークス
  • 発売日: 2010/10/09
  • メディア: 単行本(ソフトカバー)

以前紹介した、以下の書籍の翻訳本が出版されます。

Leading Lean Software Development: Results Are not the Point (Addison-Wesley Signature Series)

Leading Lean Software Development: Results Are not the Point (Addison-Wesley Signature Series)

  • 作者: Mary Poppendieck
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2009/10/31
  • メディア: ペーパーバック
この本の内容に関して、私が書いたブログです。