税務署リトライ

先月提出をしなかった書類を税務署に出してきました。

・青色申告の承認申請書
・給与支払事務所等の開設申請書
・源泉所得税の納期の特例の承認に関する申請書

税務署ではパラッとチェックして一瞬で終わりました。

青色申告については、個人事業者の経験があるので、税制上の優遇があって有利だというのは分かるのですが、それ以外については、なんだかよくわからないので内容を整理してみます。

・給与支払事務所等の開設申請書
文字通り給与を支払うという行為が発生するにあたって、所得税の源泉徴収を行う事務所を開設しますという事で、この事務所宛に源泉所得税の納付用紙が送られてくるとの事。役員給与という形になるので一人法人でも必要になるとの事。
でも、後で気が付いたのですが、1ヶ月前に法人設立届出書を提出してしばらくした後に税務署から「源泉徴収のしかた」という冊子と納付書が届いていました。。税務署フライングしてません?この書類出さなくてもよかったのかな。。?

・源泉所得税の納期の特例の承認に関する申請書
これは本来毎月支払わなくてはならない源泉所得税を半年ごとにしてもらう為との事。
毎月払うなんて経理とか総務の人が居ない限り無理なんで、出さなくてはいけない申請書です。

一人法人として残りの手続きは年金周りと思いますが、もうちょっと情報収集してからにします。

人月の制約

ソフトウェア関係の書籍としてはあまりにも有名な「人月の神話」の冒頭に、プログラムをプログラミング製品(汎用性を持つデザイン、文書化、テスト等)にすると元の最低3倍のコストがかかり、プログラミングシステム(コンポーネントとしての使用に耐えうるようにするという事か)となるには、こちらも3倍かかるので、これら双方を兼ね備えたプログラミングシステム製品は結果9倍以上になるという記述があります。
で、現在ここでいうプログラミングシステム製品って何があるんだろうと考えますが、OSやJavaのようなプラットフォームしか思い当りませんね。
筆者のような日本にいる「システムエンジニア」と言われる人々は何を作っているのかと考えますと、企業内で使用されるシステムとかWEBサービスとかの構築がメインなんじゃないでしょうか?これらは、上記でいうところのプログラミング製品というものにも当てはまらないように思われます。文書化されてはいても、殆どの場合それを使う為では無く、どう作るか、またはどう作ったかという設計書としての文書だし、テストにしても到底あり得ないケースまで考慮してテストやったり、その為の実装したりってあまりやらないでしょ。
という事で、筆者の場合は特に個々の機能について見積もりをしない前提である為、「人月の神話」の世界にあるような大規模なシステム製品を作っている訳ではなく、参考になる所もあるけど、当てはまらない事が多いように感じました。
結局のところ、どこまでやるかがそのコストになるので、どこまで整理されたシステム構成にするか、どこまで完璧にテストするか、どこまで大多数の人が読める文書を作るかといった判断は、全て予定されたスケジュールと用意されたコストによってある程度決まってしまいます。結果的に「人月の神話」では無く、「人月の制約」の中で必要な機能を全てちゃんと用意した上で上記のような要素に対応するしかないのです。でも、それは全然悪い事では無いと思います。特に筆者のような仕事は、製品を作っているのではなく、エンジニアリングサービスを提供しているからです。
他者が書いた1システム全体のソースを読んでいると、そのような状況が何となく想像されますね。メンバー構成とか役割分担の仕方とか、テストで特に不具合が多かった箇所とか、アーキテクト的な全体を構成する立場の人がいたかとか。一番難しいのは全体の構成でしょうね。人によって読みやすいコードって多分違うので、コンセプトを理解した上でないと、良し悪しの判断さえ出来ないでしょう。

FilterでWeb要求・応答をログ出力してみる

今、リクエストを受信した後に対外接続を行うシステムを作ってますが、がつがつと外部に繋ぐのも気が引けるという事で、、そのシミュレータとして簡単なWebAPも作りました。
APサーバは、WebLogic11G。作っているAPの仕様上、POSTをサーブレット処理してます。
で、結局Oracleのページに乗っていたグッドなサンプルをそのままパクってみました(汗)
Oracle Containers for J2EE サーブレット開発者ガイド
Request処理は解るのですが、Responseの方はFilter内でラップするというちょっと自分では考え付かない内容でした。。
上記に載っている、FilterServletOutputStreamとGenericResponseWrapperは、深く考えずに同一パッケージ内にそのままクラスとして作ります。
で、Filterクラスを作ってログを出力します。よく使っているlog4j2でやってます。

で、web.xmlに上記Filterをセットします

最初サーブレットはアノテーション@WebServletで書きましたが、どうも11Gだとダメっぽいのでweb.xmlにservletをMappingする事にしました。シミュレータは本当に簡単なAPなので。。
開発環境は他のプロジェクトで使うWebLogic12cのままで11Gを別途用意しなかったんですが、実行環境が違うとデプロイに失敗して結構メンドクサイです。コンパイラーJavaのバージョンをちゃんと確認してなかったからなんですけど、、

TeraTermマクロのfileopenで失敗

去年作ったTeraTermマクロのサーバ作業の自動化ツールで1年以上問題無かった箇所でエラーになるとの事で見たら、端末のセキュリティレベルが変わっていてマクロのfileopenで失敗している事が判明。fileopenしているファイルが書き込めないように端末設定が変わっていたのが原因で、マクロのfileopenでは書き込めないとエラーになるんですね。
 で、マクロの仕様をネットで見たらfileopenの仕様に読み取り専用モードのオプションが4.85以降で追加されてるじゃないですか!
 かといって、ツールで使っているTeraTermマクロをバージョンアップするのも、20パターンくらいの作業を自動化しているのでちょっと躊躇。。
 作業自動化ツールをマクロで作ることにしたのは、基本ミドル・運用アプリ系の導入無し、複数サーバで同じような作業があるし、サーバ側に作業自動化シェルとか置くと、ここのサーバ運用的に変更の敷居が高いという環境上の要件からなんですが、マクロにしたらしたらで端末の設定変更でなくマクロを変えればいいじゃん的な発想に変わってしまうという、、まさにジレンマですね。変えやすいものは変われるけれど、それを維持するのは結構メンドクサイんです。。このメンドクサイという事実がシステムの開発・運用コストに直結しているハズなんですけどね。。

法人口座の取得

SMBCと地銀の両方申し込んだけど、地銀の方は申し込みの翌日連絡があり口座開設OKなのでまた来てくださいとの事。SMBCの方は10日くらいたった後に、法人名義の公共料金領収書か不動産登記が必要との事。作ったばっかりだし、領収書なんてすぐできないでしょ?とりあえず地銀の口座が開設出来たので、都市銀の方は暫く放置かな?べつに無くても困らないし。。