Hatena::ブログ(Diary)

私事ですが…… このページをアンテナに追加 RSSフィード

2018-01-20(Sat)

[]オンラインのみでの法人確定申告と納付の概要 06:13 オンラインのみでの法人の確定申告と納付の概要を含むブックマーク オンラインのみでの法人の確定申告と納付の概要のブックマークコメント

2017/07/14になんとなくで設立した会社(参考:設立時の手順メモ)について「個人確定申告と同じくらいの時期にまとめて確定申告した方が楽そう」「暦の節目と事業年度の節目をあえてずらす意味が分からない」という、やはりなんとなくの理由で事業年度を1/1〜12/31としたため、年が明けてから速やかに決算整理、株主総会確定申告、納付を実施した。

ちなみに1/4から個人用の確定申告書作成コーナーが使えるので2/15を待たずして個人としての確定申告も提出済。早く提出すると還付の場合は1月中に実施されることもある。

MFクラウド会計を使っているうえに単純な仕訳しかない事業なので決算整理自体はサクッと終わって、申告書の作成も「まあ書式通りに書けばいいんでしょ」「財務諸表とかもPDF電子署名つけて送れるんでしょ」的なノリでいたところ、これがなかなか強敵であった。

最終的には電子証明書入り個人番号カード/カードリーダーおよびe-Taxソフト、eLTAX(PCdesk)、ネットバンキングで対面や郵送なしに申告と納付ができたが、苦労したところは以下。はじめの2つまでは想定内だったが、別表以下は想定外であった。

ここで世の会計ソフトや会計サービスがあまり申告書の作成には対応していないことを知るなど。

一部対応しているものや専用のソフトもあるはあるもののお金が掛かるし癪に障るので自分でやることにした。

税理士さんが決算のところだけ結構高い金額を設定してるのは決算整理だけじゃなくて申告書作成の分も入れてるからかな。

申告した税金

今回は千代田区にある法人なので以下のようなものを申告した。

なお、本来は消費税も納める必要があるが、免税事業者なので今回は対象外であった。

また、東京23区法人地方税について都税事務所にのみ申告/納付すればよいが(市町村民税相当が都民税の税率に加味されている)、それ以外の場合だと市役所市町村民税の申告が必要。

税金種別申告ツール損金提出先自分の提出先自分の納付先備考
法人税国税e-Tax×税務署麹町税務署麹町税務所
地方法人税国税e-Tax×税務署麹町税務署麹町税務所地方って名前ついてるけど国税
法人事業税地方税eLTAX都道府県税事務所千代田都税事務所東京主税局
地方法人特別税地方税eLTAX都道府県税事務所千代田都税事務所東京主税局地方法人税とは違う人
法人県民税法人税割)地方税eLTAX×都道府県税事務所千代田都税事務所東京主税局
法人県民税(均等割)地方税eLTAX×都道府県税事務所千代田都税事務所東京主税局

提出した書類

最終的に提出した書類は以下のようなもの。

こちらも本来は消費税関連が入ってくるはずだが免税事業者なので今回は対象外。

別表はほぼ最低限のセットなのでどの法人もこのあたりは書くはず。

勘定科目内訳明細書は自分の法人で扱っている勘定科目を見繕った。こちらも多くの法人で使う品揃えのはず。

法人事業概況説明書は独自の書式などもあるっぽいがe-Taxにあるものを使うのが楽だと思う。「電子計算機の利用状況」の欄に面食らったが文脈的に「会計や在庫管理などにどのソフト使ってる?」の意図と捉えて記入。

財務諸表は本来であればMFクラウドで生成したデータを使いたかったが対応していないっぽいしうちの法人は項目数が少なかったのでPDFを目視しつつe-Taxの「財務諸表(XBRL2.1)」を開いて出てきた書類に転記していった。「XBRL2.1」と書いてあるものの対象形式のファイルがないまっさらな状態からe-Taxで作成可能。複雑な場合は郵送も検討した方がよいが、簡単なら目視転記で頑張れ。

会計上の財務諸表としては「個別注記表」が存在しておりe-Taxでも作成できるが、法人税法施行規則 第三十五条には確定申告で提出するものとして記載されていないというのと、結構目視転記がつらい書式であったので今回は省いた。

書類省令・規則番号/種類申告ツール自分の提出先備考
事業年度の所得に係る申告書-普通法人別表1(1)e-Tax麹町税務所
事業年度の所得に係る申告書-普通法人別表1(1)(次葉)e-Tax麹町税務所
同族会社等の判定に関する明細書別表2e-Tax麹町税務所
所得金額の計算に関する明細書(簡易様式)別表4(簡易様式)e-Tax麹町税務所
利益積立金額及び資本金等の額の計算に関する明細書別表5(1)e-Tax麹町税務所
租税公課の納付状況等に関する明細書別表5(2)e-Tax麹町税務所
預貯金等の内訳書勘定科目内訳明細書e-Tax麹町税務所
売掛金(未収入金)の内訳書勘定科目内訳明細書e-Tax麹町税務所
売上高等の事業所別の内訳書勘定科目内訳明細書e-Tax麹町税務所
役員報酬手当等及び人件費の内訳書勘定科目内訳明細書e-Tax麹町税務所
法人事業概況説明書事業概況説明書e-Tax麹町税務所
貸借対照表財務諸表(XBRL2.1)e-Tax麹町税務所決算書を見ながらe-Taxに転記した
損益計算書財務諸表(XBRL2.1)e-Tax麹町税務所決算書を見ながらe-Taxに転記した
株主資本等変動計算書財務諸表(XBRL2.1)e-Tax麹町税務所決算書を見ながらe-Taxに転記した
中間確定申告書第6号様式eLTAX千代田都税事務所
均等割額の計算に関する明細書第6号様式別表4の3eLTAX千代田都税事務所初年度で12ヶ月に満たないので均等割を月割にする明細
トラックバック - http://d.hatena.ne.jp/t_yamo/20180120

2017-12-29(Fri)

[]AmazonLinuxでselenium + chromedriver + headlessするメモ 05:05 AmazonLinuxでselenium + chromedriver + headlessするメモを含むブックマーク AmazonLinuxでselenium + chromedriver + headlessするメモのブックマークコメント

※ここではselenium-server-standaloneを使ってるけど直近のselenium-webdriverで非remoteの場合はselenium-server-standaloneなしで動かした方がよさそう。

これまでAmazonLinuxでseleniumをheadlessモード(Xvfbを使った昔ながらのやり方ではなくchromefirefox機能として備わったheadlessモード)で動かす際、chromefirefoxも導入がややこしかったが、AmazonLinux2はCentOS7チックになったためgoogle-chromeリポジトリを設定してyumするだけで入るようになった。

とりあえず備忘録として無印AmazonLinuxとAmazonLinux2での導入手順のメモを残しておく。

以下注記。

  • Dockerfileで記す。
  • dockerでのみ必要でAMIから生成した場合は不要な記述もある。
  • Amazon Linux 2のタイムゾーン設定は未調査なのでこのままだとダメかも。
  • 無印Amazon Linuxで使っていたintoli提供のchromeRPMは2017/12/29現在なくなってるかも。
  • PHP7でアプリを作ってる想定。
  • MITM ProxyはPython2.7で動かす想定。

無印Amazon Linux (2017.09以前)の場合

FROM amazonlinux:2017.09

# タイムゾーン
RUN echo 'ZONE="Asia/Tokyo"' > /etc/sysconfig/clock && \
    echo 'UTC=false' >> /etc/sysconfig/clock && \
    ln -snf /usr/share/zoneinfo/Japan /etc/localtime

# remi
RUN yum -y install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

# 日本語の画面キャプチャをするためにIPAフォント、AWS CLIのレスポンス加工したいときのためにjq
RUN yum -y install jq ipa-gothic-fonts ipa-mincho-fonts

# アプリケーション用のユーザとグループとログ出力場所
RUN yum -y install shadow-utils && \
    groupadd -g 800 appuser && \
    useradd -u 800 -g appuser -s /sbin/nologin appuser && \
    mkdir /var/log/appuser && \
    chown appuser:appuser /var/log/appuser

# PHP7
RUN yum -y install https://mirror.webtatic.com/yum/el6/latest.rpm && \
    yum -y install php70w php70w-cli php70w-common php70w-devel php70w-fpm php70w-gd php70w-mbstring php70w-mcrypt php70w-mysqlnd php70w-opcache php70w-pdo php70w-pear php70w-xml php70w-pecl-redis php70w-pecl-imagick php70w-intl && \
    yum -y install re2c gcc gcc-c++ libuuid-devel

# composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# selenium-server-standalone用Java
RUN yum -y install java-1.8.0-openjdk

# selenium系
# docker imageにunzipなかったので入れておく
RUN yum -y install unzip
# chrome driver
RUN curl -o /tmp/chromedriver.zip https://chromedriver.storage.googleapis.com/2.33/chromedriver_linux64.zip && unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/
# chrome(intoli提供のRPM。2017/12/29現在なくなってる?)
RUN yum -y install https://intoli.com/blog/installing-google-chrome-on-centos/google-chrome-stable-60.0.3112.113-1.x86_64.rpm
# selenium server
RUN curl -o /usr/local/lib/selenium-server-standalone-3.6.0.jar http://selenium-release.storage.googleapis.com/3.6/selenium-server-standalone-3.6.0.jar
# chrome libs (ConsoleKitとpolkitは相互依存してるので単一コマンドで入れる必要あり)
RUN yum -y install http://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/ORBit2-2.14.17-6.el6_8.x86_64.rpm && \
    yum -y install http://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/ConsoleKit-libs-0.4.1-6.el6.x86_64.rpm && \
    yum -y install http://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/eggdbus-0.6-3.el6.x86_64.rpm && \
    yum -y install http://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/ConsoleKit-0.4.1-6.el6.x86_64.rpm http://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/polkit-0.96-11.el6.x86_64.rpm && \
    yum -y install http://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/GConf2-2.28.0-7.el6.x86_64.rpm

# MITM Proxy
# chromedriverのバグで相手サーバのオレオレ証明書の検証をスキップできないのでMITM Proxyを相手サーバの検証をスキップするモードで動かし、chromedriverにはMITM Proxyの証明書を信頼させる形で回避。
# Chrome M65で新オプション導入されるのでそれまでMITM Proxyでしのぐ。
# https://bugs.chromium.org/p/chromium/issues/detail?id=721739
# 最新のMITM Proxyはpython3用なので2.7系なら0.18.2を明示して導入。
# docker imageにpipなかったので入れておく
RUN yum -y install python27-devel python27-pip
RUN yum -y install libxml2-devel libxslt-devel openssl-devel && \
    pip install "mitmproxy==0.18.2"

# php.iniや自分のアプリの起動、MITM Proxyの起動スクリプトはここでコピー
COPY etc/php.d/php.ini /etc/php.d/
COPY etc/init.d/selenium /etc/init.d/
COPY etc/init.d/mitmproxy /etc/init.d/
RUN chmod 755 /etc/init.d/selenium && \
    chmod 755 /etc/init.d/mitmproxy

# サービスの定期実行
RUN echo '*/10 * * * * /usr/bin/php -c /etc/php.ini /opt/apps/myapp/start.php >> /var/log/appuser/output.log 2>&1' >> /var/spool/cron/appuser && \
    chkconfig crond on && \
    chkconfig selenium on && \
    chkconfig mitmproxy on

Amazon Linux 2 (2017.12以降)の場合

FROM amazonlinux:2017.12

# タイムゾーン(無印からコピーしてきて未検証のままなので効いてないかも)
RUN echo 'ZONE="Asia/Tokyo"' > /etc/sysconfig/clock && \
    echo 'UTC=false' >> /etc/sysconfig/clock && \
    ln -snf /usr/share/zoneinfo/Japan /etc/localtime

# remi(無印だとepelが入ってたが2だと入ってないっぽい)
RUN yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
RUN yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# 日本語の画面キャプチャをするためにIPAフォント、AWS CLIのレスポンス加工したいときのためにjq
RUN yum -y install jq ipa-gothic-fonts ipa-mincho-fonts

# アプリケーション用のユーザとグループとログ出力場所
RUN yum -y install shadow-utils && \
    groupadd -g 800 appuser && \
    useradd -u 800 -g appuser -s /sbin/nologin appuser && \
    mkdir /var/log/appuser && \
    chown appuser:appuser /var/log/appuser

# PHP7
RUN yum -y install php70 php70-php-cli php70-php-common php70-php-devel php70-php-fpm php70-php-gd php70-php-mbstring php70-php-mcrypt php70-php-mysqlnd php70-php-opcache php70-php-pdo php70-php-pear php70-php-xml php70-php-pecl-redis php70-php-pecl-imagick php70-php-intl && \
    yum -y install re2c gcc gcc-c++ libuuid-devel

# composer
# デフォルトでphp70にパスが通ってないためenableスクリプトを実行してphpへのパスを通す
RUN source /opt/remi/php70/enable && \
    curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# selenium-server-standalone用Java
RUN yum -y install java-1.8.0-openjdk

# selenium系
# docker imageにunzipなかったので入れておく
RUN yum -y install unzip
# chrome driver
RUN curl -o /tmp/chromedriver.zip https://chromedriver.storage.googleapis.com/2.34/chromedriver_linux64.zip && unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/
# chrome(本当はファイルコピーがよいが手抜きでそのまま書いてしまった)
RUN echo '[google-chrome]' > /etc/yum.repos.d/google-chrome.repo && \
    echo 'name=google-chrome' >> /etc/yum.repos.d/google-chrome.repo && \
    echo 'baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch' >> /etc/yum.repos.d/google-chrome.repo && \
    echo 'enabled=1' >> /etc/yum.repos.d/google-chrome.repo && \
    echo 'gpgcheck=1' >> /etc/yum.repos.d/google-chrome.repo && \
    echo 'gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub' >> /etc/yum.repos.d/google-chrome.repo
RUN yum -y install google-chrome-stable
# selenium server
RUN curl -o /usr/local/lib/selenium-server-standalone-3.6.0.jar http://selenium-release.storage.googleapis.com/3.6/selenium-server-standalone-3.6.0.jar


# MITM Proxy
# chromedriverのバグで相手サーバのオレオレ証明書の検証をスキップできないのでMITM Proxyを相手サーバの検証をスキップするモードで動かし、chromedriverにはMITM Proxyの証明書を信頼させる形で回避。
# Chrome M65で新オプション導入されるのでそれまでMITM Proxyでしのぐ。
# https://bugs.chromium.org/p/chromium/issues/detail?id=721739
# 最新のMITM Proxyはpython3用なので2.7系なら0.18.2を明示して導入。
# docker imageにpipなかったので入れておく
RUN yum -y install python-devel python2-pip
RUN yum -y install libxml2-devel libxslt-devel openssl-devel && \
    pip install "mitmproxy==0.18.2"

# php.iniや自分のアプリの起動、MITM Proxyの起動スクリプトはここでコピー
# Amazon Linux 2はCentOS7同様systemdだが手抜きで無印と同じinit.dでやってる
COPY etc/php.d/php.ini /etc/opt/remi/php70/php.ini
COPY etc/init.d/selenium /etc/init.d/
COPY etc/init.d/mitmproxy /etc/init.d/
RUN chmod 755 /etc/init.d/selenium && \
    chmod 755 /etc/init.d/mitmproxy

# サービスの定期実行
# デフォルトでphp70にパスが通ってないためenableスクリプトを実行してphpへのパスを通す
# Amazon Linux 2はCentOS7同様systemdだが手抜きで無印と同じchkconfigでやってる
RUN echo '*/10 * * * * source /opt/remi/php70/enable && php /opt/apps/myapp/start.php >> /var/log/appuser/output.log 2>&1' >> /var/spool/cron/appuser && \
    chkconfig crond on && \
    chkconfig selenium on && \
    chkconfig mitmproxy on

MITM Proxyスクリプト

MITM Proxyは起動時に自身のキーペアを生成し公開鍵は「mitmproxy-ca-cert.pem」として出力する。

これを「/usr/share/pki/ca-trust-source/anchors」に格納して「update-ca-trust」コマンドを実行することでOS内で「mitmproxy-ca-cert.pem」が信頼できる証明書として登録される。

なお、MITM Proxyのキーペアは起動時に異なる内容で生成されるため、MITM Proxyインストール時に「/usr/share/pki/ca-trust-source/anchors」にコピーしてもダメ。必ず起動の度にOSにそれを信頼させる必要がある。

start_mitmproxy.sh
#!/bin/bash

# mitmproxy only for chromedriver bug.

export PATH=$PATH:/usr/local/bin

count=`ps -ef | grep [m]itmdump | wc -l`
if [ $count -ne 0 ]; then
  echo "mitmproxy (mitmdump) is already started. Nothing to do."
  exit 0
fi

nohup mitmdump -p 28080 --insecure > /dev/null 2>&1 &

# mitmproxy generate mitmproxy-ca-cert.pem in FIRST START TIME (not a time of installed).
sleep 3
cp ~/.mitmproxy/mitmproxy-ca-cert.pem /usr/share/pki/ca-trust-source/anchors
update-ca-trust enable
update-ca-trust extract
stop_mitmproxy.sh
#!/bin/bash

# mitmproxy only for chromedriver bug.

ps -ef | grep [m]itmdump |  awk '{ print "kill -9", $2 }' | sh

Selenium Serverのスクリプト

PHP任意アプリmyappはユーザappuserのcronで定期実行される想定(複数の並行実行あり)。

selenium-server-standaloneとMITM Proxyは立ち上げっぱなし。

selenium-server-standaloneを落とす際にmyappがひとつも動いていないことを確認する処理と落ちている間はmyapp起動cronを止める処理を入れている(myapp自身の中にも/tmp/stop-selenium-server有無のチェックあり)。

start_selenium_server.sh
#!/bin/bash

export PATH=$PATH:/usr/local/bin

# it is heavy logs
# -Dwebdriver.chrome.logfile=${CHROME_LOG}
# -Dwebdriver.chrome.verboseLogging=true
CHROME_LOG=/var/log/appuser/chromedriver.log-wor

SELENIUM_LOG=/var/log/appuser/selenium.log-wor
SELENIUM_SERVER_JAR=/usr/local/lib/selenium-server-standalone-3.6.0.jar

count=`ps -ef | grep ${SELENIUM_SERVER_JAR} | grep -v grep | wc -l`
if [ $count -ne 0 ]; then
  echo "Selenium Server is already started. Nothing to do."
  exit 0
fi

nohup java -Dwebdriver.chrome.logfile=${CHROME_LOG} -Dselenium.LOGGER=${SELENIUM_LOG} -Dselenium.LOGGER.level=WARNING -jar ${SELENIUM_SERVER_JAR} -enablePassThrough false > /dev/null 2>&1 &

echo "Remove the stop Selenium Server flag file."
rm -rf /tmp/stop-selenium-server

if [ -e /var/spool/cron/appuser ]; then
  echo "There is new appuser cron file. Remove old it."
  rm -rf /var/spool/cron/.appuser
else
  echo "Enable appuser cron."
  mv -i /var/spool/cron/{.,}appuser
fi
stop_selenium_server.sh
#!/bin/bash

echo "Disable appuser cron."
if [ -e /var/spool/cron/appuser ]; then
  mv -i /var/spool/cron/{,.}appuser
fi

echo "Create the stop Selenium Server flag file."
touch /tmp/stop-selenium-server

sleep 2

while :
do
  count=`ps -ef | grep php | grep [M]yapp | grep -v "/bin/sh -c " | wc -l`
  if [ $count = 0 ]; then
    break
  fi
  echo "There are processes of myapp count[${count}]. Wait..."
  sleep 5
done
echo "There is no process of myapp. OK."

ps -ef | grep [s]elenium-server-standalone |  awk '{ print "kill -9", $2 }' | sh
トラックバック - http://d.hatena.ne.jp/t_yamo/20171229

2017-10-23(Mon)

[]AWS上のWordPress常時SSL化に関するメモ 21:57 AWS上のWordPress常時SSL化に関するメモを含むブックマーク AWS上のWordPress常時SSL化に関するメモのブックマークコメント

WordPressを常時SSL化するにあたってELBやプロキシの裏にいてSSLの終端がWebサーバ本体でない場合は「X-Forwarded-Proto」が「https」か否かを見ましょうという話がある。まあ実際の所はWordPress関係ない話なのだけれど。

ただ、クライアント→(https)→CloudFront→(http)→ELB→(http)→Webサーバという構成でCloudFrontSSLを終端しているときに同じ事をやると、CloudFrontとhttpでお話ししてるELBは「X-Forwarded-Proto」を「http」にしてしまう。

と、いうことでそういうときのためにあるのが「CloudFront-Forwarded-Proto」であり、これは当然無関係のELBが干渉してくるものではないので、CloudFrontを最前面にたててその後ろが多段になっているケースでもクライアントとやりとりしているプロトコルが取れますよと。

CloudFront仕様にも書いてあることなのだけれどWordPressの常時SSL化に絡めた作業でうまくこの情報に辿り着かないケースがあるようなのでWordPressという単語を交えてメモしておくなど。

http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html#request-custom-headers-behavior

トラックバック - http://d.hatena.ne.jp/t_yamo/20171023
カレンダー
2004 | 01 | 05 | 06 | 07 | 11 |
2005 | 04 | 05 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 04 | 05 | 06 | 07 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 07 | 08 | 10 | 11 |
2008 | 02 | 04 | 06 | 09 | 10 | 11 | 12 |
2009 | 01 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 08 | 09 | 10 | 11 | 12 |
2011 | 02 | 05 | 06 | 07 | 09 | 10 | 12 |
2012 | 02 | 08 | 11 | 12 |
2013 | 04 | 05 | 08 | 09 | 12 |
2014 | 01 | 02 | 04 | 06 | 08 | 09 | 10 | 11 |
2015 | 01 | 03 | 05 | 07 | 08 | 09 | 11 | 12 |
2016 | 01 | 06 | 09 | 10 | 12 |
2017 | 08 | 10 | 12 |
2018 | 01 |