Eclipseを3.5に↑↑

暇だったのでEclipseを3.5にしてプラグインも全部最新にしたらCheckStyleが動かなくなった…
CheckStyle5.XだとふるいCheckStyleの構成ファイルでエラーがでるみたい。
CheckStyleプラグインのバージョンを4.Xにすると元通り動いた。あっせた。。。


最低限入れておくプラグイン

  • Subversive (subversionクライアント)
  • PropertiesEditor (propetiesファイル編集用)
  • CheckStyle (コードチェック)
  • FindBugs (コードチェック)
  • TomcatLuncher (Tomcat起動)
  • MiddlegenIDE (Hibernate設定ファイル作成)
  • DBViewer (DB開発)
  • Implementors (実装へ飛ぶ)
  • Commons4E (toString(),equals()等の作成)


後で入れるプラグイン

集計関数MIN(),MAX()をVARCHAR2項目に使用する

Oracle10g。

集計関数のMINやMAXってVARCHAR2項目にもつかえるのね。

コード値などで複数レコードに分けられてるデータを1レコードで表現したいということが結構よくある。
帳票系のプログラムとかね。
こんなかんじ。


ID コード値 名称
1    A   A名称
1    B   B名称
1    C   C名称

   ↓

ID コード値A 名称A コード値B コード値B コード値C 名称C
1    A    A名称   B     B名称    C    C名称



こういう場合まずUNION ALLとかDECODEをつかって以下のような状態を作る。


ID コード値A 名称A コード値B 名称B コード値C 名称C
1    A    A名称
1               B     B名称
1                           C    C名称


んでもってIDでGROUP BYして集計関数のMINやMAXを使って1レコードにする
別にMINやMAXに意味はなくてGROUP BYの制約のために使う。

結果としてはこんなSQLになる。


SELECT
 ID,
 MIN(コード値A) AS コード値A,
 MIN(名称A) AS 名称A,
 MIN(コード値B) AS コード値B,
 MIN(名称B) AS 名称B,
 MIN(コード値C) AS コード値C,
 MIN(名称C) AS 名称C
FROM
 …
GROUP BY
 ID


SUM()とか使って件数集計とかはよくやってたけどVARCHAR2でMINとMAXが使えるなんてしらなかった。
うれしそーに職場の人に話したらみんな知ってた…orz

常識なのね。


あ、HibernateのHQLではUNIONが使えないのでViewを作るしかないです。
IBatisとかだったらゴリゴリいけるね。

ちょっと今の自分のするべきことをまとめてみる

個人的にわりかし一大イベントだった友達の結婚式が終わって…
さぁやりたいこと、やらなきゃならんことがイロイロできるぜ!
と思いきや、なんか気が抜けちゃっていまいちなにもできてない自分がいる…orz
まぁ仕事がずいぶん忙しくなってきたのも原因の一つではあるけど、そんなこと言ってたらいつまでたっても何もできないww
ってことで今の自分がやるべきこと・やりたいことをまとめて、進めていくための方針も考えてみる。


仕事
いきなり仕事ってww
まぁこればっかりは特になにも考えなくても週5日はやらんなんのやけど。。。
でも漠然とやるより、課題や問題意識をもって取り組むほうが同じ仕事でもスキルや経験として定着するはずだと思う。
最近仕事をやっててちょっと思うのが、やっぱり好きなことややりたいことばっかりはできないってこと。
好きなこととかやりたいことってのはやっぱりガリガリコード書いたり、新しい技術を使って開発したり…
まぁ簡単にいうと新しいこととか経験したことないことをやりたいってこと。
(それもどちらかというと技術的な観点で)
やっぱりそれが一番簡単に自分の成長を実感できるからなんだろうけど…。
でもやっぱり仕事だから同じようなことをしたり、個人的には本質的でないと思うこともしないと駄目なことも多い。
ドキュメント作ったり、もうわかりきってることを後輩に説明したり…最近は一日Eclipse開かない日すらある…orz
こういう作業って業務においては不可欠なんだけど…いまいち自分の成長が実感しにくい。
でもやらなきゃならないことは変わりないので、可能な限り自分を成長させることができる  側面に目を向けていこうと思う。
どんな無駄と思える作業にも必ずそのそういう側面はあるはず。
すこし長くなったが、今後仕事においてはそういうある意味での制約的な部分の中からも
自分は何が学べるか、学ぶべきかということを意識して取り組んでいきたいと思う。
  
個人的開発
個人的に仕事とは関係なく色んな技術を使って色んなもの開発していく。
こっちは仕事と違って使いたい技術を存分に駆使して、面白いものを作っていきたいと思 う。
使いたってみたい技術は色々あるけど…
とりあえず自営業の友達の顧客・商品管理〜受注のシステムを作ることになってるから当分はそれを作る予定。
週末に設計して平日は仕事終わりにゴリゴリとプログラムしていこ。
(またちょっとずつブログに進捗を書いていきます。)
あとは開発仲間がほしい。おれこういう開発話ができる友達が全然いないしなー…orz
会社の人とかもなんかちょっと違うしなー↓↓
友達募集してますっ!!

  
バンド 
ブログで書くのは初めてだけど…去年末から2年ぶりくらいにバンドを再開したりしてみた!
みんな仕事があるから大学ん時みたいに馬鹿みたいな活動はできないけど…やっぱりやるからにはがんばりたいね。
ライブもしたいし、できるならレコーディングもしたい。
曲作りやら練習やら色々しなくちゃな!

  
その他
・読書
・英語
・数学
・資格
・アニメみたい…
・ゲームしたい…
・バスケしたい…


だ、だめだ…まとめるつもりが…やりたいことが多すぎるorz
 
  

つかえるSQL

仕事で詳細設計作成中にハケーンしたのでメモ。
知ってる人なら誰でも知ってるはず…なんで知らんかったんやろ…orz

ちなみにDBはOracle10g


複数のフィールドに対して組み合わせの条件指定

SELECT
  *
FROM
  TABLE table1
WHERE
 (table2.field1, table2.field2) in (SELECT table2.field1, MAX(table2.field2) FROM TABLE table2 GROUP BY table2.field1)

一見あんまり使わない?
条件が固定の場合はAND条件で対応できるけど、複数の組み合わせの条件をするときなどに使える。
サブクエリと組み合わせて使うはず。


TABLEというテーブルがあるマスタテーブルの明細テーブルだとする。
 field1は親テーブルと結合するキーフィールド
 field2は明細の連番フィールド


この時にマスタ毎の最大連番の明細情報を全て取得するというような時に使える。


たまたま使う機会があったんだけど…使う人は普通によく使うはず。
ってか常識レベルかもww


ちなみにHibernateのHQLでも問題なく使用できるみたい。


あと、外側のクエリで使用するテーブルとサブクエリで使用するテーブルを結合する手法も結構使えそうたっだのでまた後日言及してみる。


しかし、HibernateみたいなO/RマッパーつかってるとSQL弱くなってるなー。
IBatis使ってUNIONとか使いまくってたころが懐かしい…(半年前だけどww)

VBのときなんかソースにベタ書きでゴリゴリ書きまくってたなww

ケッコンシキ

ついにやってきた大学時代の仲いい友人の結婚式。
仕事するようになってから会う回数はかなり減ったけど、昔は一緒にバンド組んでライブしたり…かなり感慨深いもんがある。

奥さんも同じサークルだったからよけいに感慨深い。
さらに二次会の幹事と司会だったからなおさら感慨深い。
いや、胃が痛い…。


前日まで二次会のスライドショーが完成してなかったりBGMができてなかったりで前日ほぼ徹夜だった。


結論から言うと最高だった。
正直あんなに感動するとは思わなったなー。


普段泣くようなキャラじゃない友人が泣くとこ見ると一瞬で泣けてきた。
ほんまに感情があふれ出してるかんじで…ぐっときた。
カッコよかった!!


結婚なんてクソクラエ!!


…って思ってたけど家族ができるって素晴らしいと思った。
ほんまにおめでとう!!


二次会は二次会でトラブルもあったが、新郎新が喜んでくれてたのでそれが何より大成功の証だ。
正直、仕事も忙しかったし、作るものも多くて…途中で投げ出したくなったこともあったけど頑張ってきてよかったと思った。


やっぱしんどいことを乗り越えたときの充足感は最高だ!
まーもっと頑張れたとこもある気はしなくもないけど…。


それにしても二人ともほんまにおめでとう!!
また遊ぼう!!


よっしゃー、これで大仕事がおわったからまた、やらんなんこと、やりたいことやりまっくてやるぞー。


※せっかくなので二次会関連で作ったもの

  • 招待状

   最近はメールですませることも多いみたいだけど、なんとなく手作りのがいいかなーと思ってイラストレーターを駆使(できないが)して作った。
   正直イラストレーターなんて使ったことなかったから、かなりしょっぱいデザインになったww
   でもいい経験だった。

  • スライドショー

   これは以前のエントリにもあるAnimotoを使用した。 
   さすがにこれは評判バッチリだった。当日の披露宴のやつも作ったからみんなビックリしていたなww
   無料版は30秒分しか作れないから3$出して3分くらいの作ったが、画質が荒かった。
   さらに5$出すと高画質版のmp4とisoがダウンロードできたのでやむなく5$支払った!!
   でもみんな喜んでくれてたから安いもん!!

   ビンゴの代わりにトランプを選択するようなFLASHゲームを作った。
   これは面白かった。FLASHActionScriptの勉強にもなったしね。
   これを機にFLASHActionScriptに関してはもっと色んなものを作っていきたい。

  • サプライズビデオ

   新婦から新郎へのサプライズビデオを作った。
   撮影には参加してないけど、mp4の画像をaviに変換してjpgの静止画と結合したりしてなかなかいい感じのものが作れた。


こうやってみるとなんか色んなもんつくったなー。
ほとんど未体験ゾーンだったからいい勉強になったな!!(ちょっと任されすぎやったけど汗)


なんだかんだで楽しかったな〜☆


いろんな意味で新郎新婦に感謝!
サンキュー!

伝える技術2

祝日のこんな時間に一人会社で明日の勉強会(説明会かな?)資料を作ってる自分…orz


昨日急遽、新しいプロジェクトのダウンロード機能の実装の説明会をしてほしいと頼まれた。
以前のエントリにも書いたけど、前回の説明会は失敗(反省点見えた点では成功)に終わってしまったが、こんなに早くリベンジの機会がやってくるなんて思わなかった。


本来はおれより詳しい先輩もいるし、おれがやるような仕事じゃないけど、ついこないだの"アウトプット"のエントリを会社のブログにも書いたために課長がチャンスをくれた。(ような気がする)
これもアウトプット効果だね、やっぱ俺間違って無いじゃん(自画自賛)
せっかくのチャンスをいただいたので、やっぱり前回の反省を活かしてよりよいモノを作り上げたい。
(会議とか勉強会のプレゼンってある意味すげークリエイティブな作業だと思う…これに関してはまた別の機会に考察しよう。)


そんなこんなで以前のエントリを見直してみた。
(以前のエントリへのリンクってどうやるんやろww)


反省点として

  • サンプル実装などの例に乏しかった
  • 伝えたいことが明確になっていなかった
  • レベルの設定が曖昧だった
  • 聞き手の視点にたてなかった

というようなことを挙げている。


今資料を作っていてこれに加えて

  • 時間設定、時間配分を考慮できてない
  • 趣旨はあったが、目的・目標があいまいだった

という問題もあったと思う。


時間に関しては全く考えてなくて信じられないくらいにかかってしまったし。
最初から全体として時間、それぞれのコンテンツの時間を考えながら作業をしていれば、おのずと最大の反省点である焦点の不定も防げていたかもしれない…。
目標に関してはあまりうまく説明できないが…
聞き手がどうなるのが目標(ゴール)なのか曖昧だった。
たとえば、
この説明会を開催したことで完璧に実装が出来るようになるのがゴールなのか、
それとも全体像を把握してもらいあとは自分一人で実装できるようになってもらうのがゴールなのか


"聞き手にとってのゴール"のイメージが出来ていればもっと焦点が定まってたはず。
結局いろんな失敗の要素がかなりあって"焦点がぼやける"という大きなミスにつながってのか…orz


といった反省を活かすために今回は

  • まず、最初に趣旨と目標(ゴール)を説明。
  • 次に全体的な流れをサラっと説明して軽く実演。
  • 細かく説明すべき部分にスポットライト当て説明する。
  • 最終的に、質疑応答と全体の考察を行う。

という流れでやってみよう。
スポットライトの当て方がポイントだね。


結果はまた記します。


しかし最近こういうことや、設計的な仕事が増えてきたなー…
うれしい反面こうやってソース書いたりしなくなってくんだろなー。(仕事では)
複雑…もっといろんな技術に触れたいのも事実。
みんなこんな葛藤と戦ってるんだろうな。


最後に資料作ってる最中に思ったこと(後日改めて言及するかも…)


"話さないコトを決める"ことは"話すコトを決める"ことより重要かもしんない。


さ、仕事仕事。