引越し手続き

あまりの忙しさに引越し作業が捗らない。
色々と手続きをすませたので次回のためにメモ。
前提:東京→神奈川に引越し

電気

東京電力のサイト「お引越しの手続き」より停止・開始の手続きが可能。
お引越しの手続き|東京電力
※お客様番号が必要

どうやらでんき家計簿とやらに入会(無料)しないと手続きできない残念仕様のよう。
なお「引越れんらく帳サービス」にも強制加入となる。必要なければ引越し後に退会しよう。
東電の引越しれんらく帳サービスはガスや水道も同時に手続きできるようだが
自分は電気の手続きを最後にやってしまったため利便性は不明。

入力で建物名がカタカナじゃないことに気づかずエラーでなかなか進めなかった。
なんで漢字はダメなんだ…

ガス

東京ガスのサイト「お引越しの際の手続き」より手続き可能。
東京ガス : お手続き・サポート / お引越しの際の手続き-ガスのご使用開始/中止のお申し込み-

現在の住居はオール電化で契約していないので新しい家の契約のみ。
新旧の住居が東京ガスの場合は一括で手続きできる。
ガスの開閉は立ち会いが必要なので注意すること。

水道

東京水道局のサイト「インターネットでのお手続き」より手続き可能。
サービスメニュー
※お客様番号が必要

新居はお客様番号が分からないため管轄水道局のサービスセンターに電話連絡。
新築でまだ水道局にお客様番号的なものが届いてないらしく手続き不可。
蛇口ひねれば水は使えるようになっているので支払いの手続きなどは新居にある書類送ってくださいとのこと。

郵便転送

郵便物の転送の手続きも忘れずに。日本郵政のサイト「e転居」より手続き可能。
あたらしい町にも、しっかり届く安心。e転居 - 郵便局

本題とは関係ないけどwelcometownってURL良いね。

転出届・転入届

転出届は引越しの2週間前から、転入届は引越し後2週間以内に手続きが必要。
遅れても罰則はないけどちゃんと移動しましょう。

引越しシーズンならたいていの自治体で土曜か日曜に臨時開庁していると思われるので活用しよう。

その他

クレジットカード:カード会社のサイトから手続き可能でした。
銀行口座:銀行のサイトから手続き可能でした。
携帯:携帯会社のサイトから手続き可能でした。

基本的に領収書なんかもWebにしてるからほぼWebから時間を気にせずできるようだ。便利。
ショッピングサイトの住所変更は次買い物するタイミングでいいかなー。

FXMLの多言語対応(未解決・暫定対応)

分からないことだらけで全然進まないよ。

FXML便利。
HTML分かる人間からするとSwingだのJFaceだのでかなり面倒な思いをしたGUIの作成がすごく分かりやすくなった。呼び出しもControllerとの結びつけも実にシンプル。

そんな中、次の課題はラベルの文字列。
普通ならこれまた簡単に対応できててResourceBundleを第2引数で渡せば良いようだ。

label.propertiesならこんな感じ。

FXMLLoader.load(getClass().getResource("screen.fxml"),ResourceBundle.getBundle("label")));

FXMLの方はこんな感じで。

<TextField fx:id="cencel" text="%cancelButton" />

参考:

How to load FXML with values from Preferences in JavaFX?

http://stackoverflow.com/questions/10792890/how-to-load-fxml-with-values-from-preferences-in-javafx


何が普通でないかというと、propertiesはnative2asciiが面倒だから自分用にXMLファイルをリソースとして読み込むResourceBundleを作って使っているのです。
ResourceBundleを継承してるから渡すことはできるけど、getBundleをオーバロードしてるメソッドを使いたい。(キーのマッピングを楽にするための小細工が入ってる)
結局やり方が分からなかったから直接リソースのキーを指定して対応している。
あるいはControllerの方でテキストを設定してあげれば問題ないだろう。
ラベルなんかはできればView側でクローズしたいところだが。

FXMLでclassをimportできるから何かやりようはある気がしている。

getResourceのパス指定

うっかりNullPointerExceptionが出たので戒め。

FXMLファイルを読み込むためこんなコードを書いた。
welcomeScreen.fxmlはパスを通したフォルダにfxmlフォルダを作り、その中に。
Javaソースは普通にsrc以下のパッケージの中。
IOExceptionはthrow.

AnchorPane pane = FXMLLoader.load(getClass().getResource("fxml/welcomeScreen.fxml"));

結果、取得できず…IOExceptionではなくてNullPointerExceptionになるのね。
getResourceではなくloadで落ちたようだ。

正しくはこうですね。

AnchorPane pane = FXMLLoader.load(getClass().getResource("/fxml/welcomeScreen.fxml"));

リソースの指定で頭に「/」を付けたら絶対パス、付けなかったら相対パスでした。

H2 databaseを使ってみたい

言語はJavaGUIJavaFXで実装することが決まった今、次はデータベースを選定しなければならない。(遅い)
自分専用アプリだし使ったことあるしSQLiteにしようかなーと思っていたけど、どうやらH2というデータベースが速いらしい。
組み込みモードもあってファイル一つでOKなようだから速さ求めてないけど使ってみよう。

導入手順

  1. ライブラリを入れる
    公式サイトhttp://www.h2database.comから最新版をダウンロード
    どうせjarファイルにしか用がないからAll platform (zip)をダウンロード
  2. h2-x.x.xxx.jarをProjectのライブラリに登録

たったコレだけで使えるようになる。便利。
早速Project直下に「db」ファイルを作って以下を実行してみる。

db直下に「test.h2.db」というファイルが自動的に生成された。
上手くいったようだ。

生成されたDBの編集

アプリケーションでは新しいデータの入力と一覧表示がしたいだけなので、わざわざテーブルのCreate文やIndexなどを実装したくない。
というわけで、初期設定は直接DBファイルに実施することとした。
※ライブラリとして登録したjarファイルが実はDBマネージャー機能も持っていた。すごい。

  1. h2-x.x.xxx.jarを起動する。
    • jarをjavaに関連付けてるならh2.bat実行。
    • そうでないならコマンドプロンプトから java -jar h2-x.x.xxx.jar を実行
    • Windows以外の手順は知らないけどとにかくjarを実行すれば良い
  2. ブラウザでH2コンソールが開くのでそこでパスを入力
    • 上で指定した「jdbc:h2:*」のやつ。
    • ファイルパスは絶対パスで。「\」は「/」に変換。
  3. あとはSQLステートメントからごりごりSQL発行してやれば良いだけ。便利。

NetBeansにライブラリを追加する

こまめにメモメモ。
NetBeansのプロジェクトに外部ライブラリを追加したい。

EclipseだとProject直下にlibフォルダ作ってProjectのプロパティからJARの追加とかしてたんだけど、NetBeansのプロパティでJAR追加すると絶対パスで選ぼうとしてProject内から探す方法が分からなくて困った話。

結論として、ライブラリ・フォルダに指定すれば良かったらしい。ちゃんと見ないとだね!

手順

1. Project直下(src以下でも良いけど)にlibフォルダを追加
2. Projectのプロパティ > ライブラリ で「ライブラリ・フォルダ」に1.のlibフォルダを設定
3. 勝手にJARファイルがコンパイル時ライブラリに追加された!

NetBeansにリソースフォルダを追加する

EclipseからNetBeansに移行してきたので色々勝手が分からないのでメモメモ。

リソースフォルダの追加

ResourceBundleでpropertiesファイルを参照しているのでパスを通したい。
パスの通っていない状態だと当然ながらコレが出る。

Can't find bundle for base name constants, locale ja_JP

  1. srcフォルダに新しいフォルダを追加する
    srcフォルダは最初からパスが通っているのでココに作れば勝手にパスが通る。
    ただし、階層が下がるので呼び出す時はフォルダが必要。(当然といえば当然だった…)
  2. project直下にフォルダを作成し、ソース・フォルダとして追加する
    Eclipseと同じやり方。フォルダを作成し、プロジェクトのプロパティ > ソース のソース・パッケージ・フォルダに追加する
    これならフォルダ名は意識する必要はない。

Javaでデスクトップアプリケーションを作りたい

今は色々Excelでデータ入れて分析とかしてるんだけど、もっと簡単に入れたい!
そしてもっと簡単に分析したい! 定型レポートとかほしい!
そんなこんなで作ることにした。
Excel様のPivotより簡単に分析できるのあるかっていうと無いんだけど…

手持ちスキル

  • 私は曲がりなりにも書けると言えるのはJavaくらいしかないので、Javaでやりたい。
  • 本格的に書いたことあるのはバッチ処理とかサーバーサイドで、デスクトップアプリなんて小さいのしか作ったことないレベル。小さいのならSwingとAWT(+JFace)を試したことくらいはある。
  • HTMLとCSSは分かるよ!
  • SQLも分かるよ!

欲しい機能

個人用のデータ入力・分析アプリ。ブラウザ内じゃなくて独立して動いてほしい。
給与明細入れたい。とりあえず定型レポート欲しい。

  • DB処理(CRUD)
  • 画面入力
    • 見た目大事。Excel VBAみたいなダサい画面イヤ
    • ストレスなく入力したい(タブオーダーとかショートカットキーとか)
    • 毎月同じ値の入力も多いので自動補完欲しい
  • 定型レポート
    • サマリ表示 2パターン(年別/月別)
    • 指定した月(or期間)の明細見たい

開発準備

上記のようなことを同僚に相談すると助言もらえた。

  • Javaでデスクトップアプリで見た目重視ならJavaFXはどうか
  • ライブラリ使うならNetBeansいいよ
  • プロジェクト管理はMavenいいよ。NetBeansに入ってるよ

IDEEclipseしか使ったことないので不安だけどNetBeansインストール。
https://ja.netbeans.org/
zip版ダウンロードして解凍するだけでOK。 /bin/netbeans64.exe が本体!

とりあえずNetBeansでやってみようと思う。
ただ、Swingでできてるのかな? MacTypeが効いてない予感…64bitだからかも。地味にストレス。