Windows10でHTAがエラーになる

 HTA&VBSの構成で社内利用向けに作ったツール(社内端末はwin7)について、今後のWindows10導入へ向けて稼働確認をしたところ、エラーメッセージが出て動作しませんでした。

で、ネットでいろいろ調べたところ、
https://msdn.microsoft.com/ja-jp/library/cc817574.aspx
等を見ながら、

を入れてみたところ、エラーは無くなったのですが、画面レイアウトが崩れる結果に・・・
 社内ではこれからの新しい端末はWin10に、既存は当面Win7という方針なので、ツールとしてはどちらも同じように動作して欲しいところです。

 で、上記metaタグを外して結局何がエラーなの?と調べていくと、WMIのExecQueryを使った箇所がWin10ではエラーとなる事が判明。どうもセキュリティがらみの変更っぽいですが、詳細はよくわかりませんでした。。

 今回は別命令で置き換えが可能だったので、それに置き換えて問題無く動作するようになりましたが、画面だけは、フォントサイズの影響があったので微調整しておきました。
 そろそろHTAを止めたいのですが、Windowsマシン前提で簡易な画面ツールを作るとなると、まだ代替え手段が見つかりません。。

2期目の法人確定申告をしてきた

 今月末が法人2期目の確定申告期限になっていたので、徐々に決算申告の用意をしてました。
 既に1回は確定申告の経験があるので、前回を思い出しながら国税・県税・市民税と3か所から届いていた書類に順次記入していきます。
 2期目となって1期目と違うのは、前回の決算申告結果が反映する事でしょうか。特に、「別表4 所得の金額の計算に関する明細書(簡易方式)」の中にある「納税充当金から支出した事業税当の金額」という欄に前回の事業税等を損金として減算するところが2期目のキモっぽいです。
 あと今期は、10万以上のPCを購入していたので「別表16 少額減価償却資産の取得価額の損金算入特例に関する明細書」が加わり、難解な別表5辺りも含めて何とか書類の用意が終わり、本日やっとオフライン申告=税務署周りをしてきました。

 途中、銀行で現金を引き落としてから、管轄の松戸税務署へ行ってハンコを貰い、すぐ近くの県税事務所へ。こんな事もありましたが、さらっと提出してハンコとその場で納税して、あっという間に終了!
 時間を見たらまだ11時を回ったばかり。

 このタイミングは、二郎チャレンジか!と勇んで向かい、開店から2ロット目2番手となり、しばし店内で待ちます。回転は早くすぐに着座。野菜・にんにく注文し着丼

 筆者はジロリアンでは無く一般ピープルですが、都内の数店舗に行った事があり、松戸店は今回初。
 いつもの通り、最初はおいしく、途中で苦しく、終盤の達成感と食べ過ぎの後悔が入り混じった感覚が胃の中から逆流しそうなところで店を後にして、、次に市役所へ向かいます。

 こちらも瞬殺で同時に納税を済まして、帰宅後、e-Taxで国税のダイレクト納付をして本日のミッションは終了です。って、何かあれば後で連絡来るのでしょうけど。

 ところでe-Taxでは、どうやら申告書の作成もe-TaxのソフトをPCにインストールすれば出来そうな雰囲気。これまで筆者はwebのe-Taxしか使ってなかったので、次回はソフトも使ってやってみよう。

Apache CommonsのDateUtilsに機能を拡張する

 よくあるケースと思いますが、メジャーなライブラリにもうちょっと機能が欲しい時、そのライブラリを拡張して共通ライブラリとして使いまわしたりしますよね?
筆者がJavaを使う場合は、だいぶ前からApache CommonsのDateUtilsを拡張し、String・Dateの相互変換メソッドとかを追加していろんな開発案件で使いまわしてましたが、今回、文字列から日時型に変換するけど、どんな文字列パターンになるかが不明確、、という要件があったので、拡張していたクラスに機能を追加し、一般的に日時として使われる文字列からのDate変換機能を追加してみました。

で、テストです。

テスト結果
20170131 is null
2017-9-2 15:00:00 is 2017/09/02 15:00:00
2017/9/2 15:25:00 is 2017/09/02 15:25:00
2017年9月2日8時34分51秒 is 2017/09/02 08:34:51
2017年1月2日8時32分 is 2017/01/02 08:32:00
2017年12月31日午後11時集合 is 2017/12/31 23:00:00
2017年12月2日8時 is 2017/12/02 08:00:00
2017.12.2 PM8:00 is 2017/12/02 20:00:00
2017.12.3 AM8:25 is 2017/12/03 08:25:00
2017.01.31 is 2017/01/31 00:00:00
2017.1.32 is null

YYYYMMDDってのは、ここでは対象外です。だって、ただの数字の羅列は文字として日付とは言えないし。

カテゴリー: Java

法人住民税の中間納付を忘れてました。。

 そろそろ法人2期目の申告をする時期なんですが、いろいろ書類を整理していた所、
「法人県民税・事業税・地方特別税の予告申告について」
という黄色い書類が出てきて、あれ?中間納付って3月にしたよなあ?と銀行の通帳とかを調べたら、やっぱりどこにも該当が無い。。
 国税の中間申告だけ対処していて、県民地方税の納付がされていない事が判明。。
 今月中に決算申告しなきゃいけないので、ヤバいと思い、管轄の県税事務所に電話した所、とりあえず、そのまま申告して下さいとの事。
 この辺の納付って一元化して欲しいなあ。って、国税管轄の地方法人税もあり、県民地方税とか解りにくいし。。

redmineでたまにInternalErrorが出るようになった。

 筆者が通っているユーザーさんでは、redmineに独自開発含めプラグインを10個くらい入れて使っているのですが、何時からかInternalErrorが出るようになり、その調査を依頼されました。
 状況的にはチケットの一覧や詳細を表示する時、たまにInternalErrorとなる事があり、ただ再表示すれば普通に表示されるという何とも解りにくい状況。。
 redmineのログには下記InternalError発生時の内容が出力されています。

i18nが関係しているようですが、たまにしか起きないし、それ以外に問題箇所を特定できそうな出力は読み取れません。
いろいろ試行錯誤してみますが原因は不明。。で、国際化対応が絡んでいるという事で、ログインユーザーの言語設定を英語に変えてみた所、相変わらずInternalErrorがたまに出るものの、ログの出力内容が変わりました。

で、エラーが出始めた時期とかを考慮すると、独自プラグインを入れた後なので、そのソースを眺めていると、en.ymlに不備を発見。直して入れてみると問題が解消したようです。

weblogic管理画面のパスワードを忘れた。。

 2年前くらいからOEPEを入れて開発に使っているwindows端末で、webアプリをweblogicで動かしてテストしたいなと思い、weblogicの管理画面からwarファイルをデプロイしようとした所、管理画面のログインパスワードを完全に忘れていました。。
デフォルトユーザーはweblogicだったのは覚えてましたが、心当たりがあるパスワードを入れても全くダメ。で、どうやってリセット出来るか?をググっても何も解らず、困っていた所、下記を発見。
https://docs.oracle.com/cd/E28613_01/web.1211/b65928/weblogicserver.htm#i1013039
開発端末なので既存のドメインにログイン出来なくなっても、ドメインを新規で作ればとりあえず動かせると言う事で。。本番環境では致命的ですけど。

ManagedBeanが非推奨になっていた

JavaEEでJSF2とJAX-RSを使った簡単な業務Webアプリを作っていたんですが、それまで作っていた開発環境のままWebLogicでローカルテストしてある程度動作するようになった後に、さすがにこの規模のAPにWebLogicを用意するのは無理!という事になったので、前にちょっと別件で使ってみたglashfish実装のpayaramicroで動くように変更してみました。
 まず、普通にweblogicで動かしていたwarをpayaraにデプロイすると下記エラーで失敗します・・

[[FATAL] No injection source found for a parameter of type public javax.ws.rs.core.Response

 正直あまり意識してなかったのですが、、やっぱりweblogicになると内包しているライブラリに依存しやすく、ちゃんと内部を理解していないと何が作用して動作しているかが解りにくいです。。
 エラーを見る限り、jax-rs関連でエラーになっている模様。
いろいろライブラリを置き換えていくと、既にManagedBeanが非推奨になっているようだ。。
結果pom.xmlは下記になり

@ManagedBeanを@Namedに置き換え、SessionScopedをjavax.enterprise.contextに変えたりして、ようやくpayaraで動くようになりました。

 で、とりあえず動かすことはできたとは言え、今やWebアプリを積極的にJavaEEで実装する理由が少なくなっている気がします。Wabアプリならphpとかruby on Railsでの大規模サイトの構築事例がたくさんあります。速度的なアドバンテージも今となってはキャッシュにより殆ど感じられないですし、その実装対象のシステムに何等かの制約やレガシーな理由が絡んでないと敢えてJavaEEを選択する理由は何だろう?JavaEEがいまいち普及しないのは結局の所、各実装はベンダー次第となっている事が結果的にアプリケーションサーバの実装次第となってしまい、Javaとして最大の魅力である(と筆者は思っている)OSを超えた一貫性というものが、各APサーバが内包しているライブラリがバラバラである事により、消え失せてしまっているような気がします。

JavaMailで送信日時が取得できないケースがある

 メールを受信する業務用ツールをJavaMailで実装して、かれこれ一年近く普通に使っていたのですが、新しい要件に沿った機能を追加してテストしていたところ、メールの送信日時を取得
javax.mail.Message.getSentDate()
でnullを想定しておらずエラーに。。
これまで何も問題がなかったのですが、どうもメールによっては取れないケースがある模様。
メールをemlファイルにして中身をエディタで見たところ、

問題無いケース Date: Fri, 23 Jun 2017 11:23:10 +0900
問題有るケース Date: Tue Jun 6 12:31:19 2017

 で、試しにemlファイルのDateヘッダを問題無いケースに書き換えてやってみたところ、普通にJavaMailで送信日時が取れた、、という事は?

 細かくは調べてませんが、問題となるメールはDate書式がMIMEの仕様に沿っていないようです。
仕様に沿っていないのか、仕様が明確でないのか、もしかして、仕様が明確になる前からあるSMTPサーバなのか・・?

 OutLook等の一般的なメーラーで見る限り、普通に送信日時として表示されます。
こういう場合、メールを受信する側からすれば、細かい箇所が仕様に沿っていなくても、問題無く処理できるものを用意しなくてはなりません。
とはいえ、なかなか事前に想定するのは難しく、メールみたいに昔からあるものは特に注意しなければいけませんね。。

カテゴリー: Java

映画「メッセージ」を見て思う事

 昨日、近所の映画館で「メッセージ」を見てきました。何となく柿の種のような(ばかうけの方が正しかったみたいですが・・)宇宙船がちょっと気になった程度で見て見てみようと思っただけなのですが、なかなか、色々な示唆に富んだ映画でした。
 基本的には、未知の宇宙人とのコミュニケーションを取る過程が殆どなんですが、時間軸的に行ったり来たりするので、結構解りにくく、しかしそれがそもそもこの映画の主題なんだろうと思うのですが、それ以上に相手から聞くという事の重要性について考えました。
 システムの業界って、こんな事を実現したいというクライアントの言っている事を、開発者がよく理解出来ない時に、大抵、よくない事が現実化します。それをクライアントが避けたい場合には、高い金を払ってコンサルタントを雇い、その間に入れる事もあります。同じ言葉を使う相手でさえもこんな事は日常茶飯事なのですから、映画のように全く相手に言葉(=WORD)が通じないとしたら、その苦労は大変なものです。
 お互いが相手を理解する為には、少なくともどちらか一方が一旦は聞き役になる必要があります。伝える側は相手を理解すると言う事を目的にはしていないので、聞き役しか相手を理解する事は出来ません。聞き役は「あなたが伝えたい事はこのことですね?」と理解している事を相手に伝え、信用を得た上で次のステップに進む事が出来ます。映画のラストでは主人公が重要人物に伝えたい事を伝える為に、相手を理解していると言う事も同時に伝える事で信用を得ていますが、これは、その重要人物からそれを聞いた事に起因しています。未来に、ですが。
 結局のところ、人と人(または人以外の何か)の関係は、信用しているか?疑っているか?無関心か?の3つの状態を互いに9通りを時間軸で行ったり来たりしているだけと言えば、だけなのかもしれませんが、最低でもどちらか一方が聞くスタンスを持ち、多少なりとも聞く為の技術を持っていれば、信用しているか?という要素がいつのまに何処にも無くなっていたという状況は避けられると思います。
 もうひとつ、この映画に出てくる象徴的な言葉として「ノンゼロサムゲーム」がありました。宇宙人がなぜ地球に来たのかはネタバレなので避けますが、それは数千年後に起きる出来事に関してなので、直接的な利害関係は全く無いようなものです。利害関係が無いのに、なぜ相手を信用出来ないのか?逆に言うと相手を不信に思う時は、ただ単純に相手が嫌いなだけ(信用していない側の問題)か、何らかの「ゼロサムゲーム」的な、勝ち負け、損得の要素が相手との関係の中に生じたと言う事なんでしょう。

消費税の届け出に関する書類が来た

 先日、税務署から「消費税の届出のお尋ね」という書類が来ていました。
あれ?確か、起業から2年は免税じゃなかったっけ?と思いながらも、書類を読んでも「課税期間」という言葉がピンとこないので、税務署の方に電話してみました。なお、筆者の法人はあと2か月で2期目終了となります。
 税務署の電話口では、企業名を言うとすぐに過去の申告内容が検索できるようになってるらしく、前期の売上が1千万超えているから提出が必要ですとの事。ただ、2年間免税なのはその通りで問題無く、課税期間=3期目が始まる今のタイミングで「消費税課税事業者届出書」を提出する必要があるようです。

 もうちょっと調べていくと、消費税には、「原則課税」と中小事業者向けの特例「簡易課税」の2つの計算方法あり、「簡易課税」を選択する場合は、こちらも事前に「消費税簡易課税制度選択届出書」という書類を提出しておく必要があるとの事。
 となると、どちらの計算方法を選択すべきかという事になるのですが、簡易課税を選択すると業種によって「みなし仕入れ率」が決まっており、筆者のような業種だとサービス業に入るので50%で、売上額*消費税率*みなし仕入れ率で、おおよそ消費税率に対し半分が消費税納付額になる模様。一方の「原則課税」は、仕入れ関係の帳簿や請求書等を確実に保存する必要がある、と届いた書類に記載されているので、その辺りの管理が厄介そう。

 計算や帳簿管理が簡単だし、仕入が少ない業種は簡易課税の方がお得になりそうなので、こちらの届出も一緒に提出することにします。