源泉徴収してみた

 法人を設立時に「源泉所得税の納期の特例の承認に関する申請書」を提出した後、半年前にゼロ円で終わっていた源泉徴収ですが、それから半年が経ち次の期限7月10日が迫ってきたので、いろいろ調べながら手続きをしていきました。
 まず、税額をどう計算すればよいかですが、毎月の給与を決め、税務署が送ってきた「源泉徴収税額表」という冊子を見ながら、いくらになるかと見ていくと、「甲」と「乙」という欄があり、何が違うんだと読んでいくと、「扶養控除等申告書」の提出が有れば「甲」無ければ「乙」という事みたいです。
 「扶養控除等申告書」って確かサラリーマン時代に書いた記憶はありますが、どこに提出するものかは知らず、、で、さらに調べていくと給与の支払者に出してその先は特にないとの事。
https://www.nta.go.jp/tetsuzuki/shinsei/annai/gensen/annai/1648_01.htm
 という事は、筆者のような一人法人は自分で書いて自分に提出という事らしい。。提出したよ!って「源泉徴収税額表」の「甲」の欄で給与に該当する金額の6か月分を税額として、e-Taxで「所得税徴収高計算書」を作成してみたのですが、どうも事前に電子納税の届け出をしないとe-Taxで納付が出来ないので意味が無いようです。次回までに電子納税できるよう手続きしとくとして、今回はe-Taxは使わず、前に税務署から送られてきていた「所得税徴収高計算書」を金融機関に持って行って納付する事にしました。が、用紙がe-Taxで作成したフォーマットとはちょっと違う事に気が付き、納期特例の6か月まとめるタイプが手元に無い事が判明。
 後日、仕事場の近所にある税務署へ行き、納期特例用の「所得税徴収高計算書」を入手、その足で銀行へ行って納付してきました。
 もうすぐ、法人設立1年が経とうとしていますので、決算に向けていろいろ手続き的な事を調べないといけませんね。

Windows2012ServerR2評価版を入れてみたが、、

 先日、とあるシステムの導入に向けてのトライアル環境を作る手伝いをしていたのですが、OSがWindows指定なので評価版のWindowsServer2012R2をインストールしました。
 OSのインストール自体は簡単なのですがインストールの数日後見てみると勝手に電源が落ちていて、誰かに落とされたかな?とあまり気にしていなかったのですが、とあるシステムの導入作業時に勝手にシャットダウンし始めて困った事に。180日間使用できると書いてあったはずなんですが。。
 で、インストール時を思い出してみるとサーバ日付がだいぶ古くなっていたのを直していたので、それで180日間が終わってしまったような状態になっていた模様。。さらに調べてみると期限切れ後も延長できると下記を発見。

https://msdn.microsoft.com/ja-jp/library/dn303418(v=ws.11).aspx

これで暫くは持ちますが、こんな落とし穴があるのでインストール前にちゃんと時間合わせしとくべきでした。
他にもネットワークのセキュリティ設定あたりも結構引っかかったので、ちゃんと調べてから作業をしないといけませんね。

ロダンは地獄の門を作ったけど彫ってなかった

 先週末、嫁さんに誘われて静岡へ美術館巡りに行ってきました。静岡県立美術館と静岡市立美術館でどちらも初です。
 静岡県立美術館の方は、残念ながら今話題の若冲さんの有名な絵が前週で終わってましたが、ロダン館は結構凄かったです。考える人、地獄の門といった有名な彫刻が勢ぞろい状態です。静岡になんでこれだけのものが揃ってるんだろう?筆者は全然美術に詳しくないので後で知った事なんですが、これらの彫刻は一つだけでなく複数存在しているようです。なぜかというと、ブロンズ像は型を取って銅を流し込んで作るものなので、同じ型から作ったものは全てオリジナルという扱いになっているようなのです。静岡県立美術館だけでも考える人は地獄の門についているのを合わせて大・中・小と3体ありました。
 で、地獄の門の方ですが、こちらは世界に7つあって、日本には上野の国立西洋美術館とここ静岡県立美術館の2か所あるようですが、この地獄の門は、全てロダンの死後に作成されたものであり、しかも静岡にあるのは結構最近作成されたものとの事。これをロダンが作ったものと言えるのでしょうか?
 どうやら元々ロダンは自分で彫刻を彫っている訳では無く、粘土で原型を作った後にその型を取って石膏の原型を作って確認した後は、その型から鋳造してもらう工房にブロンズ像の制作を依頼するという形だったようなのです。静岡にあるのはその原型を使っているので本物という事になってます。
 そこで思い出したのですが、筆者が社内SEに転職して最初の仕事、利用部門内に設けられたシステム開発室という部署と兼務になりシステム構築プロジェクトの担当をしていた時の事です。半年近くを要件定義作業で費やし、その後は複数のベンダーに開発を依頼しつつ、同時にその繋ぎの一部を自らプログラミングしていたのですが、その室長が言っていた「俺たちが作ってる」という言葉に当初違和感を覚えてました。いや、作っているのはベンダーさんや自分も含めた開発者じゃないかと。
 でも、しばらくしてその考えは間違いである事に気が付きました。何を作るべきかを決めた人は確かに作った人と言っていい、最重要人物です。大阪城を作ったのは秀吉で、Windowsを作ったのはビル・ゲイツ、iPhoneを作ったのはスティーブ・ジョブスなんです。でも、それを作るにあたってたくさんの人が携わった事は事実であり、それを忘れてはいけませんね。
 県立美術館の方はルーシー・リー展を見てきました。そちらで思ったのは、美術品と工業製品の境目はどこにあるんだろうという点なんですが、美術品とされるものは芸術家という個人名義のものしか美術品とされないような気がします。著名な漫画家には大勢のアシスタントがいるけど基本的に漫画家名義の作品なので美術品と同じように感じられますが、一方で文学とか音楽とかはゴーストライター的な存在が判明すれば即叩かれてますよね。某ゴーストライター騒ぎがあったクラシック音楽を騒ぎになる前に生で聴いた事がありますが、それは感動したものです。あれだけメディアに叩かれては、その後あの音楽を聴いた人はどう感じているのでしょう?製品の場合は、強いリーダーシップが見えない企業が作った製品は、どんなに素晴らしいモノであっても、個人的な誰かの強い思いとかが見えないと、いいモノ以上には成らないように思います。とは言え、ソフトウエアは美術品には成りえませんね。例えば、iPhoneを美術館が展示したとしてもハードの方がメインにしかならず、ソフトの部分を一般的な人々に説明する事は不可能としか思えません。

createQueryとcreateNativeQueryは結構違う

 現在、JavaEEで作っているアプリケーションに画面を追加する事になり、それまではJPAのJPQLを使ってのcreateQueryで済んでいたのですが、今回はGROUP BYとかUNIONとかでSQLを作る必要があり、JPQLでは無理そうなのでcreateNativeQueryで実装する事にしました。
 で、最初はcreateQueryをcreateNativeQueryに置き換えてSQL文を噛ませばいいかなと思っていたのですが、どうやら結構違うらしい。。
 一つ目の違いは、createQueryならテーブル定義に沿って作ったEntityに直接入れる事が出来ますが、ちょっと複雑なSQLだと問い合わせ結果に一致したEntityを作る事自体が難しい。
 二つ目はバインド変数の違い。createQueryならバインド変数は[:PARAM]のように文字として指定して下記のように変数をセットして結果を取得できますが、

createNativeQueryでは[?]でないとダメという解りにくい相違点。。
結果的に下記のようになりました。

※上記のSummaryは上記クエリ結果をセットする為だけのクラスです。

なお、数値はBigDecimalで扱うようです。
バインド変数の仕様違いにはちょっとハマりました。。

JSF2単純リダイレクト

JSF2でコンテンツルートのページから別ページへリダイレクトさせるのに何がいいかなと調べたところ、meta refreshタグを使って飛ばすのが一番簡単そうでした。具体的にはコンテンツルートにログイン画面を置くことが出来ない場合に、ログイン画面に飛ばすという要件への対応になります。

カテゴリー: Java

データの意味

 先日、セミナーにちょっと行ってきました。
アプリケーションセキュリティに関するセミナーでしたが、印象に残ったのが、扱うデータの意味を理解して対策を立てるのは、どんなセキュリティ対策のツールを使っても扱うのが相当困難だという点でした。
 企業内で扱うデータの意味を知っているのは、基本的に企業内SEもしくはその位置付けにある人達です。何を知っているかと言えば、具体的にはテーブルとカラム、データ項目、インターフェース設計なんだと思います。前職で一時的にホストを担当した時は、VSAMのレコードレイアウト図として紙でしか資料が残っていなかったので、エクセルのテーブル設計書に落として、把握している範囲で項目の備考欄を埋めていきました。
 備考欄に殆ど何も書かれていないテーブル設計書をたまに見かけますが、項目の備考欄こそデータの意味を記載する箇所ではないかと思います。項目名だけでデータの意味を想定するのは間違いが生まれる元ですので、どういう意味の項目であるか、どういう値が入りえるのか、他とどういう関係を持っているか、出来る限り備考欄を埋める事が、データ設計をする人としてのそのデータを扱う他者への優しさではないでしょうかね?

VFS使用時の注意事項

 前に載せたapache.commons.vfs2を使ったファイルダウンロードをテストすると問題が発生しました。テスト内容は、
1.大きなファイルをダウンロードしてみる
2.複数のブラウザから同時にダウンロードしてみる
ですが、1は問題無いものの、2は後からダウンロードした方がFileObjectからInputStream取得時に失敗しています。今のやり方だとマルチセッションに対応していないようです。
 で、ググってみると下記を発見。
 http://timurlaykov.blogspot.jp/2011_05_01_archive.html

FileSystemManager fsManager = VFS.getManager();
でなく、
StandardFileSystemManager fsManager = new StandardFileSystemManager();
fsManager.init();
に置き換えるというもの

同時アクセスといっても大量に発生する事は今回考えなくてよいので、この内容に変えました。

 しかし、ググってばかりでいいんでしょうか?VFSはオープンソースなんだから、ちゃんとソースを解析して問題を解決したいのですが、やはりプログラミングを10年近くサボっていたからでしょうか、自力だといつ解決できるのか自信が持てません。。

カテゴリー: Java

税務署への届出

先週法人登記が済んだのを確認したので、次は税務署です。
前回と同じように下記を参考にして書類を用意します。

特に届出資産は無いので、
1.法人設立届出書
2.青色申告の承認申請書
3.給与支払事務所等の開設届出書
4.源泉所得税の納期の特例に関する申請書
の4つを一応用意しましたが、いまいち書く内容が解らないまま管轄の松戸税務署へ行きました。
前回、個人事業の開業届を出して以来の税務署でしたが、その時は確か10時過ぎくらいにに行ったら税務署の職員がいろいろ教えてくれたのですが、今回は昼近くで数人待ってる人が居たので、窓口で細かい事を聞く事が出来ず、届出については上記のうち2~4は実際に給与を支払い始めるときでいいとの事、仕事の切れ目は数か月先なのでとりあえず1だけ出して他は後日にしました。別に1の届出も後日でよかったのかな?
なお、法人成りなので、個人事業の廃業届について聞いたところ、こちらは個人事業主としての仕事が終了した後で提出との事なので、結局後日来なければダメですね。
税務署前にある中華そばまるきが改装中だったので、これもまた後日。

あと、税務署に法人設立セットの書類が置かれていたので持って帰ってみましたが上記の書類と同じでした。書き方がいろいろ書いてある書類も入っていたので、無理して出さずにかえって良かったかも?

その足で次は、法人口座開設です。
登記事項証明書(履歴事項全部証明書)と会社の印鑑証明を持って、以前から使っている三井住友銀行に行きます。
窓口で開口一番「2回目ですか?」と聞かれてなんの事?という感じでしたが、口座開設の申込後2週間くらいで連絡があり、その時が実際の手続きになるので2回行かなければいけないからです。メンドクサイなあ~、って断られたらどうしよう。。

実は口座開設申込時の本人確認資料として提示した国民健康保険証が先月末で切れていて1回断られました。FAXとかでもダメというので、ちょっとクレームを言いそうになりましたが、気持ちをこらえて即、自宅へ戻って新しいのを持ってまた銀行へ行きとりあえず申込は終わりました。。

リファクタリング中にパニくる。。

現在、複数のアプリケーションを一人で同時作成しているのですが、ソースがぐちゃぐちゃになってきたので、今更ながら共通処理を別プロジェクトにまとめて一元管理する事にしました。
WebApのプロジェクトでは、ビルドパスの追加と、プロジェクトのプロパティ→Webデプロイメント・アッセンブリーで、共通処理プロジェクトを追加すればサーバ実行時に動くようになるようです。
 その後、ソースを共通処理プロジェクト側に移動させていたのですが、動作確認するとDB接続箇所で意味不明のエラーが発生し、接続できなくなってしまいました。

<2015/06/24 13時14分30秒 JST> <[ServletContext@25608288[app:OfficeAp module:officeap path:null spec-version:3.0]] Root cause of ServletException. javax.security.auth.message.AuthException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLException: ユニバーサル接続プールを起動できません: oracle.ucp.UniversalConnectionPoolException: データソースから接続を取得できません: java.sql.SQLException: 接続プロパティ: 書式エラー: Property is 'v$session.program' and value is 'XX.XXXX.XXX.XXXXXXXXXX.common.DBConnectionManager'

他にもいろいろソースを移動させていたので、何が原因か解らなくちょっとしたパニック状態。。
数時間試行錯誤した後、エラーメッセージをちゃんと見直してみる。
v$sessionのprogramにクラス名がセットできないみたいだけど。。なぜ?

結果、パッケージ名が長くなってセット出来なくなっただけでした。。
48文字までしかダメみたい。

カテゴリー: Java

Coherence開発環境作成

これは昨年からの備忘録です。。

開発対象のインフラターゲットは、RHEL+WebLogic12 + Coherence + OracleDB 12cという構成

開発環境
Windows7, Oracle Enterprise Pack for Eclipse(OEPE Luna)
OracleDB(開発用にOracleXE)は別途インストール

WebLogicは、管理サーバ自体にアプリケーションをデプロイするようになってました。
(管理対象サーバ追加の仕方がよくわからなかったので・・)

OracleのWebからOEPEをダウンロード
インストール後、
WLSの起動時の環境設定バッチ setDomainEnv.cmd に下記を追加

↓Coherence設定ファイル等を外出しにする為、WebLogic起動時の引数として設定してます
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dtangosol.coherence.distributed.localstorage=false
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dtangosol.coherence.override=c:\dev\bin\tangosol-coherence-override.xml
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dtangosol.coherence.cacheconfig=c:\dev\bin\cache-config.xml
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dtangosol.pof.enabled=true -Dtangosol.pof.config=c:\dev\bin\pof-config.xml

set CLASSPATH=%CLASSPATH%;C:\Oracle\Middleware\Oracle_Home\coherence\lib\coherence.jar

↑Coherenceがインストールされた場所にあるライブラリを指定

インフラターゲット側では管理対象サーバで動かすので、WebLogicコンソールから上記をJVM実行引数として追加すればOKでした