UbuntuにJava8をいれた
これ見たら1分くらいで入った。スゴイ。
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer
これでインストール出来た。
複数バージョンのJavaが入ってる場合、
sudo update-java-alternatives -l
で使えるバージョンは確認できるし、
sudo update-java-alternatives -s java-8-oracle
すれば、java8使える。スゴイ。
UMLモデリングのエッセンス 第3版 読んだ
マーチン・ファウラーの本ですね。

UML モデリングのエッセンス 第3版 (Object Oriented SELECTION)
- 作者: マーチン・ファウラー,羽生田栄一
- 出版社/メーカー: 翔泳社
- 発売日: 2005/06/16
- メディア: 単行本
- 購入: 8人 クリック: 254回
- この商品を含むブログ (92件) を見る
読もうと思った理由だけど、エレメンタルデザインパターンの頭にUMLを読めたほうがいいって書いてあったのと、これまでのエンジニア生活の中でガッツリUML書く機会もなかったし、ぶっちゃけクラス図以外は自信がなかったというのがある*1。
印象に残ったのは「双方向関連」と「汎化」の話で正直これはモデリングから脱線している部分に興味を持ってしまったのだけど、双方向関連はJavaで実装してみたいなって思った*2。汎化の説明のときに、リスコフの置換原則を元にスーパータイプと置換可能であるならば、継承を伴わない実装でもサブタイプとできるというのが凄く感動した部分で新しい知見だった。つまり、構造的部分型とか、ダックタイピング的な実装でも良いってこと。この話の中にJavaの古いバージョンのVectorの話が出てきて、確かに実装が最悪な何かを別の新しい何かに置換したいっていうときに、構造的部分型が使えるなら継承を行わなくていいし便利だよなーとか思った。サブクラス化とサブタイプ化というのを分けて考えることができるのはステキだと思う*3。
とりあえず、この本自体は買って損はしないと思う。SIerとかでUMLを書く機会がどのくらいあるかはわからないけど*4、自分自身がアプリケーション開発をしていく中でコードで表現する前に頭の中のものを取り出してなんとなく形にできるのは利点だと思う。そして、書籍自体は「スケッチ」としてUMLを書くために紹介している感じがあるので実践的に使いやすい。あと新人研修とかでちょこっと習っただけで、UMLの良さを理解出来てない人には特にオススメします。はい。僕もこの本にあと3年早く出会いたかった。
IntelliJ IDEA で選択範囲を括弧で囲む
ずっとこういう設定ないのかなーって思ってた機能があったのでテンション上がっている。
IDEAのSettingsのEditor->Smart Keysにある
[Surround selection on typing quote or brace]という項目にチェックを入れるだけ。
これでダブルクォートとか括弧で囲みたい範囲を選択した後に、開き括弧とかダブルクォートをタイプすればokというわけです。
地味だけどたまーに、すっごくたまーにだけどこの機能欲しい時があるので嬉しい!
Java The Good Partsを読んだ
というのは、嘘だ()
8章までとりあえず読んで、師走に突入してしまいなかなか読めないでいるので、一応忘れないうちにそこそこ感想だけ書いておこうと思う。(残りはRMI、並行処理、エコロジーなのでまぁとりあえず後でもいいかなっていうのもある)
全体的に軽い読み物なのでさくっと読める印象です。*1
で、相変わらずだけど、僕はJavaのことを何も知らないなって思いました。はい。
たぶんEffective Javaあたりをちゃんと読めば書いてあるんだろうなーっていうようなことも書いてあってEffective Java欲が高まった。あの本は昔、辞書的に使っていただけなのでちょっと買って読み直したいですね。
例外、パッケージ、GC、コレクションの章はJava使っているならちゃんと知っておいた方が良さそう。
特に例外とコレクションは大変参考になりました。というか、コレクションのこと知らなすぎて泣きたい。
余程じゃない限り、ほとんどのJavaプログラマにおすすめできる本です。読みましょう。
僕は、ちょっとEffectiveJava買ってきて勉強しなおします;;
*1:さくっと読めるのに、なんで9,10,11章を読んでいないのかっていうツッコミはやめてください。死んでしまいます
Java初心者はテキストエディタを使ったほうが良いのか
仕事中、サクラエディタにJavaのソースコードをコピペして、シンタックスハイライトが効かなかったので、拡張子付きファイルにしかシンタックスハイライトが効かないのか気になって調べていたら以下の様な記事が目についた。
Javaクラスファイルは、Eclipseやテキストエディタ(サクラエディタなど)で編集します。 (Java開発ソフトの紹介はこちら) EclipseはJavaの開発者を中心に、広く利用されている統合開発環境です。 サクラエディタは、フリーソフトでありながら、多くの機能を備えているテキストエディタです。
ある程度Javaプログラミングに慣れてきたら、とても便利なのでEclipseを利用すると良いでしょう。 しかし、はじめてJava開発する場合は、以下の理由により「テキストエディタ」での編集をおすすめします。
これを読んでふと、前職在籍中に「新人研修では最初にただのテキストエディタでJavaを書かせるべきで、Eclipseを使うべきではない」と豪語していた10年くらいその会社に在職している先輩を思い出した。
10年前のデファクトスタンダードなIDEが何かは知らないが、彼ら*1は某B社の提供していたIDEをその昔使っていたようだ。Emacsを"マニアック"で使いにくいと評価していた彼らのお気に入りのエディタはサクラエディタだった。どうでもいいけど前職在籍中、僕はテキストエディタならUnEditorを好んで使っていたが。*2
閑話休題。しかし、なんで初心者ならテキストエディタを使ったほうがいいのか、僕には全く分からない。
この記事が書かれたのはcopyrightを見た感じ、2011年前後なんだろうと思うんだけども、今時初心者にテキストエディタを使えって勧める事自体理解に苦しむ。
この記事の筆者曰く、
らしいのだが、過去に新人研修を受け持ったことがある/自分も3年前に新人研修を受けた身としては、テキストエディタを使う弊害の方が大きい気がしている。
「補完機能に頼りすぎてしまうため、意識しないと覚えることができなくなる。」
これに関しては何が言いたいのかよく分からない。どういう意味での補完機能だろう。例えば初心者は以下の様な、標準出力を用いるコードを練習として多く書くだろう。
System.out.println("Hello, world!!");
この時、Eclipseならsysouだけタイプして、Ctrl+Spaceとするだけで綺麗にSystem.out.println()を補完して出してくれる。
これは初心者にとって嬉しいことではないのだろうか。何度も何度も退屈な標準出力をするだけのコードを書くのに、少ないタイプ数で補完してくれるというのは初心者にこそ嬉しい機能だと思う。
また、初心者がテキストエディタだけで書いたときにありがちなのが、タイポに気付かなくて動かない、だと思う。スペルミスしているだけで動かないコードっていうのを、新人研修なんかやっていると良く見かけるが、これはIDEさえあれば解決できる。たかがタイポごときで時間を浪費しているのはとても無駄だと思うんだが、どうだろう。
「Javaクラス間を簡単にトレースできるため、ソースコードを読み取る力がつきにくい。」
わざわざテキストエディタだけでソースコードを読み取る機会が、そんなに沢山あるのだろうか?いや、あるのかもしれない。
けれど簡単にソースコードを追えるということは、それ以外の創造的活動に時間を割り当てることができていいのではないだろうか?
苦労して貧弱なテキストエディタで、ソースコードを追いかけたらソースコードを読み取る力が付くというのは根性論だと思う。
「Eclipseはテキストエディタと比較すると、PCのCPUパワーやメモリを消費する。」
今時のパソコンなら(少なくともCore i5でメモリ2GBあれば)Eclipseはなんなく動く。多少重く感じるかもしれないが、それでも動くのだ。
そして、CPUパワーやメモリを消費したら何が問題なのだろう。この筆者はもしかしてWindows2000時代のパソコンを使っているのかもしれない、それなら仕方ない。しかし、今パソコン買えば大概の環境できっと問題なく動くと思う。
まとめ
結局、僕自身も何が書きたかったのかよく分からなくなったけど、javac/javaコマンドとかも別に最初から教える必要ないんじゃないかなって思う。
右も左も分からない、ましてコマンドプロンプトなんてきっと開いたこともないであろう人間に、テキストエディタで書いてコマンドプロンプトでjavaコマンドを叩けっていう方がおかしいだろう。それは本当にただのおまじないとしかその時は思わないと思う。2セントなら賭けても良いけど、javac/javaコマンドを最初に教えてその後でIDEを使わせたら1ヶ月もしないうちにjavac/javaコマンドなんて忘れてるよ。
そんな感じで僕にはやっぱりサクラエディタは早すぎたようだ。使いにくい。Emacsに帰りたいよ。。。