Effective Java 読書会メモ(項目22~30)

489471436109_sclzzzzzzz_

先週末(11/22)のEffectiveJava読書会のメモより。

項目23[パラメータの正当性を検査する]

 ほとんどのメソッドとコンストラクタは、パラメータとして渡される値に関して何らかの制約を持っています。 … (中略) … このような制約は、明確に文書化すべきであり、メソッド本体の初めに、検査することで制約を強制すべきです。
(p111)

ちょっと分からないところがあった。

 時折、計算によっては、パラメータに対する必要な正当性検査を暗黙に行いますが、検査に合格しなかった場合に誤った例外もスローしたりします。すなわち、不正なパラメータ値の結果として、その計算が自然にスローする例外が、メソッドがスローすると文書化した例外と一致しないということです。
(p113より)

の「その計算が自然にスローする例外」にはチェックされない例外(RuntimeException系)は含まれないんだよね? 含めてしまうとなると、この提案に従うのはかなり煩雑になってしまう…。

項目24[必要な場合には、防御的にコピーする]

FindBugsでEIとかEI2として指摘されるケースを防止しよう!という話。

  • Dateってmutableだったんか…知らずに使ってた。
    今後はimmutableなDateのラップ実装を使いたいと思う。
  • (DTOのGetter/Setterってどうよ?という話は置いといて)
    EclipseでGetter/Setterを自動生成するときに、オプションで「防御的コピー」を記述してくれる機能があればいいのに。

項目29[ローカル変数のスコープを最小にする]

項目とはあんまり関係ないポイントですが、

//ランダムアクセスリストをイテレートするための高速なイディオム
for (int i = 0, n = list.size(); i < n; i++) { …中略… }

というやり方、良いですね。
私は今まで int n = list.size();をforの外に書いていて自分でも何とかならんかな、と思っていました。良い書き方を知って嬉しいです。

項目30[ライブラリーを知り、ライブラリーを使う]

幾つか知らないモノがあったのでメモ。

  • String.CASE_INSENSITIVE_ORDER
    Comparator実装の一つ。これを知らずに、似たような事をするクラスを2回は書いたことがあります…。
  • IdentityHashMap
    equalsじゃなくて==でキーを比較するHashMap。今のところ使い道を思いつきません。
  • java.util.prefs
    APIリファレンスによると「このパッケージを使用して、アプリケーションからユーザーおよびシステムの設定データと構成データを格納および取得できます」。設定ファイルをロックできたり、設定値の変更をモニタできたりする。
  • java.nio
    ヒープの外にバッファを作れたり、複数JVM間でも有効なファイルロックを使えたりする。

「変なプログラマの作り方」という勉強会

昨晩は、「変なプログラマの作り方」という勉強会に行ってきました。

毎回、事前に提示されたお題について、3名くらいがプログラムを書いてきてプレゼンし、参加者全員で「ユニークさ・面白さ」を評価して投票する、というコンペ形式の勉強会です。

発表作品(?)を簡単に紹介してみます。

  • カップラーメンより速くつくる掲示板 / fujioka0729さん
    Ruby on Railsを使って1分半くらいで掲示板を作るライブコーディング。すっかり忘れていましたが、on Rails的な何かって良いなぁ、という想いを新たにしました。そういえば"JavaでRailsしてみた"っていうプロダクトがあったような。今度調べてみよう。
    後半、ワンライナーというテキストを1行づつフェードイン/アウトさせるエフェクトを追加されました(こっちは15分くらい)。
    ライブコーディング面白い。芸ですね。
  • Flexで作るゆるふわ掲示板 / obanettyさん
    うーん…説明が難しい…ふわっとした掲示板。ライブラリを使ったアイディアを思いついたので、サクッと作ってみましたという感じです。楽しいですよね、そういうの。私は最近やらなくなってしまいました。何でだろう?
    あ、あと経歴の紹介が面白かったです、というか親近感が湧きました! 振り返って見ると、それで1票入れちゃったような気がします。
  • バッチファイルで掲示板作りに挑戦してみた / 崎さん
    CGI/IISを*.batに繋いだら、どんな感じにコーディングしないといけないのかやってみました、という感じです。<をECHOするのに^でエスケープしないといけないとか、クエリパラメタをちゃんと環境変数で取得できるけどURLデコードは自分でしてね、とか、そういう「へー」連発の挑戦記として、しっかりとまとめられていました。

全体としてfujioka0729さんの同僚の方の参加が多かったですが、次回以降はそれ以外の参加者が増えそうな予感です。

親睦会もありました。参加者11名で1:30まで大盛り上がり。以下、言葉たらずな酔っ払いメモより。

  • IT勉強会は2種類に分類できそう。道を究める系、内輪ネタ系。どちらにも属さないような勉強会。
  • 他人のことだと良いコトが言えたりする。客観視点を持つことの強みによる?
  • システムの価値=システムの賢さ:それを使うユーザにアフォードする解法がどれだけ良いものか?という指標。すなわち設計者による問題のモデリングの良さ?
  • 木下くんはフリーライドが大嫌い
  • 正しい防犯標語:「気をつけろ。捕まってからでは遅い」:脅迫を受けるコストは加害者に負担させるべきという話。
  • (11/16追記)guccyonさんと"マネジメントor教育"論について, SEという職業の未来について, 文化としてのプログラミングのお話。

姓名判断で名付け中!

念願の第一子の出産に向けて、名付け作業してます。

参考にしているのは


の3冊です。

とりあえず3冊をさっとプレビューしたところ、ほとんど漢字辞典なので全部読む必要ないことが分かりました。

安斎流という本の最初のところに色々とルール?が書いてあるのでちゃんと読みました。

  • 字画の組合せ(天・地・人・外・総格あるいは天・地・人・外・総運の吉凶)
  • 陰陽(各字画の奇遇の組合せ吉凶)
  • 五行(姓・名の頭字の読みの組合せ吉凶、天・地・人の端数の組合せ吉凶)
  • 画数(1〜81まで載ってる)の吉凶は、どの本も同じっぽい
  • 同格(地・人・外・総の端数の重複を避ける。青い本には地/人、人/外の端数/基本数が同じにならないようにしろ、と書かれている。WEBで調べたら他にも色々気をつけないといけないらしい)
  • 親の名前と同じ字を入れるのは良くないらしい(母親ならOKとか、一字目じゃなければOKとか、細かいところは本によって違う)
  • 1字の名前は避けた方が良いらしい

姓名判断で一番大事なのは、字画の組合せから導かれる5運(本によっては5格という)の吉凶だけど、同格も結構重要っぽい。全部完全に満たすことが出来るのか…。IT系らしくExcelを使った総当たり作戦を検討してみます。

設定可能な前提条件としては

  • 当然ながら姓(名字)は決まっている。
  • 2字の名前なら一文字30画までとしても900通り
  • 3字の名前なら27,000通り
  • 4字の名前なら810,000通り

とりあえず常識的な"2字"からなる900通りについて、5運,5運の端数の重複チェック,姓名の陰陽バランスを全部自動計算して、オートフィルタを使うことにしました。

さっそくやってみると、天〜総の5運が全て大吉数になる組合せが2つだけ見つかったけど(7,4,7,6と7,4,9,4)、どちらも端数の同格
が2つ(11と13)ある…。2つずつなので、バランスが取れていると見れなくもないけど、教科書的には駄目っぽいな…。2字の名で、5運全部を
大吉数にしては同格を避けられない。ここは諦めて本人に気をつけてもらうというのも手なのだろうか。

端数の同格だけは避けるようにして、5運全部を吉数以上で絞り込んでも結構ヒットする。大吉数を最大化すると11個ヒット。画数が少ないのは2つ。7,4,2,11と7,4,4,9。どちらも陰陽が良くない…。

今度は、端数の同格に加えて陰陽バランス凶を避け、5運全部を吉数以上、大吉数を最大化(3運が大吉数)すると8個ヒット。でも、どれも画数が多い。最小で地運27画なんて日本人離れした名前になりそうだけど、辞典から何とか自然な字を見つけることが出来るだろうか。

結局のところ、2字では全部の指標を満たすような名前は見つからない。欲張りすぎということ? あるいは3字で計算すれば違う結果が得られるのか…。

優先順位を付けられれば重み付けして順番に漢字を拾っていけるんだけど、そんな数値化できるようなモノでは無いのだろうしなぁ。

占い師の先生に相談に行くかな…。

『会議力』向上ワークショップ

■詳細未定です
本ワークショップは開催日時などの詳細を検討中です。最新の情報をご希望の方は、本ページ下部の登録フォームにてメールアドレスをご登録ください。
ワークショップ開催の詳細が決まり次第メールにてご連絡させていただきます。

■時間・場所・費用
・大阪か京都
・参加費用:3,000円
 (ホワイトボードマーカ4色、ホワイトボードペーパー代含む)
・日程未定 AM10:00〜夕方未定(早くて15時遅くても17:00)まで

■ファシリテーション・グラフィック:
 会議で議論していて
 ・何回も同じ話を繰り返してしまう。
 ・そもそも何の話だったのか分からなくなる。
 ・すぐに脱線してしまう。
 などの経験は無いでしょうか?

 本ワークショップでは、上記のような会議の機能不全を
 防止するための技術「ファシリテーショングラフィック」(略してファシグラ)
 について学ぶことができます。

 ファシグラは、会議で飛び交う意見や情報を"見える化"する技術です。
 技術といってもホワイトボードや模造紙などを使って
 会議の参加者のために板書をしていくだけのことなのですが、
 ・見やすく
 ・分かりやすく
 ・要約しつつ
 書けなければ意味がありません。
 一見、そんなの才能がなければ難しいのでは…という気がしますが、
 ・見やすく書くコツ
 ・分かりやすく書くコツ
 を知ること、そして、
 ・実際に要約する練習すること。
 これだけで、結構、技術が向上するものです。

 本ワークショップでは、ファシグラの基本的なことを知るだけでなく、
 模擬会議で練習することによって、技術の向上を目指します。

参考書籍:
http://www.amazon.co.jp/exec/obidos/ASIN/4532312884

■ブレインストーミング:
 ブレインストーミングは、ファシリテーションよりも
 広く使われていますが、結果に不満がある方が多いのではないでしょうか?
 本ワークショップでは、
 模擬会議中に、カードゲーム「ブレスター」を使った
 ブレインストーミングをはさみます。
 カードゲームで遊びながら、
 上手にブレインストーミングするコツを身につけることが出来ます。

■持ち物
・参加費:3,000円
・メモ用の筆記用具

■お申込

目標実現!セルフコーチング入門~コスモマップ基礎講座~

Cosmo_circles

Baisoku_book

コスモマップとは

コスモ・マップとは、自己実現のためのセルフ・プランニング・シートです。手順に従ってA4用紙1枚のシートを埋めていくことで、簡単にセルフ・コーチングすることが出来ます。

   1. 明確な目標設定
   2. ご褒美のイメージ
   3. バランスの取れたアクションリスト
   4. バランスの取れた人脈リスト
   5. 上記全てをアンカリングするキーワード

数多の成功本、自己啓発本に書かれている成功のための要素。コスモマップを書くことで、これらすべてを手に入れることが出来ます。

コスモマップの書き方は書籍「倍速実現マップ」でも学ぶことが出来るのですが、本講座では、実際に1枚〜2枚のコスモマップを書いていただきますので、自己実現に必要と言われる要素の基礎を確実に身につけることが出来ます。
 

本講座を受講された方の声

(セミナ受講後のアンケートより)

  • 目標を立てても、なかなか実行できなかったのですが
    今日からやれそうな気がします。
    <システムエンジニア/20代女性>
     
  • 本は読んでいましたが、
    今ひとつ(コスモマップの)書き方が分からず書ききれずにいました。
    ナビゲートしていただき、一枚書き上げることが出来ました。
    収穫がハッキリとイメージできたのが非常に嬉しい。
    幸せな気持ちです。
    <システムエンジニア/30代男性>
     
  • "収穫"のところで、より鮮明に未来が感じられたこと、圧巻でした。
    <管理栄養士/30代女性>

皆さんの夢を見つけ、かなえるお手伝いをさせていただければ幸いです。
 

本講座の概要

  • 講師:とこい みきと
     
  • 日時:2009年03月29日(日)09:45-12:45 (09:30開場)
     
  • 場所:長岡京市中央生涯学習センター
       http://www.bambio-ogbc.jp/
       JR長岡京より徒歩1分
     
  • 内容:
     
    Cosmomap_paper

    コスモ・マップに目標・収穫・活動・基盤・人脈を記入していきます

    自己実現のためのプランニングシート「コスモマップ」の書き方をワークショップ形式で学んでいただく講座です。
     本講座では、コスモ・マップの書き方の説明を受けながら、実際に1~2枚のコスモマップを書いていただきます。この体験の中で、目標や夢を掘り起こし、それを実現するために必要なものを洗い出して洗練することが出来ます。
     

    • なんか目標っていうのがピンと来ない、
      または具体的に設定できない方。 
    • 使命とか言われるともう別の世界の話な感じがするけど、
      そういうのに憧れてしまう方。

とか、

  • 目標設定は出来たけど、今のやり方で上手く行くのか自信が無い方 
  • やるべきことが沢山ありすぎて、
    どれから手を着けて良いのか分からないという方 
  • 目標設定して、TODOリストも作って頑張ってるけど、
    先が長すぎてモチベーションが続かないよ~という方

そんな皆さんのお役に立てるセミナーです。

今回は特別版として、NLPワークを多く取り入れた内容で開催します。

※コスモマップの詳細については、公式WEBサイトをご覧下さい。

  • 受講料:
     9,000円
     ※受講料は、当日受付時にお支払いいただきますようお願い申しあげます。
     
    • 割引1:書籍「倍速実現マップ」持参の方は1,000円割引いたします。
      (下記割引2と併用可)
       
    • 割引2:再受講の方は4,000円割引いたします。

      (上記割引1と併用可)
       

    • 割引3:コスモ・マップ ナビゲータの方は5,000円割引いたします。

      (上記割引と併用不可)

  • お持ちいただきたいもの:
    • 筆記用具 (カラーペン)
    • ノート、スケッチブックなどメモが取れるもの
    • 受講料(出来るだけお釣りの内容にご協力をお願い致します)

※ある程度こちらでも紙、カラーペンの準備は致しますので、
 お手元に無い方は無理に購入して頂く必要はございません。

※書籍「倍速実現マップ」はお持ちいただかなくてもOKです。
 希望される方には特別価格1,000円で販売いたします。

  • お問い合わせ:
     セミナを受講するにあたって不安な点、開催場所・日時のご希望などあれば、
     このページ最後にあるコメント欄よりお気軽にお問い合わせください。
     

お申込方法

こちらよりお申込ください。

手帳のKPT

Medianl

今年もそろそろ、手帳に関するエントリや日記を見かけるようになってきました。

今年は

  • [P]モレスキン プレーン
     マインドマップなしの読書メモ、アイディアメモ、携帯メモとして使っていましたが、[スケッチブックL + スケジュール帳@シザーバッグ]で代用するようになったので、ほとんど使わなくなりました。
  • [K]モレスキン スケッチブックL
     カラーペンで書いても裏写りしない・ラバーで擦ってもボロボロにならない厚紙、大きめサイズのマインドマップ帳。ちょっと贅沢な感じですが、普段使いの読書メモに使ってます。
  • [P]スケジュール帳
     バーチカルな週間スケジュール帳を使ってました。コスモマップ受講以降、予定とTODOが増えてきて、ちょっと書ききれなくなってきた感あり。
  • [K]シザーバッグ(モレスキン プレーンと入れ替わり)
     フリクションボール8色セット、スケジュール帳を入れて使っています。普段使うカバンの外側にアタッチしているので、スケジュール帳を(腰リールほど速くないですが)サッと取り出して、ちょっとしたメモにも使います。

で過ごしました。来年は、スケジュール帳を[T]「ほぼ日」手帳に替えます。12月始まりですが今から楽しみです。

上記とは別に、腰リールならぬ[T]胸リールの導入も検討中です。

追記:

モレスキンのURLを調べようと思って www.moleskine.co.jp に行ったら、なんと!
今日からCityNoteBookの京都版が発売されているらしい。今日、Loftに見に行ってこよう〜。

勉強の秋

勉強の秋です。 …あと食欲と。

関西でもIT系の勉強会が活発になってきた、と書かれていたのでIT勉強会カレンダーをチェック。

行きたいな、と思うのだけで5つ!
変なプログラマーと、アジャイルナイトは確定。できればKansai.ARも行きたい。

SICP読書会も面白そう。Effective Javaの次の読書会テーマにしても良いかも。

■11/06 追記:

コメントで教えていただいた下記にも参加することに! ありがとうございます小林さん!