タグ

ブックマーク / yshibata.blog.ss-blog.jp (18)

  • 『Effective Java 第3版』の翻訳作業が終わりました: 柴田 芳樹 (Yoshiki Shibata)

    昨年の2月から原著『Effective Java Third Edition』の草稿のレビューが始まり、レビューが終わったのが11月で、昨年末には原著が発売されています。翻訳作業は、昨年の12月から始めて、すべての作業が今月初めに終了しました。今回も、翻訳および(索引作りも含めた)組版までLaTeXで行いました。 原著のレビューのときには気付かなかった多くの間違いは、翻訳作業を通してJoshua Bloch氏へ知らせており、原著の4th printing(第4刷)では修正されています(原著の正誤表は、こちらです)。 今回はもっと早く終わるかと思ったのですが、結局、約430時間を翻訳作業に費やしました。翻訳に先立っての原著のレビューは約42時間でした。 Amazon.co.jpでは、以下のように紹介されています。 Javaプログラマーにとって必読の定番書『Effective Java』の改訂

    『Effective Java 第3版』の翻訳作業が終わりました: 柴田 芳樹 (Yoshiki Shibata)
  • 言語仕様とメモリモデル: 柴田 芳樹 (Yoshiki Shibata)

    『Effective Java 第3版』の第11章「並行性」(あるいは、第2版の第10章「並行性」)を内容を理解するためには、Javaのメモリモデル(memory model)を理解する必要があります。『Effective Java 第3版』の翻訳原稿による補講でも「メモリモデルとは何か」という質問がありました。 マルチコアやマルチプロセッサを前提としてマルチスレッドプログラミングを言語仕様として提供する言語では、メモリモデルは言語仕様の一部とも言えます。Javaであれば、『The Java Language Specification』の17.4節の「Memory Model」、あるいは、『プログラミング言語Java第4版』の14.10節 「メモリモデル:同期とvolatile」に書かれています。それぞれ、22ページと5ページを費やして解説しています。 今日、マルチコアやマルチプロセッサ

    言語仕様とメモリモデル: 柴田 芳樹 (Yoshiki Shibata)
  • 株式会社リコーを退職します: 柴田 芳樹 (Yoshiki Shibata)

    2009年9月から働き始めた株式会社リコーを8月31日付けで退職します。丸8年働いたことになります。現在57歳であり、定年退職までにはまだ2年と少しありますが、「セカンドキャリア制度」(早期退職制度のようなもの)の適用を受けて退職します。 8年間の会社での業務や退職理由については述べませんが、業務以外の私的活動の成果をまとめてみると次のようになります。 翻訳(8冊):『アプレンティスシップ・パターン』『プログラミング原論』『Android SDK 開発クックブック』『プログラミング言語Goフレーズブック』『Objective‐C明解プログラミング』『APIデザインの極意』『Java SE 8 実践プログラミング』『プログラミング言語Go』 自著(2冊+α):『ソフトウェア開発の名著を読む 【第二版】』『プログラマー”まだまだ”現役続行』『API設計�の基礎』 Jolt Award読書

    株式会社リコーを退職します: 柴田 芳樹 (Yoshiki Shibata)
  • 初心者レベルの言い訳をしない: 柴田 芳樹 (Yoshiki Shibata)

    出来上がったコードの可読性も含めた品質の悪さを、時間がなかったとかプロトタイプだからと言い訳する人がいます。スキルが高い人の場合は、同じ時間制約でも高い品質のコードを書きます。それは、ある程度無意識になるまで、訓練を重ねているからです。無意識になるまで意識して普段から活動するのです。 ソフトウェア開発ではないですが、熟練者と初心者の差を比較するために短時間でどれだけの成果が出るかを競うテレビ番組を時々見かけることがあります。必ず熟練者の方が量も質も圧倒的に初心者を凌駕しています。つまり、時間がなかったとかプロトタイプを言い訳にした時点で、経験年数に関係なく、初心者レベルだということです。 1988年に米国への赴任前の送別会で今は亡きS.Uさんに言われたのは、「与えられた仕事をこなして初めて次の難し仕事が与えられる」と言われたことがあります。逆に言えば、できないと判断されたら、仕事を与えない

    初心者レベルの言い訳をしない: 柴田 芳樹 (Yoshiki Shibata)
    yujiorama
    yujiorama 2013/09/12
    いい話
  • 悪いAPIは伝染していく: 柴田 芳樹 (Yoshiki Shibata)

    企業内のソフトウェア開発では、常に新規の開発とは限りません。既存のソフトウェアに新たな機能を追加したり、既存の機能を修正したりすることの方が多かったりします。 既存のソフトウェアに対して新規の公開APIを追加する場合に、既存の公開APIを参考に作ることがあります。その際、既存の公開APIの出来の悪さを、そのまま引きずった新規の公開APIを作成するエンジニアが多くいます。 特に、経験の浅いエンジニアに担当させた場合には、何が良くて何が悪いかも判断できず、「どうして、このようなAPI設計になっているのか?」とか「どうして、このようなJavadocの文章になっているのか?」と聞くと「参考にしたコードがそうなっていました」という返事がほとんどです。つまり、放置しておくと、悪いAPIは駆逐されるどころか、伝染していくことになってしまいます。 上級職人※以上のエンジニアがいない組織では、誰も良いAPI

    悪いAPIは伝染していく: 柴田 芳樹 (Yoshiki Shibata)
    yujiorama
    yujiorama 2011/08/27
    Influence ugly API
  • 「プログラミング作法」教育: 柴田 芳樹 (Yoshiki Shibata)

    yujiorama
    yujiorama 2011/08/26
    柴田さんにも講師をお願いできるくらい意識高い人間を探そう。企業の開発者として尊敬してます
  • 組織としての長期的学習への投資: 柴田 芳樹 (Yoshiki Shibata)

    この書籍では、サービスとして優れている色々な会社が紹介されているのですが、その中で「ホンダカーズ中央神奈川」に関して、詳しく説明がされています。ホンダカーズ中央神奈川は様々な活動を行っているのですが、その活動の1つとして次のことが紹介されています。 ⑥月に1回、読書感想文を提出する 同社では、一ヶ月に一度の割合で、従業員が読書感想文を書き提出するという試みを20年も継続して行っています。会社のお金で内容の良いビジネス書などを購入し、営業マンはもちろんのこと、サービススタッフや事務職員など、すべての従業員が同じを読み感想文を提出しています。それを会長が添削し、全員が提出した読書感想文をファイルに綴じて、いつでも誰でも読めるように保管します。代だけで年間1000万円はかかるそうです。 社員は、最低でも年間12冊の良いを読むことになりますから、10年続ければ120冊になります。良書を読むこ

    組織としての長期的学習への投資: 柴田 芳樹 (Yoshiki Shibata)
  • 書籍『The Clean Coder: A Code of Conduct for Professional Programmers』: 柴田 芳樹 (Yoshiki Shibata)

    書籍『The Clean Coder: A Code of Conduct for Professional Programmers』 [プログラマー現役続行] 『アジャイルソフトウェア開発の奥義』や『Clean Code アジャイルソフトウェア達人の技』の著者であるRobert Martin氏の新著です。サブタイトルは、「プロのプログラマーの行動規範」という意味であり、著者自身の長年のソフトウェア開発の経験や失敗を紹介しながら、プロのプログラマーとしてはどうあるべきかが説明されています。目次は次の通りです。 Pre-Requisite Introduction Chapter 1. Professionalism Chapter 2. Saying No Chapter 3. Saying Yes Chapter 4. Coding Chapter 5. Test Driven Deve

    書籍『The Clean Coder: A Code of Conduct for Professional Programmers』: 柴田 芳樹 (Yoshiki Shibata)
    yujiorama
    yujiorama 2011/06/27
    アンクルボブ、面白そうだ
  • 書籍『Test Driven Development for Embedded C』: 柴田 芳樹 (Yoshiki Shibata)

    Test Driven Development for Embedded C 作者: James W. Grenning出版社/メーカー: Pragmatic Bookshelf発売日: 2011/05/02メディア: ペーパーバック Beta版の時は、あまり内容を読んでいなかったのですが、最終版の1st printingを通勤電車の中で読んでいます。第1部である「Getting Started」である第6章「Yeah, but ...」までしかまだ読んでいませんが、組み込み向けテスト駆動開発としてはお勧めです。 第5章「Embedded TDD Strategy」では、組み込みシステムでTDDを採用した利点が説明されています。特に、ハードウェアに依存する組み込みシステムでは、どうしても、(不安定な)ハードウェアが提供されてからデバッグに入ることに対して、TDDによりその問題をどのように

    書籍『Test Driven Development for Embedded C』: 柴田 芳樹 (Yoshiki Shibata)
    yujiorama
    yujiorama 2011/05/14
    組み込み開発もやっていた柴田さんの書評
  • どうしてミケランジェロになれないんだ?: 柴田 芳樹 (Yoshiki Shibata)

    「たがねは買ってやった。なのに、どうしてミケランジェロになれないんだ?」すぐに生産性を高めようと必死の組織では、そんな問いかけが聞こえてくるが、そうした組織にかぎって、能力よりも給料の安さで人材を雇う。ミケランジェロ組織にはかならずと言っていいほど、買ったきり積まれたままのツールの山がある。 ツールが便利なことは言うまでもない。適切な使い手に渡れば、すばらしく生産性を高め、ツールがなければできなかったことを成し遂げられる。しかし、ツールの作り手も言っているはずだが、使いこなすためのスキルがあることが必須条件である。たがねは、ミケランジェロが手にとらなければ、へりの鋭い金属片にすぎない。 「基礎教育」でも書きましたが、スキルを向上させることを中心としてソフトウェア開発を行ってきた場合には、コードの品質を測定したり、バグを発見するような静的解析ツールの導入は、必ずしも必要ではありませんでした。

    どうしてミケランジェロになれないんだ?: 柴田 芳樹 (Yoshiki Shibata)
    yujiorama
    yujiorama 2010/12/16
    "個々の技術者のスキルが低いのをツールで補おうとしても、結果として、技術者のスキルは向上するのではなく、ツールが生成する警告数が減るだけの結果となり、技術者のスキルは全く上がっていなかったりします。"
  • 書籍『とことん人を育てる!旭化成アミダスのIT戦略』: 柴田 芳樹 (Yoshiki Shibata)

    今年で4年目になりますが、旭化成アミダス社の新入社員研修で「ソフトウェアエンジニアの心得」教育を行ってきました。今日は、土曜日でしたが、研修は行われています(新入社員研修中は、代わりに水曜日が休みだそうです)。その際に、頂いたのがこの書籍です。私の研修は、昨年の研修スケジュールの中でコース名が掲載されています(85頁)。 書には、旭化成アミダス社で行っているFIT-Career制度を中心として、研修制度や実際に働いている人たちの経験が紹介されています。 http://www.amidas.co.jp/sinsotu/it/ FIT-Career制度では、原則5年間の雇用契約なのですが、その理由は、次のように述べられています(146頁)。 5年間という区切りを設けたことは、旭化成で採用した多くの若手社員を見てきた三崎社長が、「社会人になった最初の5年間をどう過ごすかで、後々のキャリアが決ま

    書籍『とことん人を育てる!旭化成アミダスのIT戦略』: 柴田 芳樹 (Yoshiki Shibata)
    yujiorama
    yujiorama 2010/10/13
    成長カーブの傾き
  • 技術者のレベルとソフトウェア開発の難易度(2): 柴田 芳樹 (Yoshiki Shibata)

    ソフトウェア開発を続けていけば、自然とレベルが上がるということはありません。中級職人と上級職人の間には、大きな溝があります。上級職人になれるかどうかは、「新たな技術も含めて自分で常に学習を行い、自然と実践できている」ということです。これは、急にできるものではなく、初心者の頃から行っていくものです。それを行わずに、知っている知識だけで開発業務をこなすと、中級職人で終わってしまいます。中級職人に関しては、次のように拙著の中で解説しています。 このレベルは、多くのソフトウェアエンジニアが到達して、ここで停止してしまうレベルです。 つまり、五年以上のソフトウェア開発を経験して、30代になり、すでに過去の開発業務で使用している技術であれば、問題なく使用してソフトウェア開発を遂行できるレベルです。 このレベルで停滞すると、キャリアパスとしては危ない状態になってしまいます。とりあえず業務は遂行できるため

    技術者のレベルとソフトウェア開発の難易度(2): 柴田 芳樹 (Yoshiki Shibata)
    yujiorama
    yujiorama 2010/02/04
    ソフトウェア技術者のレベル
  • ソフトウェアの世界は止まらない: 柴田 芳樹 (Yoshiki Shibata)

    ソフトウェアの世界は止まることを知らないです。常に、新しいことが起きています。たとえば、新たなプログラミング言語Go※がGoogleからオープンソースとして、リリースされています。 http://golang.org/ この止まることを知らない世界で、新たな事柄の学習を、会社が教育という形態で行ってくれることを期待しても無理です。むしろ、期待しては駄目です。 一方で、社会人になったばかりの若手に対しては、継続した学習の重要性を理解してもらうのと、基礎的な事柄を習得してもらうために、勉強会や「プログラミング言語Java教育」への強制参加、日々の開発でのコードレビューを含む指導など様々なことを、前職では行ってきました。 現在の会社でも若手(入社三年以内)を対象として「プログラミング言語Java教育」を実施するための準備をしています。かなりきつい教育コースであることは、このブログにも何度か書いて

    ソフトウェアの世界は止まらない: 柴田 芳樹 (Yoshiki Shibata)
  • ソフトウェア開発の「現場」はソースコード: 柴田 芳樹 (Yoshiki Shibata)

    マルチスレッドプログラミングを格的に行ったのは、1993年夏以降にSolaris 2.3を利用してソフトウェアを開発した時でした。Solarisとしては、初めてOSレベルでマルチスレッドをサポートしたばかりでした。当時は、マルチスレッドに関する書籍はほとんどなく、Solarisに付属するドキュメントを読んで学習したと記憶しています。 マルチスレッド関連の書籍が出始めたのが、1995年頃ではないかと思います。すでにかなりのマルチスレッドプログラミングをしていたので、復習および理解を深めるために、3冊ほど読んだと記憶しています。 Solaris 2.3を用いた開発では、開発言語はC++でした。C++格的に開発を始める前に、書籍でC++を学習したのですが、どのを読んでも、公開API(公開クラス)から実装の詳細(protectedやprivateのフィールドやメンバー関数)を隠蔽する方法が

    ソフトウェア開発の「現場」はソースコード: 柴田 芳樹 (Yoshiki Shibata)
    yujiorama
    yujiorama 2009/10/18
    ところが世の中のIT技術者向け資格はコード書けなくても認定取れちゃうし、その資格を重宝する会社がいてもうね…
  • Breakable Toys: 柴田 芳樹 (Yoshiki Shibata)

    Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman 作者: David H. Hoover出版社/メーカー: Oreilly & Associates Inc発売日: 2009/10/21メディア: ペーパーバック ソフトウェア開発者としては、自分の技量を伸ばす練習のために、壊しても良いオモチャが必要だと述べられています。まず、冒頭の引用としては、Paul Graham氏とDonald Knuth氏の言葉が引用されています。 You can't do anything really well unless you love it, and if you love to hack you'll inevitably be working on projects of your own. 好きでなければ実際

    Breakable Toys: 柴田 芳樹 (Yoshiki Shibata)
  • 継続した学習: 柴田 芳樹 (Yoshiki Shibata)

    ソフトウェアの世界は、ずっと変化してきており、今後もその変化は続きます。私が初めてコンピュータに触れてから31年が経過していますが、学ぶべきことや面白そうなことが毎年のように登場してきます。 一方で、2、3年以上を要するソフトウェア開発では、その開発で使用される技術は開発期間中は固定化されます。そのため、業務をこなすのに最低限必要な技術を学習しかしなくても、そのプロジェクトが続いている限り、問題なく仕事をこなしているような感覚になるかもしれません。 常に継続して学習しているかしていないかで、ソフトウェアエンジニアとして技量は大きく差が付きます。たとえば、JavaあるいはRubyを使用して開発しているプロジェクトであれば、長い開発期間中に『プログラミング言語Java』、『Effective Java』、『プログラミング言語Ruby』などの使用している技術に関したきちんとした書籍を並行して読む

    継続した学習: 柴田 芳樹 (Yoshiki Shibata)
  • PDF版:『Java 2 Standard Edition 5.0 Tiger』: 柴田 芳樹 (Yoshiki Shibata)

    2005年4月に発売してからすでに4年が経過し、絶版となっているため入手が困難になっている書のPDF版を公開します。 第8章の8.2節「アノテーション処理ツール(apt)」の内容は古いため役立ちませんが、それ以外は、今でも十二分に役立つ内容だと思います。リリース1.5以降の新たな言語仕様で開発している人は、一度目を通してもらえれば、Java言語に対する理解が深まるかと思います。 8.2節を書き直し、他の部分に加筆・修正した版を作成して公開したいと思っていますが、あまり、期待しないでください。

    PDF版:『Java 2 Standard Edition 5.0 Tiger』: 柴田 芳樹 (Yoshiki Shibata)
  • ソフトウェアエンジニアの成長カーブ: 柴田 芳樹 (Yoshiki Shibata)

    最近良く話していることなのですが、社会人として働き始めた新卒の技術者は、最初の数年は成長していきます。与えられた業務を遂行しながら、そのための学習もしていくからです。しかし、2、3年すると開発業務をこなせるようになり、特に新たな勉強をしなくても、日々、会社に行って開発業務が遂行できるようになります。 この状態、つまり、継続した学習をしなくなった状態で、10年とか経過すると、ソフトウェアの世界は大きく変化している可能性があり、新たな技術が登場し、その人の技量は相対的に今度は低下しはじめます。しかし、この時点で、新たなことを学習するのは困難だったりします。学習する習慣が無いわけですから、勉強しろと言っても、「なぜ、休みの日に勉強しなければならないのですか」ということになります。 そのような人に対して、マネジメントは、その人ができる仕事を与えて、何とか仕事をしてもらいますので、「新たなことを勉強

    ソフトウェアエンジニアの成長カーブ: 柴田 芳樹 (Yoshiki Shibata)
    yujiorama
    yujiorama 2009/06/27
    ソフトウェアエンジニアは学習し続けなければならない
  • 1