フリーランスのプログラマにはどの業種扱いで個人事業税がかかるのか

数年前から個人事業税取られてるんだけど、プログラマって個人事業税の対象にあたらないよね? 法定業種のうちに該当するのないよね? ってずっと思ってたんで、今回ちょっと調べてみた。

適当にググった感じだと、やれコンサルタント業にあたるだの、デザインやってるならデザイン業にあたるだのといった話があったが根拠に欠けて参考にならない。デザインやってないし、コンサルタントと言うのもだいぶ無理がある。そもそもコンサルタントにあたるとして、コンサルタントの定義ってどこの法律でされてるんだ? みたいのもあるし。

結論から言うと、「請負業」扱いで取られていた。県税事務所にも確認したので、俺のケースに関しては確定っぽい。

じっさいほぼ準委任でなく請負で仕事してるので、まあ「請負業」なのかなあと。

で、問題は根拠だ。

まず個人事業税自体だが、これは地方税法で定義されているようだ。

個人の事業税に係る課税標準及び税率等

ただしここでは課税対象者については書かれていない。事業税の通則の方にある。

3 個人の行う事業に対する事業税は、個人の行う第一種事業、第二種事業及び第三種事業に対し、所得を課税標準として事務所又は事業所所在の道府県において、その個人に課する。

第七十二条の二

そしてその下の方に、対象の事業についてのリストがあるのだが、ここにあるのが完全にリストだけなのである。ここでは、

十四 請負業

とだけしか書かれていない。請負業とはなにを指すのかが定義されていない。

いろいろ探したが、請負業の定義はなさそうである。一応ある程度近そうなのが、法人税法施行令の中の以下の部分だが、これだけでは有効とはいえないだろう。

十 請負業(事務処理の委託を受ける業を含む。)のうち次に掲げるもの以外のもの

http://elaws.e-gov.go.jp/search/elawsSearch/elaws_search/lsg0500/viewContents?lawId=340CO0000000097#179

請負業のうち、もなにも、請負業がなんなんだって話なのだが、どう調べても請負業の定義が出てこなかった。多分決まっていないのだろう。本当に適当な話だ。

PHPで変数のダンプはどの関数を使うのがよさそうか

メジャーなのだけでもvar_dump(), var_export(), print_r()などありどれ使えばよいか迷ったので、簡単にまとめてみた。

主にデバッグとログに吐くのが目的なんで、そういう視点で。オブジェクトもきっちりダンプしたいとかはないが、PHP上で扱える形式で吐いてくれるとデバッグ時にありがたい場合があるのでそこは入れた。

関数 データ型の表示 PHPコードとして出力 戻り値にできる 循環参照
var_dump() × ×
var_export() △※1 ×
print_r() × ×
debug_zval_dump() × ×
json_encode() × × △※2

※1 データ型は表示されない、とはいえPHPのコードとして出力されるため、実質的にデータ型はわかる。

※2 Warningが出るが、一応出力はできる。

感想

  • 戻り値にできないvar_dump()がとりあえずいらないかなあと。
  • var_export()は循環参照で死ぬの以外はいい感じなので、printデバッグ的なところと、循環参照がないとわかってるところのログなどほとんどのところではこれでいいかなと。
  • print_r()は循環参照あるかもしれないときには、これしかないかな。
  • debug_zval_dump()は今回初めて知ったけど使わなそう。
  • json_encode()はオプションいろいろ指定する面倒なければといったところ。でもPretty Printしなければ一行で表示されるのは、ログフォーマットによっては便利かも。

TridactylのNative Messengerとはなにか

なんだかんだでVim VixenではなくまだTridactyl使ってる。

今回はNative Messengerという機能について。日本語でまとまった情報がなかったので。とはいっても大してまとまってるわけではないか。最低限の情報を。

Native Messengerとはなにか

(多分)FirefoxNative messaging機能を使って、Tridactylに、WebExtensionだけでは実装できない機能を有効化させる*1もの。

どうやってインストールするのか

Tridactylのコマンドライン上で:installnativeするとインストールのためのコマンドがクリップボードにコピーされるので、それを実行する。

Python 3が入っているとスクリプトが、入っていないと(Windowsでは)実行ファイルがインストールされる模様。

インストール成功後に:nativeしてもエラーになる件

インストール後、最後に以下のようなメッセージが表示されるので指示通り:nativeしてみるも、俺の環境ではエラーが出た。

Run ':native' in Firefox to cross-check. :-)

原因はこれかも。とりあえず俺の環境下ではNative Messengerはまだ動いていないのでした……。

Native messenger can't be detected · Issue #544 · tridactyl/tridactyl · GitHub

追記: Native Messengerインストールできました

こっちが問題だったっぽい。リンク先コメントの実行ファイル使うと動作しました。細かいところの確認はできてないけど、とりあえず:restartなんかは動いた。

なお環境はWindowsです、一応。

デブサミ2018関西行ってきたのでセッションの感想など

ほんのり暇だった時期に、Twitterでフォローしてる人の登壇するよツイートで開催を知ったので、会場が市内ということもあり行ってみることに。参加を決めたときにはまさかまだ暇なままだとは思ってもいなかったが……仕事ー。

セッションの感想

【C-1】Mackerelの200週連続リリースの舞台裏とこれから

はてなの人によるMackerel(スペルが覚えられない)のリリース関係の話。なんだけど、それよりもはてな開発プロセスのホワイトさに目が行った。

時間かけて実装する機能にかける時間が、週あたり2日分(丸1日+半日*2)という話がなんとも興味深かった。

"マネージャーの最も大切な仕事 95%の人が見過ごす「小さな進捗」の力" って本に、進捗があることが生産性につながるから、マネージャーは管理対象の進捗をサポートすればいいよ、みたいなことが書かれてるんだけど、はてなはそれ自然にできてるっぽいなあ、とか。

毎週のリリース自体があきらかに目に見える「進捗」だし。

【B-2】B2Bクラウドサービスをゼロから立ち上げて、利用社数が1000社を超えるまでの道のり(仮)

Re:lation という問い合わせ管理ツールの立ち上げの話。

「利用社数が1000社を超えるまでの道のり」ってあたりを聞きたかったんだが残念ながらその辺の、なんというかグロースハック? 的な話はかなり薄めだった。

話の内容よりもこのサービス自体の方がちょっと気になってたり。

【A-3】今日から始める機械学習はてなの事例〜

意図せずまたはてな機械学習っていっても簡単なのもあるんだよー、的な話。よく考えると俺も簡単なクラスタリングをライブラリ使って仕事で使うくらいはしたことあった。

データの質とか>アルゴリズムとかあたりの話も興味深かった。あとKaggleとか。

【B-4】意外と知らない?!GitHubの新機能を紹介します

GitHub...に限らずGitHub Enterpriseとかなんかクラウドのやつ(名前忘れた)とかも含めた新機能とかの話。

知っておきたいところは大体知ってたし、ちょっと自分の求める方向性と違ってた。

【B-5】農家と流通業者のタッチポイントにLINE Botを導入した話

途中まで気付かなかったんだけどこれと次の話の2セッションを1つの枠でやる、ということだった。

会話にしてコミュニケーションしやすく、からでもこの場合はフォームの方がけっきょくやりやすい、という流れは面白かった。

最近アナログな業種でも、代替わりとかによってデジタル化~、的な話が割とあってその辺に近い話かなあと思ってたが微妙に違った。

【B-5】新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -

Node-REDというNode.jsベースの、IoT向け? のビジュアルプログラミング環境の話。面白かったが、もうちょっと具体的な事例が欲しかったかな。割とどのセッションでもそうだけど。

【B-6】東京本社よりも地方開発拠点を活性化させるコツ!!!!

リアルタイムでツイートしたけど、SansanもEightもさっぱり知らなかった、が、割と使われてるのな。会場で使ってる人挙手したときに3分の1弱くらいいたんじゃなかろうか。

話の内容としては、これもまた働き方に向いた話。

こういう話楽しいけど、最近は聞いてると、一人で働くのも限界あるかなー、みたいなことばかり考えてしまう。

かといって、普通の会社勤めとか今更できる自信もなく。

【B-7】勝てる「開発プロセス」の作り方 ―そのプロジェクト計画、本当に成功を確信して書いていますか?

プロジェクトを成功させるために、開発の状況を実現性トライアングルにあてはめて、適切なバランスで進んでいるかを測る、的な話。

内容もさることながら話もうまいし、いいセッションだった。のだが、この時間になるとだいぶ疲労が溜まっておりあまりちゃんと話を聞けなかった。残念……。

セッション以外の感想

企業主催ということもあってか、スーツ姿の人多くてびっくり。メモ取ってるっぽい人が多い反面、Twitterにつぶやいてる人は少ないっぽいなあとか。

参加者多くてびっくり。男子トイレばかりこんなに混んでるイベント初めて見た。懇親会で実行委員の人が言ってたけど、次は会場変わるかも、ってのもまあそうだよなあ、という感じ。

NoScriptのFirefox Quantum版で一度XSS Warningの設定をやり直す方法

Quantum版のNoScriptはまだ開発途中なのか、XSSの可能性のあるリクエストをブロックした場合に、常時ブロックしたりあるいは許可した場合のリストを編集する方法がないっぽい。

f:id:xxmagai:20180925142516p:plain

大抵は困らないが、間違ってブロックしたくないものをブロックしてしまったりすると困る。

なんとかするには、

  1. 設定をエクスポートする。
  2. 設定はJSONなので修正する。
  3. 設定をインポートする。

で、具体的な修正内容だが、

  // 前略
  "xssUserChoices": {
    "https://blog.hatena.ne.jp>https://magai.hateblo.jp": "block"
  }
  // 後略

みたいな感じになっているので、これをallowにするなり、削除するなり。

ただ一点注意が必要なのは、xssUserChoicesキー自体を削除すると意味がないこと。NoScriptのインポート機能は、既存の連想配列を上書きするような形になっているのではないかと思われる。

だからたとえばぜんぶクリアしたい場合は、

  // 前略
  "xssUserChoices": {
  }
  // 後略

なりする。

Vimperatorの代替をVim VixenにすべきかTridactylにすべきか

2019-05-29追記

だいぶ前から、Tridactylにbindurlという機能が追加されて、これにより(部分的に挙動が怪しくはあるが)、ある程度feedSomeKeys相当の機能も使えるようになった。

Tridactylは挙動があちこち怪しくはあるのだが、それを差し引いてもVim VixenよりVimperatorに近い機能を実装できている感じはあり、個人的にはもうこちらだけ使っている。

2019-04-07追記

この記事書いてからどちらもいろいろ機能増えてるので、あまり参考にしないこと。バージョンアップに追従したいがなかなか時間が取れない。


この間Quantumでない最後のESRが死んだので、Vimperatorが完全に死にました。いやまあWaterfoxとかもあるけど、そもそもVimperator自体がだいぶ前から死に体だしと。

で、代替はVim Vixenかなあと思ってたんだけど、Tridactylってのもあると知ったので両方調べたり試してみたり。その結果を雑にまとめてみた。

結論から言うと現時点ではクイックマークを使えるという一点だけでもTridactylかなあ、でもどっちもつらいんで、まだ修正しやすそうなVim Vixenを、自力でなんとかするのがベターかな、といった感じ。

Vimperatorで使っていた機能=代替に欲しい機能

これきちんとリストアップしないと、うまく比較できないのでは、と思いリストアップ。

  • Vim風の操作
    • ページを開く操作。
      • :open(o, O), :tabopen(t, T), go, gn, gu, gU
        • :open系では、ブックマーク・履歴等からの総合的な検索(多分Firefoxのアドレスバー同等?)や、prefixによる各種検索。
      • f, Fはそこまで使ってなかった。
      • p, Pは誤爆多いので潰してた。
    • 履歴移動。
      • CTRL-O, CTRL-I
    • タブ操作。
      • gt, gT, d, u, :tabm[ove], :tabo[nly]
    • ページ内移動。
      • j, k, h, l, CTRL-D, CTRL-U, CTRL-F, CTRL-B, gg, G
      • m, `でのマーク移動もたまに使ったが、まあなくても。
    • ページ内検索。
      • /, n, N. ?はあまり使ってなかったと思うけどまあ/実装するなら?あるよね。
      • また検索履歴の呼び出し。
    • 入力コントロール内での操作。
      • i_CTRL-BをLeftにマップしたり、i_CTRL-FをRightにマップしたり、シェル風操作に。
    • 表示の操作。
      • zi, zI, zo, zO, zz
    • その他操作
      • i, INSによる一時的な機能の無効化。
      • :ec[ho]を電卓代わりにして計算とかもちょっと。
      • :res[tart]
  • その他
    • :styleによるページごとの細かなCSSの調整。
    • addUserCommandでちょっとしたスクリプト
  • プラグイン
    • feedSomeKeys
      • 一部サイトで一部キーをサイト側に流すようにして。またマップすることでサイト側のキー操作をカスタマイズする感じにしたりして。
    • copy.js
      • y, YでそれぞれURL, titleのコピーをできるように。

欲しい機能の、Vim Vixen, Tridactylそれぞれでの実装状況

機能 Vim Vixen Tridactyl
o, O, t, T △ (ブックマークからの検索ができず、候補の編集もできない)
M, go, gn ×
gu, gU
f, F
CTRL-O, CTRL-I ○ (デフォルトではマップされてない)
gt, gT
d, u
:tabm[ove] ×
:tabo[nly] ×
h, j, k, l
CTRL-D, CTRL-U, CTRL-F, CTRL-B
gg, G
m, ` × ×
/, n, N ○ (検索履歴を辿れない) × (Firefox自体のページ内検索が出るが、その挙動も不完全?)
i_*(フォームコントロール内のマッピング) × ○ (一応実装されているようだがWebExtensionsの問題か制限が多過ぎる)
zi, zo, zz
zI, zO × ×
i, INS × (<S-Esc>でアドオン丸ごとの無効化は可能)
:echo × × (コマンド自体は存在しているっぽいが出力されない)
:restart × ? (実装されているようだがNative Messenger? が必要とのこと)
:style × ×
addUserCommand × ×
プラグイン × ×
feedSomeKeys相当 × (ブラックリストでサイトごとのアドオン丸ごとの無効化は可能) ×
copy.js相当

その他の気になる点

  • Vim Vixen
  • Tridactyl
    • j, kの挙動がページによって怪しい気がする。
    • h, lで左右両端まで行くと、次にページトップに飛ぶような。
    • コマンドの省略ができないのが地味につらい。:tabmoveなら、:tabmで駄目とか。
    • gnXで、Xが未定義の場合にgnが無視されてXが通ってしまうのがちょっとアレ。

Kindle Paperwhite マンガモデルを一ヶ月くらい使ってみての追加の感想

買って一週間くらい? の感想はこちら。これの続きみたいな。

magai.hateblo.jp

よいところ

  • 専用ハードウェアなこともあって立ち上げがとにかく速い。
    • Kindleアプリ、少なくともAndroidのは立ち上げが異常に遅い(キャッシュ効いてないと分単位でかかる。割と最近に一回改善されて、その後また昔と大差なくなった)。これがいちばん便利なところかな。

よくないところ

  • ネットつないでないとマンガの次の巻がわからない。情報ローカルに持っとけないの?
  • カラーの本や雑誌を読むモチベーションがだいぶ下がる。
  • Kindleにロックインされまくる。買うちょっと前くらいに、マンガはeBookJapanも併用しようかなー、と思ってたのが台無しに。