Hatena::ブログ(Diary)

にがつうさぎ

2012-11-16

C言語とObj-C

小噺

世界の4大文明は、水と肥沃な大地がある大河流域に発生しています。

これらの文明は、農耕を基礎として、統治組織を持ちました。農作による富の蓄積、その富を使い灌漑工事を始めとする大規模土木工事による農地整備、再投資が生産を拡大する構造があります。大規模な土木工事には、強力な統治機構がなければ、実現できません。

いまどきの資本主義も、本質、構造として、同じものです。その構造は、大規模なものから小規模なものまで規模の大小はありますが、本質、同じです。そのなかで支配階層は他者を受け入れにくいです。求職活動をするときは、そのあたりを考慮していきましょう。

C言語、その歴史と意味

大昔、機械語で開発していました。それを超効率的に人間が理解しやすく書けるようにしたものが、C言語というプログラミング言語です。機械語に対して、高級言語と呼ばれたりします。

C言語を実行できる機械語に変換するソフトウェアを、コンパイラと呼びます。

C言語の概念は、広大なメモ帳と、計算機があり、その計算の実行順番と、メモ帳のどの場所にどのような値を書き残すかを指定していくことです。

C言語は、機械語で書けるものを、とても効率的に書くことができます。ですが、例えば、10文字分しか確保されていない文字配列に11文字を書き込んでしまい、隣接メモリ領域を”意図せずに”破壊できるなど、機械語での開発で生じるミスも、そのまま再現する可能性があります。

また膨大な数の関数をどう使うかを覚えておかないといけません。

オブジェクト指向

小学校で、1+1=2を林檎に例えて教えたと思います。ですが、1も+(足す)も数学体系で、林檎を数えるのは、その応用例似すぎません。目の前にあるもの、それまでの経験で、例えで教えることは、”わかったつもり”の状態にすることは容易いですが、”わかったつもり”でしかなく、20歳を超えたいまとなっては、そこに意味はありません。

オブジェクトを、林檎などに例えることはしません。

Objective-Cは、C言語を、オブジェクトという考えが使えるように拡張したものです。

”クラス”という概念があります。クラスは、変数とメソッドの宣言の塊です。変数は、プライペートなものとパブリックなものがあります。プライペートな変数は、クラス内部で処理をするためにだけ使うもので、外部から読み書きはできません。パブリックな変数は、クラスが外部に何かを知らせる、あるいは外部から動作を指定するために、そのクラスが外部に公開しているものです。

クラスをメモリに実体化したものを、インスタンスといいます。

MVCモデル

省略

Delegate(デリゲート)

省略

ノート

f:id:feb-hare:20121116095413j:image:w360

f:id:feb-hare:20121116095418j:image:w360

f:id:feb-hare:20121116095430j:image:w360

f:id:feb-hare:20121116095436j:image:w360


白板

f:id:feb-hare:20121114172852j:image:w360

f:id:feb-hare:20121115140544j:image:w360

f:id:feb-hare:20121115172911j:image:w360

f:id:feb-hare:20121115172926j:image:w360

プログラミングとデバッグ作業の基本

f:id:feb-hare:20121108170858j:image:w360

入力と出力がある

プログラムは、入力と出力があります。そしてその間に処理、があります。今回のカウンタは、ボタンを押すという操作が入力、数字の増減が処理、数値の変化とその表示反映が出力です。

時計のように、一定時間ごとに表示が変化するものは、一見すると入力がないように見えますが、”時間の経過”という入力があります。

プログラムは、かならず、入力と出力があります。何が入力か、どんな出力を得るかを、”明確に”把握してください。入力からどんな出力を得るかが把握できれば、その間にある”何か”が、”どうあるべきか”が、自ずと見えるでしょう。

処理はメソッドにまとめる(C言語では関数)

意味のある塊で、複数箇所で同じ処理をするものは、メソッドにまとめます。1つの処理の塊を、1つの塊として、名前をつけることは、とても重要なことです。

メソッドは、引数と処理と返値があります。

メソッドの利点は:

  • もしも同じ機能のコードをベタ書きしていたら
    • なにかを修正するとき、全てのベタ書き部分を、漏れなく修正しなければいけない。(これは、うっかりミスが入ります。不思議と、なぜか、必ず、ミスします。)
  • 読みやすい
    • 処理でメソッドを呼び出すので、処理に名前がついていて、テキストも1行に収まるので、読みやすい。

プログラムを作るときは

プログラムを書く前に、発想から実装に至る流れを、”日本語で”書いてください。それは、目標はなにか、その目標を達成する手段はなにか(手段がわからない場合は、どんな手段が使えそうかを予想する)を押さえてください。

日本語で表現できないものを、プログラミング言語で作れることは、ありません。かならず、日本語で明確に、書いてください。文章にするのが面倒な場合は、適切な図をつかって、口頭で日本語で説明ができるようにしてください。この時に、主語、目的語、動詞を省略しない、日本語で書くことを意識してください。

例えば:

  • 今回の発想、目的は、UFOを動かすことです。
    • OK、動かすことです。どう動かす?
  • それは、ランダムに動かすことです。
    • OK。それは瞬間移動するの?
  • 移動はなめらかにアニメーションで、徐々に加速して、停止地点の手前から減速して止まります。
    • OK。その移動速度はどれくらい?
  • ある1点からある1点まで、アニメーションで移動するのにかかる時間は0.5秒です。0.5秒後に次の移動が始まります。
    • OK。それなら、プログラミングできるよ。

NSTimer絡みの例外発生

Xcodeが今使っているコンパイラllvmは、コーディング中に、ソースコードをみて論理的に間違いあるいは間違いではないかと疑わしい箇所を指摘してくれます。

今回は、一定時間ごとにアニメーションを開始するために、NSTimerを使いました。NSTimerは、呼び出すインスタンスtargetとメソッドを指定します。そのメソッド指定を間違えると(引数をとるのに最後の":"を忘れていると)、インスタンスが呼び出すべきメソッドを実装していないと、例外が発生します。

このようなエラーは、ソースコードを見てもllvmには論理的に検出できないものです。実装時は、よく注意します。

今回はmain.mのmain関数で@try ~ @catchでNSExceptionを取り、スタック情報をNSLogで表示して、NSTimerが原因だと追いました。

このエラーは、アプリケーションを落とします。NSTimerはUIと同じNSRunLoopで実行されるため、NSTimerを生成した自分のコードから、随分違う場所で例外が発生します。このような、原因とエラー発生箇所(もしくは発生時間)がずれるタイプの不具合は、十分な知識がないと対処は難しいです。経験がないなら、他人のヘルプを求めましょう。

デバッグ

思ったとおりに動かないことを、バグがある、といいます。これを動くように修正することを、バグを消す意味で、デバッグといいます。

デバッグに入る前に、腹をくくってください

何度も繰り返しますが、デバッグは”作業”ですが、仕事かどうかは、怪しい場合があります。

肉体も精神も疲労する作業なので、仕事と誤解することがありますが、実作業者視点から成果物を生み出すマネージャ視点から、いちど全体を見渡してみてください。それは、成果物に、役立っていますか?

そして、1つのバグがあれば、100のバグがあると思え、とも言います。”動いているからいい”で1つのバグを解消したら、その作業が、新たなバグを生み出しているかもしれません。また、そのバグの周辺に99のバグが潜んだままかもしれません。

コードをよく読めば解消できるものかもしれません。

デバッグ作業でツールを使いステップ実行を繰り返し、徹夜の果てに、1つのバグを潰しただけならば、それはのこり99個のバグでも同じ分量の作業が必要です。

理想論ですが、開発の労力を増やさずに、デバッグ作業がゼロに等しくできる開発があれば、それは、しかし全て遠き理想郷ですね。

デバッグでみるもの
  • そこを実行しているか
  • その実行での数値や処理が正しいか
デバッグのフロー
  • 開発時の、こう考えて、こう作れば、こう動くはずだ、を再確認する
  • その確認に基づいて、思ったような動きをしていない部分の、コードを読み直す、またデバッグなどでその部分を特定する
  • その部分の動きを確認する、予想と照らしあわせて、差異を見つける
Xcodeのデバッグ機能

Xcodeは、デバッグ機能に、ブレークポイント、ステップオーバー、ステップイン、ステップアウトなどがあります。ブレークポイントには、ブレーク条件が設定できます。ある変数がある値のときにだけ、ブレークさせられます。

カウンターを作る

iOSの教科書のカウンターを作ってみます。Xcodeを1度使い、ツールの概要を理解することが目的です。

Xcodeの使い方

1次資料

編集を高速化してくれるキーバインド

MacはEmacsキーバインドの一部が使えます。ショートカット操作です。

すべてを覚える必要はありません。キーボードだけで、カーソル移動(上下左右、行末、行頭)、1文字削除、行末までの削除ができれば、十分です。その他の操作は、トラックパッドを使ってできればいいです。

ちょっと覚えておくと、Macでテキストを書く仕事が、効率よくできると思います。

資料の残し方

鉄則! ”かならず経験を記録に残すこと”業務日誌としてノートを書き残してください。必ず!

私は、3冊のノートを利用しています。日常の細々した記録を残す雑記帳、その雑記からまとめたレポートを書くノート、そして打ち合わせや仕事のタスクリストをまとめるノート、です。

自分が読みやすく、かつすぐに臆せず書くには、手書きで紙のノートが、私には適しています。

雑記帳は、どんな落書きでも、ガンガン書くためのノートです。コピー用紙など、雑紙に書き散らすと、あとでペラペラ見ることもなく、ゴミ箱に捨ててしまい、何日にどんなことを考えていたかの時間追跡もできません。

当たり前だと思わず、"雑記帳”を一度活用してみてください。

f:id:feb-hare:20121116222333j:image:w360

講義ノート

その1

f:id:feb-hare:20121116095333j:image:w360

その2

f:id:feb-hare:20121116095345j:image:w360

iOS開発者向け講座その1~はじめるにあたり~

これは

2012年の岐阜県、スマートフォンアプリ開発関連人材育成事業でiOSアプリ開発の講師をしています。その講義で口頭で話した内容の概略メモです。

情報工学を受講したことがなく、C言語などは知らない方に、iOSアプリ開発に参加する上で知っておくべき、プログラミングの概念と技術の概要を伝えるのが、目的です。

このテキストは、講義を受けた方が、あとで内容を思い出すためのメモです。思い出すための糸口として概略をまとめています。

受講内容と想定している受講者

講義回数はは、1週間に2回、ほぼ1日の講義を、2ヶ月、全16回の予定です。

受講者は、C言語を知らない、またC++などで開発経験があるなど、スキルはさまざまな、経歴もさまざまです。

ぶっちゃけゼロから作れる開発者になるのは困難だと思っています

iPhoneの登場初期のような、真っ白な画面を表示するだけのアプリが”照明アプリ”として何十万ダウンロードを達成する時代は、大昔に終わっています。

iOSが出てから5年ほどですが、iOSアプリを企業また個人で作っている人の中には、10歳からプログラミングをしている人が、ゴロゴロいます。

そのなかで仕事としてiOSに関わるならば、たった数十時間で開発者になれる、という言葉の内容と意味を、自分が今まで受けた教育や蓄積した経験をもとに、考えてください。

私は、開発者になるのは困難だと思っています。無理だと言ってもいいでしょう。

しかし、iOSアプリの価値は、気持ちいい絵と音楽とユーザインタフェースです。純粋な開発者はそれを支える縁の下の力持ちです。この状況は、Windowsのような業務アプリとは全く違い、おそらくは、ゲーム開発会社に近いでしょう。その世界では、開発者の仕事が理解できて、アニメーションのパラメータ設定であれば自分で”コードを触れる”ことには、意味があります。

自分にとっての、iOSの知識と経験の活用を考えてください。また、自分が10時間でできることは、他人も10時間でできます。しかし、5年前に10時間でやったことをもとに、5年間の経験と蓄積を重ねているならば、その5年間はだれがやっても5年間かかります。その意味で、知識と経験の活用を、考えてください。

達成目標

習熟の目標設定は、

  • Obj-Cの言語仕様が”だいたい”わかる
  • サンプルコードをいじり(アニメーションの動きなどを変化させる)、そのいじった内容を論理的に他人に説明できる。

です。

テキストと資料

このほか、Appleの開発者サイトhttps://developer.apple.com/devcenter/ios/index.actionには、ドキュメントおよびフォーラムがあります。

”プログラミング”の経験がある方は、”動くからいい”、を捨ててください

ProcessingやArduino、MAXなど、何かしらの動作制御やデータ処理をコンピュータでした経験があるならば、それはプログラミングの経験と呼べます。

この講座を受ける方は、”動くからいい”、”動けばいい”、という考えを捨ててください。

  • 考えて作らない
  • 経験を蓄積しない
  • 非効率な開発をする
考えて作らない

コードを書いたなら、それが当たり前に動くから、プロとしてやっていけます。それは、目の前で動くのみならず、仕様の範囲での”ありとあらゆる状況”で動くもので、あるはずです。

しかし自分の想定と違って、思ったように動いていない場合は、よくあります。

その場合は、

  • 開発時の、こう考えて、こう作れば、こう動くはずだ、を再確認する
  • その確認に基づいて、思ったような動きをしていない部分の、コードを読み直す、またデバッグなどでその部分を特定する
  • その部分の動きを確認する、予想と照らしあわせて、差異を見つける

手順を取ります。そして、修正します。

”動くからいい”と考える場合は、このフローが身につかない人が多いと、私は思っています。

経験を蓄積しない

動かない場合も、上記のフローを通して、なぜ動かなかったかを、知識として整理して、それが発生する状況を把握して、はじめて経験となります。

非効率な開発をする

iOSの開発に使うXcodeは、ステップ実行、ブレークポイントなど、アプリケーションの実行状態を直接確認できるデバッグ機能があります。

アプリケーションを1行づつ実行して、値の変化を追って、”動くようにした”という方がいるかもしれません。おそらく、それは、とても時間のかかる作業だったでしょう。

しかしそれは”作業”です。開発者に徹夜をして欲しいと思う人は、誰もいません。徹夜の回数を誇られても、残業代がかさんだなとか、トラブルメーカーになりそうだから、次の仕事ではこいつは外しておこうと、思うだけです。

もしも最初から、上記フローを使い、また経験を活用して、原因箇所を限定すれば、コードをよく読みなおすだけで、修正できたかもしれません。

動くものを作ることが仕事です。その結果に至るまでの、最も楽ができる、最も効率的な開発手法を、自分以外の人でも使える汎用なフローとして、身につけてください。

”プログラミング”をするまえに

概念を理解してください

概念はとても大切です。

  • それは、どんな概念か、
  • 歴史的な変遷もふくめて、どこから、どうして、その概念が生まれたのか、またそれが、こうして教え継がれる価値はなにか、

を吸収してください。

実作業の前準備が仕事の8割を決めます

目の前にある作業、コードを書くとか、Xcodeで何か作業をするとか、は肉体的な充実感があり、仕事をした気になります。

ですが、実作業をする前に、このクラス設計は正しいか、自分がこれから書こうとしているコードは、どこでどうつかわれるかを、理解しているか、”わかっているか”をチェックしてください。

英語は必要です

英文を読むことにアレルギーがあるなら、それを克服するか、この仕事は諦めてください。

ここでの”英語が必要”は、文章を読み開発に必要な情報を自分で吸収できること、です。

  • 英語構文の知識は、中学3年で十分です。
  • 技術用語およびわからない単語は、都度調べて覚えてください。
  • プログラミングガイドのような、長文を読むときは、文章の構造を利用して、短時間に無駄なく、どの詳細の階層を読んでいるかを意識すると楽ができます。
    • 英語は重要な情報が頭にくる、そして詳細が後ろに続く言語です。
    • タイトルと見出しは内容を濃縮した情報です。じっくり読んで全体を把握します。
    • タイトルに続く”概要”は、だれにむけて、どんな情報を、どう書いているのか、それを読むと何が得られるのか、をまとめています。読むべきか否かを判断するのに十二分の情報がここに含まれています。
    • 段落は、先頭の1行がその段落の内容を表しています。1行を読むのも時間が惜しい時は、接続詞と主語と助動詞(must, may, shall, そしてnotの有無)そして動詞を見ます。
独学はよいのですが独善になっていないか気をつけましょう

プログラミング言語ソースコードを書くときの、変数や関数の命名、また設計パターンは、何十年の先人が経験を蓄積してきた、定番の方法があります。独学はよいのですが、この点で、独善にならないように気をつけましょう。

プログラムのソースコードは、必要な機能をプログラミング言語で人間が読んでも分かりやすく表現する活動です。ソースコードで、他人が読みにくい”おりじなりてぃー(笑)”あふれるソースコードは、害悪です。もしも私がマネージャをしているなら、そのようなメンバーは即時はずします。それは、”開発後期”になって、原因が分かりにくい不具合を混入させる、その人のソースコードが読みにくい場合は他のメンバーにゼロから書きなおさせることになると、経験が告げるからです。

独善にならないよい方法は、

  • 事前にコーディング規則に目を通すこと、
  • 開発チームで良いコードを書くと言われている方のソースコードをよく読むこと、
  • チーム内でレビューを重ねてお互いにわかりやすいか、悪い意味で属人性の強い書き方になっていないかを指摘をもらうこと、

です。

1次資料、2次資料、3次資料を使い分けましょう

ここでは、

  • 1次情報:Appleが公式に出している情報およびAppleが運営するサイト
  • 2次:の情報が1次、著作物を残したりStackOverflowで評価が高い開発者の回答
  • 3次:その他のGoogleなどの検索で出てきた情報

とします。

1次資料は、例えばフレームワークの全体から詳細までを網羅した情報です。何かを開発するとき、”わかったつもり”にならず、公開されている1次情報の読むべき該当情報は、ひと通り目を通します。

開発をしていると、”個別の”、うまくいかないことや、どう作ればいいのかわからないこと、にぶつかります。そのような個別の情報は、Appleの1次ドキュメントから読み取ることは、大変です。そんなときは、Q&AサイトやGoogle検索を使います。

StackOverflowは回答の質を評価し、評価が高い回答が上位に表示されていて、役に立ちます。Google検索は site:http://stackoverflow.com と検索対象サイトを限定するのもよいでしょう。

Google検索で漠然と検索するときは、時間の使いすぎに注意します。検索1ページ目に回答そのもののページが見つからない場合は、検索ワードを変えるなどしましょう。もしも、検索結果ページに目を通しだしたら、脱線も含めて、回答が得られるまで3時間かかること、つまり今日の仕事の半分の時間はそれに通夜してしまうことを、を覚悟してからにしましょう。

検索の前に自分の状態を把握しましょう

2次、3次情報を探すときは、自分の状態を確認してからにします:

  • エラー発生箇所もエラーメッセージも分からない
    • 検索以前に自分が何をしているかが把握できていません。自分の能力を超えている仕事です。自分にはできないかもしれないと悟り、他の方と相談するなり、他の手段を考えましょう。
  • エラー発生箇所とエラーメッセージを読み取ったが、内容が理解できない
    • エラーメッセージは、同様の事例検索の強力なキーワードです。望むらくはそのエラーメッセージが、あまりにありきたりで、ありふれていて、数多くの様々な原因が、そのエラーメッセージを出さないものであることを、祈りましょう。
  • エラーの発生条件やエラーメッセージが把握できていて、SDKのバグではないか?など、自分なりに原因推定がついている、
    • 裏付けがほしい、程度で情報を検索するレベルです。おそらく1時間もかからずに、解決できるでしょう。

2012-06-29

iPhoneのカメラシャッターを外部から切る

iPhoneのカメラシャッターを外部から切るには、有線ならイヤホン端子を、無線ならBluetoothを利用します。どちらも、音量+の操作をすると、標準カメラアプリはシャッターが切れるのを利用します。

有線なら、マイク端子とGND間を短絡すると、音量+になります。標準のマイクイヤホンの音量ボタンでも、長さがほしいなら、プラグをばらしてコードを延ばしてその先に簡単にスイッチをつければいいです。

無線なら、Bluetoothのキーボードを利用します。音量+のキーコードは知らないので、MacのBTキーボードを接続して、音量+キーを押せばいいです。

HIDデバイスになるBluetoothアクセサリで、音量+相当のキーコードを送信するガジェットなら、iPhone標準カメラでシャッターが切れます。3000円位で売られているので、その利用も楽ですね。微速度撮影などにも。

2012-05-29

わふわふツイッター日記〜創業編〜

法人を作ってみる

個人事業主として、わふわふツイッター日記〜起業編〜 - にがつうさぎわふわふ個人規模事業と法人化 - にがつうさぎのように、3年間やってきたのですが、この先10年20年を考えると、自分が動かなければ何も動かない個人という立ち位置は、事業としてはやりにくいかなと思えてきました。

アイディアに比重が大きい開発などの属人性が強いものは今後も個人事業主としてやっていくとして、そのライセンス販売や商標などの権利の管理と運用は、個人とは切り離した存在、法人、でやっていきたいと思いました。

そこで、法人を作ってみることにしました。

法人のメリットは:

  • 所得が1000万円程度を超えるなら、必要経費と課税金額が、個人よりも小さい
  • 社会の扱いでも法律のうえでも、個人と事業を分離できる
  • 個人は無限責任だが、(株式もしくは合同なら)法人は有限責任

個人事業主が法人を作ることを、法人成りといいます。事業所得が1000万円ほどになると、個人よりも法人のほうが税金が安くで済むようになるので、個人で稼げる人は節税目的で法人を作る事が多いそうで、それを将棋の駒に例えて法人成りと呼びます。

法人は、法律では、ふつうの生きている人、自然人と同格の存在です。憲法の生存権や選挙権はないですが、財産を所有し、労働をして、納税をする存在です。将来、人格をもつ人工知能と人間のような外観のロボットが実用になったとき、ロボットそれぞれが法人格をもつだろうなと思っています。

法律上は、法人は自然人と同格の存在ですから、そこに集めたお金をそこに持たせて、そのお金で、人を組織し、物を動かして、何かしらの価値を生み出す器として使えるわけです。Fate stay nightでいう、万能の願望を叶える器として、利用できるわけです。

法人の詳細は、国ごとの法律で異なります。日本に、平成17年に改定された会社法で、株式、合同、合資、合名会社の4種類が述べられています。このうち株式と合同の2つは、もしも会社が解散したり借金をしても、出資をした社員は、出資金以上の責任を負わない有限責任です。個人事業主は無限責任です。負うべきリスクが出資金として明確に見えるのは、法人の大きな利点でしょう。

また、ハードウェアを製造販売しようとすると、PL法は避けて通れません。そしてPL法に対応して万が一の場合に備えて保険をかけようとすると、個人ではできず、法人格が必要になります。このように、どうしても法人格が必要になる場面もあるので、このような利点もあります。

株式会社と合同会社

平成17年の改定により、一人でも株式会社が設立できるようになりました。また資本金の最低額が撤廃されたので資本金1円でも会社を設立できます。

株式会社は、会社の所有(資本)と経営を分離して運用される会社です。会社の価値を、株、という小口の証券にして、そして集めた資本を経営者が運用して余剰利益を配当していくのが、株式会社です。会社の価値が株という形で小口化してあるので、外部から資本を入れて事業を大きくしていくのに向いています。この運用のための様々な工夫が、機関の設計や、株式の種類などとして、会社法に規定されています。

合同会社は、この資本と経営が分離されていない会社です。社員はそれぞれ資本を持ち寄り、合同で事業をすすめます。また経営の進め方や利益配分などのルールを、自由に設計できます。ですから、外部から資本を集める必要がない場合、また、お金はないけれど知恵や腕がある人と、対等の利益配分率で事業をすすめる場合など、株式会社の形でやる必要がない、またはやりにくい事業が、合同会社としての運用が適しています。ですが、成長すると、ほぼ間違いなく、もめるか、株式会社にするかするでしょうが。

設立の時点あるいは設立してから、資金を出すだけの人(もしくは法人)が出てくると思うなら、最初から株式会社で設立するのが、よいでしょう。

個人で規模の拡大をしないのであれば、合同会社でいいでしょう。会社は、合同会社を株式会社にしたり、逆に株式会社を合同会社にする組織変更ができます。まずは合同会社で創立して、めどが付いたら株式会社にしても、いいかもしれません。

登記の実際、いかに家から出ないか

ここでは、実際に合同会社を作るまでの手順を紹介します。テーマは、いかに家から外に出ないか、を目的とします。会社登記は、自分でやるか、他人の申請を代理できる資格である司法書士や弁護士の方に依頼するか、のいずれかです。法律の知識が必要で、また登記は1度やればそう滅多とするものではないので、専門家に依頼するのが、時間と費用でメリットがあります。

特におすすめなのは、会社設立ひとりでできるもんです。ここは、法律の知識がない人では対応が難しい書類作成と申請手順の一部分を定額かつとても安価に提供しています。また、申請手順もウェブで丁寧に説明されています。合同会社の事務手数料は1万円です。以下の手順を自分でやると、1週間はかかりますから、自分でやることが楽しい、あるいは挑戦してみたい人以外は、ここを使うほうがメリットがあるでしょう。

このサイトは、登記の書類をオンラインで作成して、その書類をユーザがプリントアウトして窓口に提出する手順を踏みます。登記の書類は、必要な項目をウェブで埋めていけば、テンプレートに流しこみ生成されます。あとは、行政書士が電子署名をした印紙代がかからない電子定款と、印刷して提出するだけの書類一式の電子ファイルが入手できるので、それを窓口に持っていくだけです。また、設立後は、税務、労務それぞれの専門家が必要ですが、それも紹介してくれるので、すぐに事業を始めたい場合には、よいと思います。

自分で登記をするコストの利点

自分で登記をすれば、行政書士の方に支払う費用が不要で安いのですが、法律に従った書類を準備するための学習時間と電子署名をする準備とその署名の手間を考えると、先ほどのオンラインのサービス等を利用したほうが、よいでしょう。会社設立ひとりでできるもんなら1万円、街の行政書士に依頼しても、5万円かその程度です。

ここでは、登記にかかる費用を簡単に説明します。まず、定款、にかかる費用があります。

株式会社の定款は、会社法により、定款を公証人に承認してもらわなくてはなりません。この費用は5万円です7-4 定款認証 | 日本公証人連合会。また定款を紙文書にした場合は、e-GovSearch別表1の4万円の印紙が必要です。定款を電子ファイルにしたときは、この印紙は不要です。

公証人役場で定款の認証をうけるときは、必ず対面で本人であることを確認してから、渡すことが、決められています。これは、紙書類でも電子ファイルでも、同じです。電子ファイルで定款を提出するときは、まず定款を作成して、それに電子認証局が発行する鍵で電子署名をして、公証人役場に提出します。この”電子認証局”の鍵は、いわゆる住基カード公的個人認証サービスとは別のものです。民間業者から鍵を発行してもらうと2年間有効なものが費用1.5万円かかります。(訂正:2012年11月15日。公的個人認証サービスの電子署名で、受け付けてもらえるそうです。)

そして、公証人役場への電子ファイル送付は、法務局の登記ねっとのソフトを使い、オンライン申請できます。ですが、先ほどのように対面で本人と確認してから手渡すため、電子ファイルを提出した後に、公証人役場に電話連絡をして、その日時や手順を相談して決めなければなりません。そして、電子認証局で電子署名した定款を公証人役場に送付した後、リアルに窓口にいくと、公証人役場で認証した定款の電子ファイルを、フロッピーディスクもしくはCD-R(公証人役場によってはDVD-Rは受け付けないところもあるみたいです。まさかと思うようなことですが、使える媒体は電話した時に確認しておくほうがいいです)に入れてもらって、受け取り完了です。

株式会社の定款は、このような手間がかかるのと、行政書士が持っている電子署名が必要なので、定款作成とセットで依頼したほうが楽です。

ネットの定款作成で、やたら費用がかかるようにいっているのは、1)電子署名にかかるソフトや鍵の費用、2)印紙代、をごちゃまぜで言っているようです。まず電子署名はAdobe Acrobatをつかうほかありません (法務局が出しているプラグインがAdobe Acrobat対応のプラグインなので)。これが5万円ほどです。そして、一般人が電子認証局の鍵を買うと、2年有効なものしかなく、これが1.5万円です。あわせて、6.5万円します。また印紙税は、紙書類であれば必要ですが、電子署名にすれば不要です。

ですから、一般人であれば、紙で出せば4万円、電子署名なら6.5万円(+ソフト設定の手間)のいずれかの選択になるが、行政書士に依頼すれば、電子署名は日常業務でやっているので、電子定款を作り、それで浮いた印紙代4万円くらいを、手間賃でもらいます、という感じです。会社設立ひとりでできるもんだと、その電子署名の手間賃が5000円なので、定款を受け取る側からすれば署名自体に意味はない、仕組みでしか無いので、それでいいだろうと思いますが。

ですから、株式会社は定款作成と認証に、5万円+定款作成と電子署名費用(5000円〜)が必要です。

合同会社は、定款の認証が必要ありません。ですから、この認証費用5万円は不要です。また、法務局に登記ねっとで自分でオンライン申請する場合は、定款の電子署名を自分の住基カードの公的個人認証サービスでかけることで、定款の電子署名のコストも必要ありません。Adobe Acrobatは、インストールしてから1ヶ月はお試し期間で使えるので、登記の期間がそれを超える場合は、購入のための費用が必要ですが。

ですから、合同会社は定款作成は、0円です。

登記の残りのコストは、登記の必要書類の作成手間賃、そして登録免許税です。登録免許税は、株式会社で15万円(あるいは資本金の0.7%のいずれか大きい方)、合同会社で6万円(もしくは資本金の0.7%)です。登記ねっとでオンライン申請する場合、平成25年度まで、3000円減じる特例処置があります no title

これらの合計が、登記のコストです。株式会社なら、定款と書類作成で手間賃1万円+電子署名0.5万円+認証5万円+登録税15万円で、21万円くらい。合同会社なら、定款作成手間賃1万円+登録税6万円で7万円くらいです。

登記と維持費

法人を作った後の維持費は、税金と、事務手数料です。税金は、個人事業主と同じく、所得に対する課税、消費税、住民税、があります。個人事業主では、赤字の場合は住民税は免除されますが、法人は赤字でも7万円の住民税が発生します。

事務手数料には、税理士報酬があります。個人事業主の延長の規模であれば、毎月1.5〜3万円程度、決算は月料金の3倍程度が目安です。年間30万円ほどでしょう。

もしも普通自動車を所有していれば、その年間維持費用は(重量税5+保険5+車検10/2+車両本体償却150/10)=30万円、ですから、自動車1台持っていると思えば、いいでしょう。

登記の流れ

ここでは、法務局の登記ねっと、を利用してオンライン申請をします。必要な手順は、1)登記の書類を作る、2)オンラインで申請する、の2点です。前者は、申請手段が、窓口かオンラインかにかかわらず、必要な手順です。後者は、申請の手順です。

はんこを作る

会社の実印を作っておきます。実印は、法的な契約に万能の威力を持つので、おいそれと人の目に晒すわけにはいきません。ですから、銀行口座のための銀行印、そして見積書などに押す角印も一緒に作っておきます。法人設立の3本セットとして、5000円から、1万円もしない程度で製作してもらえます。製作期間は1週間はかからないでしょう。私は、印章をメールで事前確認ができて、お安かった、はんこの森、を利用しました。

登記の書類を作る

説明がめんどくさいので、説明を端折ります。ググってテンプレを入手するなり、会社法なり解説本で勉強するなりして、以下の書類を作ります。書類の作成順序は、定款を作ってから、資本金を決定して、払い込む、流れなので、書類の日付がその順番になっている(同じ日でもいいが、前後しない)ことに注意します:

  • 定款
  • 資本金決定書
  • 代表者印の印鑑証明書
  • 払込証明書
  • 資本金の額の形状に関する証明書

まずは定款と、資本金決定書のファイルを作って日付を入れてPDFファイル化しておきます。そして、適当な通帳を空っぽにして、通帳にだれが振り込んだか、名前を残すために、そこに資本金を銀行振込します。

家から1回外に出る

翌日、通帳に振込が完了してから、市役所に行き以下の手順を行います:

  • 住基カードを作る、電子証明書を入れてもらう(手数料、1000円)
  • 印鑑証明書を取る
  • カードリーダを購入する
  • 通帳のコピーを取る
  • (印章のコピーを取る)

まず、住基カードのICチップに電子証明書を入れてもらいます。役場により、住基カードは、接触と非接触に対応したコンボ型か、接触のみのものか、いずれかです。住基カードの説明書に、カードのタイプは明記されています。そのカードのタイプに対応した、カードリーダを入手します。私の場合は、非接触も対応していたので、e-taxに使うかと思って買っておいた、手持ちの非接触ICカードリーダが使えました。SUICAカードが読める、ソニーとかの製品であれば、大抵使えるでしょう。

市役所に行ったついでに、個人の印鑑証明書を1通取得します。もしも印鑑登録をしていないなら、実印登録のための個人の印鑑を準備して、印鑑登録しておきます。

最後に、資本金の支払い証明のために通帳のコピーを、表紙、裏表紙、払込記録部分、の3枚を取ります。500円ほどで作ったもらえる残高証明書でもよいです。私は、コンビニの白黒コピーをとって、それを書類スキャナで取り込みました。セブンイレブンのコピー機なら、コピー機から直接メモリカードにPDFで保存するサービスがあります。もしも家に書類スキャナがない場合は、このサービスを利用します。価格は1枚30円です。またPDFファイルを保存するための、USBメモリを忘れず持っていきます。また、通帳は余白部分が多いと、自動で空白削除されかねないので、コピーはA4サイズ指定、かつA4の領域の真ん中に通帳をおいて、確実に通帳全体のコピーを取ります。

もしも書類スキャナがないなら、印章のコピーもとっておきます。

申請する

必要書類をPDFで作成しておきます。

定款だけは、電子署名します。法務局の登記ねっとから、PDF署名プラグインをダウンロードして、住基カードをリーダに設定してから、プラグインを設定します。署名時に印章の画像を入れられます。これは印章のPDFファイルを指定しておこないます。このプラグインだからか走りませんが、このPDFの印章は170mm角の領域に収まる前提らしく、私は印章を600dpiで取り込み、MacのiDrawでdpi指定してPDF出力して。170mm角に収まるようにしてPDF出力しました。べつに、印章を画像貼り付けしておき、その領域の上に電子署名をしておけば、目的は満たすと思いますが、あえてツールの使い方にこだわってみました。

あとは、登記ねっとのガイダンスどおりに、申請項目を埋めて、作成したPDFファイルを添付して、申請ボタンを押せばOKです。申請時点で、申請書および添付ファイルにたいして、住基カードの公的個人認証サービスの電子署名がされて、送信されます。

書類を送信してから、翌日から3営業日以内に、登録免許税を支払います。私は電子納付をしました。ジャパンネット銀行およびソニー銀行といった、ネット専業銀行は使えなかったので、ネットバンキングが使えるようにしてあった三井住友銀行の個人口座を利用しました。

家から2回目の外に出る(150円の差額で、出なくてもすむ)

申請と振込が完了したら、残るは個人の印鑑証明書と、法人の印鑑申請を、法務局に申請します。印鑑(改変)届書http://www.moj.go.jp/ONLINE/COMMERCE/11-2.htmlは、PDFを印刷、必要箇所を記入します。登記の個人の印鑑証明と併用するために、真ん中より下あたりのレ点(注意1のぶぶん)をチェックしておきます。

登記ねっとのソフトの、メニューの、アクションから、”書面により提出した添付情報の内訳表の印刷”でHTMLファイルを出力して、その項目リストのうち、印鑑証明だけを残して、後の項目を削除したものを作ります。これを印刷して、先ほどの印鑑届書と、個人の印鑑証明書を重ねて、左側をホッチキスで止めます。これを、法務局の管轄支部に郵送します。

印鑑証明書は信書に分類されるため、ヤマト運輸のメール便、もしくは宅配便は郵便法により利用できません http://www.soumu.go.jp/menu_kyotsuu/important/topics091210.html。郵送は、郵便局窓口から、(簡易)書留でだします。簡易書留の料金は、総量120円+書留料金300円で、420円です。レターパックだと、500円ですが、集荷してくれるので、家からでなくてもすみます。350円のレターパックライトだと、集荷をしてくれないので、窓口に行く必要があります。

家から外に出て郵便局窓口にいくなら、350円のレターパックライト、集荷を依頼するなら500円のレターパックを利用しましょう。

設立後の手続き

法人を設立したら、税務関係の届出、社会保険事務局に健康保険と厚生年金への加入の届出、もしも人を雇うなら労働基準監督署への届出、が必要です。

税務署関連は:

  • 法人設立届 (設立2ヶ月以内)
  • 青色申告の承認申請 (設立から3ヶ月経過した後か、事業年度終了日のいずれか早い方の前日)
  • 減価償却資産の償却方法の届出書 (第1期の確定申告の提出期限)
  • 棚卸資産の評価方法の届出書(第1期の確定申告の提出期限)
  • 給与支払い事務所の開設届出書 (支払事務所の設立から1ヶ月以内)
  • 源泉徴収の納期の特例の承認に関する申請書 (特例を受けようとする月の前月末まで)

の届出や申告があります。

このうち、法人設立届出をまずはします。

法人設立届出書をだす

法人設立届出書は、e-Taxでも出せると書いてありました。試しに試みると、e-Taxのウェブアプリでは申請項目がありません。e-Taxソフトで申請書類を送信できました。しかし、送信する権限がないと、メッセージで通知されました。公的個人認証サービスの電子署名では、通らないのかもしれません。

仕方ないので郵送しました。国税局のサイトから、PDFの申請書類を印刷して、必要書類を揃えて、所轄の税務署に提出すれば、よいだけです。必要な書類をどう書けばいいのかは、ネットで調べると、ひな形などの情報が出てきます。

法務局への郵送の時と同じく、これらの届出や申請書は信書に相当するので、クロネコヤマトメール便は使えません。普通郵便もしくはレターパックを利用します。

申請書のコピーと返信用封筒を同封して、コピーに受付印を押してもらって返信をくださいと一筆書いておくといいです。

この届出には、登記簿謄本が必要です。これは登記情報提供サービスを利用すると、オンラインで登記簿を取得できます。手数料は400円です。オンラインで受け付けるものは、これを利用すると便利です。

紙の登記簿謄本を入手する方法は、法務局窓口で紙の登記簿謄本を取得すると700円、予め登記ネットで登記簿の発行を申請してから窓口で受け取ると570円、郵送を依頼した場合は+送料、の費用になります。

2012-04-20

Adobe readerをアンインストールしたら、SafariでPDFが表示できなくなった

Adobe readerのアップデートで、SafariのPDF表示がデフォルトAdobe readerになりました。Adobe readerの設定で、ブラウザプラグインにするか/否かの、チェックボタンがありますが、なぜか、グレーアウトされて選択できません。

そこで、Adobe readerをアプリケーションから削除すると、今度は、SafariでPDFが表示できなくなりました。

対処方法は、ブラウザのプラグインも、削除することでした:

cd "/Library/Internet Plug-Ins"

sudo rm AdobePDFViewer*

JIS規格書を見るためだけにインストールしていましたが、他には使いません。次回からは仮想OS環境に閉じ込めようと思います。

2012-04-02

6月4日、合同会社リイン、はじまります

6月4日を設立日にして法人リインを作ろうと思っています。その経緯や今考えていることを書き留めます。

法人を作る目的は

世の中でフリーランスが法人を作ることを、法人成りと言います。法人成りをする目的は、一般には節税です。所得が800万円を超えるあたりから、個人所得への課税額よりも法人課税額のほうが、法人にかかる経費を入れても小さくなり利得が出てきます。個人での所得が800万円を超えるのは成功したフリーランスと呼べると思いますが、そのような人たちが法人を作る様を、法人成り、と読んでいます。

私の場合はそこまで所得が得られているわけではなく、節税目的ではありません。自分の生活と事業活動を明確に切り分けるのが大きな目的です。

というのは、自宅で独身でSOHOでフリーランスをしていると、もともとプログラミングや技術は好きなため、個人の好みとしての活動と仕事としての活動の区切りが精神的にも物理的にも曖昧で、24時間働いているような、24時間遊んでいるような気持ちになります。24時間働いていると感じると、その緊張感から精神も肉体も疲弊します。24時間遊んでいると感じると、収入が途絶えるのではないかと恐怖感で、やはり、精神も肉体も疲弊します。フリーランスという立ち位置だけで活動を継続することが、つらくなってきたのです。

そのため、区切りを作る複数の手段の1つとして、法人という器を作りそれを利用していこうと考えています。

社名を決める過程など

個人事業の屋号がリインフォース・ラボですが、これはTVアニメ 魔法少女リリカルなのは の登場人物からもらっています。リインも、リインフォース・ツヴァイクル曹長の名称を縮めて、いただきました。商号を、リインフォース・ツヴァイ、とすると、知的所有権としてあからさまに侵害しているので、リイン、としました。

英語の辞典でリインと引くと、馬の手綱、そこから意味が転じて制御や統制を意味する、rein、という単語があります。フリーランス時代に生み出した知的生産物を蓄積して、それら資本を制御していく統合制御の器として、いい名前だと思います。また元々の祝福の風rein-force のほかに 輪廻 rein-carnation という意味もあります。人を助ける手段となるべし、またもともと無限転生の機能を所有する魔導書さんですから、輪廻という概念への結びつきも、結構いい感じです。

これに加えてleanという単語があります。これは無駄のない、贅肉のない、貧相な、という削ぎ落したイメージの単語で、技術分野ではリーン開発という、無駄を省いた開発手法を指す用語として知られています。なるべく楽をするために、リーン、を目指そうという方向性も商号に含められそうです。英語発音ではreinとlean、この2つの単語は発音が異なりますが、カタカナ表記では”リイン”とすれば、すべての意味を統合した単語にできるのが、便利です。

設立日は6月4日です。リインフォース・ツヴァイの誕生日設定がわからないので、そのマスターであるはやてちゃんの誕生日にしておこうと思います。覚えやすさも、大切です。

現代の魔法使いのデバイスは法人かも

魔法少女リリカルなのはに登場した夜天の書ことリインフォースさんは、各地の優れた魔導師の技術を収集記録し、魔力を蓄積するストレージタイプのデバイスでした。現代の魔法使いことフリーランスにも、技術成果物および特許などの排他的な権利をもたせる主体として、および資本を蓄積する存在として、法人は必要かなと思っています。

法律では、普通の人を自然人とよび、これとは別に仮想的な人として法人を定義して、この人格に出資資金や財産を持たせることを認めています。ですから法律上人と認められるデバイスとして、リインフォースさん、リアルに作れるわけです。

法人の種類にもいくつかあり、会社法で決められる株式会社、合同会社、合名会社、合資会社。別の法律で決められる、技術研究組合、という組合形式もあります。それぞれ、資本を集めて事業をなすための、法人という仮想の人格の定義です。ただし、資本の出し方や運営方法、そして利益配分などの要求パターンにあわせて、法人の種類が発生します。

私の場合は、出資を募り規模拡大を目指すのに適した株式会社よりも、機関の設計が容易な合同会社がいいかなと思っています。

法人に権利や成果物をためていく

お仕事でいろいろな会社と絡んでいくと、技術成果物や権利が発生します。もしもそれが相手側にすべてもたれると、自分が開発した成果物に縛られて、他で同じ仕事をしたら訴えられる、なんて事態を招きます。もしもその技術が自分ができるものであったとしても、それは相手が持っている権利なので、どうしようもありません。このときに、相手の会社に個人として権利を持たせてくれ、と交渉しても、法人でなければ交渉のテーブルにつけません。なぜだか、私にはわからないのですが、なぜか法人のほうが個人より信用されるそうです。

従業員なら、問題はないでしょう。労働と資本の結合たる器の中で、すべての成果物を引き渡すことで、給与が上がるという利益を同じくするわけですから。しかしフリーランスでは、開発までのお付き合いで、その後の製造販売の利益を生み出す活動自体はノータッチ、利益を同じくしない状態になります。そこで権利でロックされると大変困るわけです。その場合は、ロイヤリティーをもらうとか、お互いの利益を考える必要があります。従業員なやり方では、付き合えないのです。

そのために、権利や成果物を蓄積するデバイスとして、法人を求めています。

ですがこの働き方、別に新しいわけではないです。例えば、名を上げた建築士がいる建築設計事務所は、個人の技量で仕事を引っ張ってきて、成果物として自分ブランドな建築物を設計し、それをスタッフも雇って遂行しているわけです。技術開発をそれと同じ形でまわそうとすると、成果物に付随した特許で、将来の仕事をロックされてはかなわないので、その対応が必要です。

この働き方、設計エンジニアでも当たり前になるかもしれません。

いま、試作に使うレーザ加工や3Dプリンタ、3D CADでの設計、量産の金型製作に組立など、ものすごい勢いで仕事が小口化、テンプレート化されて、少数から量産まで、オンラインで直ちに見積もりすぐに発注できる会社が、各業種でどんどん出てきています。そして、小口の仕事を大量に集めて流す会社は、設備の遊ぶ時間が極めて少なく一定品質でルーチン的に処理することで固定費を超える利益を出し、その利益が試作から生まれる特殊な案件に対応する体力となり、特殊な案件に対応していくなかで次のニーズへの対応が実務の中で自然と醸しだされて、どんどん強くなっていく正帰還がかかるわけです。そして、その協力なインフラ化したサービスが、初期費用0で利用できるわけです。もう自社リソースじゃないのだから、大企業じゃないとできないなんて、過去になりました。

こんな会社が各業界ごとにあ世界では、初期投資が極めて小さくなり、使った分だけの従量課金で運用ができます。自社組織で用意することがないため、自社のスケールが大きくなってもスケールメリットが生じません。このような組織では中の人が決定的に重要になります。になるのが、中の人。なにせ、ルーチン化された試作/分析/製造で出てきた結果がいいか悪いか評価する、次に取る行動を考える、意思決定するのは、中の人の仕事だから。ここは判断の主体が自分なのだから、変わりようがない。そうすると、いままではルーチンワーク的なエンジニアも社内に必要だったのが不要となり、そのかわり、エンジンを使い意思判断をして価値を生み出す人が必要になる。それって、経営者ですよね。

こんな世界だと、新卒者はまずどこかの”事務所”で下働き的に働き、数年で実力と経験、ノウハウをみにつけて、また自分も独立する(暖簾分け)のが、当たり前になるかも。昔からある、京セラのアメーバ経営など、経営の見える化ツールが、その時には道具として使えるかもしれないと思っています。

世界に提案する価値観

せっかく法人をつくるので、ソニーの設立趣意書の闊達なる工場、みたいな価値観を提案してみようと思います。

高度経済成長による物質的な豊かさの達成、その後につづく百貨店や宅配などの物理的な流通革命、そしてインターネットの情報流通革命ときました。今着ているのが、それらを通して蓄積した資材やノウハウを極端に大きくスケールメリットをきかせたインフラを小口化して提供する各種クラウドなサービス時代です。そんな初期資本0、知恵と勇気と行動力が、りりんりーんとなって儲けにつながる世界の価値観ってなんだろう?

話は横飛して、Visual ArtsのゲームブランドKeyにRewriteってゲームがあります。そのエンディングの1つに、生命力を価値基盤とした社会ってのが出てきます。その世界は、寒冷化などで人間文明の存続が難しい環境にあるのですが、人間の生命力を物理的な力に変えたりする技術が生まれることで、人間社会が維持できてる世界です。ブルトーザみたいな重機や自動車、そして気象制御まで、すべての動力源が”人間の生命力”。生命力を使うほど余寿命が短くなる、だから、生命力を使い社会に貢献する人は尊敬の対象となる、そんな社会。もちろん、生命力を使う技術は誰でも使えるものではなく、生まれながらの資質や訓練により初めて得られるものです。

これ、石油みたいに地面に埋まっているとか、そんなものじゃないところに価値基盤なのですね。後の世に生まれてくる人間の生命力自体が資源。そして自分が持っている生命力は生まれながらに量が決まっている。それをどう使うかは、自分が考えていかないといけない。

今の時代、会社に投資をしても、その中の人の価値観やセンスで、出てくるものが5桁も価値が違うものになることは、ざらにあります。iPhoneみたいに。それはなんだろう? 人、あるいは個に近いレベルの人間集団、が価値の源泉となる、決定的に価値を生み出す核がそこになっていく、のだろうと思います。そうすると、その人達の生きている時間を使いたい、そう思うと生命力が価値基準になると。その社会を動かすための価値換算に通貨は使われるでしょうが、本質、それは運用のための道具に過ぎないと。もしもその価値を生む人達が会社から抜けたら、その会社にどれほどの資産があっても、価値のない会社になると。ジョブスのいなくなったApple、みたいに。

そんな感じしてます。人が人として、本当に価値を生み出す核として、本質の価値を所有する、そんな価値観です。

合同会社リイン、はじまります。