iPhone6使ってOpenGL ES 3.0はじめてみました。OpenGLは本家OpenGL1.1触れて以来ですが、まるきり変わっていて結構とまどいますね。 iOSデストUIKit+CoreGraphics(QuartzCore)でも相応のパフォーマンスが出せることは確認しています。今回は、GLSLのシェーダというものを使ってみたい感じもあってOpenGL ESを試してみることにした次第です。

やりたいことはやっぱりテクスチャ

自分が使うのはまずは2Dなので、3D処理はひとまずスルーして2Dでテクスチャを貼れるようにしたいとおもいます。OpenGL ES2.0~(OpenGL3.3~)では旧来の固定パイプラインがなくなった結果、FrustumやPersepective、Orthoの処理を自力(Obj-C側 or シェーダ側)で用意する必要がでてきました。…といっても参考書もたくさん出ているのでそのサンプルコードを活用するのが良いかなと思います。また自分はまず2D利用が前提なので上記のあたりは気にせず、とりあえず平面描画されればいいので楽チンです。

ハマったところ(Obj-C)

Swift…

まずはSwiftで書くのがとても難儀だということ。キャストにつぐキャストで骨が折れたのでおとなしくObj-Cでつくってブリッジすることにしました。まぁMetal使えよってはなしですよね。はい、この後Metalもやりたいなと思っています。

どうやってシェーダとやりとりするの?

そもそもシェーダ自体が初めてだったので、通常のコードとシェーダの関係がようわからん…状況でした。
1. シェーダを書いたテキストを読み込む (各言語でchar*型バイト列で読み込む)
2. 読んだテキストをObj-C内でコンパイルする (glCreateShader, glCompileShader)
3. 「プログラム」という塊にシェーダを結びつけて保管 (glCreateProgram, glAttachShader, glLinkProgram)
4. 「プログラム」に「この値をこう渡すよ」と定義 (glGetAttribLocation, glEnableVertexAttrivArray, glVertexAttribPointer)
5. テクスチャを作って、これも「プログラム」に定義(glGenTexture, glBindTexture, glTexImage2D, glGetUniformLocation…)
5. 描画時に「プログラム」を選んで処理(glUseProgram, glBindVertexArray, glDrawArrays)

今のところ上のような理解。ちなみに値渡しにはUniformを利用する方法もあるので横に書いた変数は一例程度に。いずれサンプルコードをここに載せたいと思います。ちょっと今”クソース”状態なのでご容赦…

ハマったところ(GLSL Shader)

attribute修飾子の廃止, in/out修飾子の追加

ハマるというか方々にあるサンプルの意味がわからなかったところです(参考資料がES2.0がほとんどだったためです)。ES2.0までのシェーダではattribute修飾子をつけてプログラム側から値をもらってきたり、また別の修飾子を使って頂点シェーダ->フラグメントシェーダに値を渡したりしていたようですが、ES3.0では、受け取り口の変数はin、渡し先の変数はoutをつけることでシンプルになりました。今からシェーダをやろうという僕には嬉しい設計です。ちなみにGLSLでES3.0を使う場合、シェーダの頭に#version 300 esと書くとES3.0として認識されます。書かなければ過去バージョンで認識してくれるのかな?

gl_Positionがはあるが、gl_FragColorはないよ

これも廃止された系です。in,outで自分で定義するという流れのようですね。自分はfrag_colorというのを作ってみました。

texute2D関数はtexture関数に置き換え

ES3.0からtexture2D関数がなくなりtexture関数になりました。texute2D型とsampler2D型のどちらも処理してくれるみたいです。

OpenGL プログラミング

SwiftからObjective-Cの内容をコールにするには、Bridge Fileを用意することで容易に連携できます。例えば、Objective-Cで作成したHogeクラスをSwiftで使う場合、次のような感じになります。

Obj-Cのあるプロジェクト内でSwiftファイルを新規作成しようとすると「ブリッジファイルを作りますか?」と聞かれるのでYesにしておくと***-Bridge.hが自動生成(&プロジェクト設定)がなされるので、便利で楽ちんです。上記の例ではmain.swiftを作っていますが、iOS開発ならばAppDelegateのapplicationLaunch…のメソッド内でHogeを使ってみるといいと思います。

SwiftとObj-Cに同じ名前の型を定義する(Swift1.2)

自分の例ですが、Swiftを含むフレームワークを作るとき、ObjCで記述できないものをSwiftで書くため、同名クラスがフレームワーク内に2つできることになりました(SwiftのHogeとObjCのHoge)。

これちゃんと動くのかな?と心配になりましたが、結論から言うとSwiftのHogeが、何のクラスも継承していない(厳密にはObjCのクラスを継承していない)状況であれば、同じフレームワーク内に入れることができました。

上記とは逆にSwiftのクラスをObjCに連携するために、Bridgeとは逆の***-Swift.hというファイルが生成されます。ここにSwiftのクラスがObjC用に変換されて自動で追加されます。このとき追加される条件が、NSObjectの派生クラスであることで、NSObjectの派生でなければ、連携されない、ということにもなります。よって制限はありますが2つの同名クラスをObjC, Swiftで記述して使い分けることもできるようです。

とはいえ、Swiftに統一したほうが良い感触

ただ上記のクラスの話はとてもニッチな話でして、できるだけSwiftで書いたものをObjCでも共有したほうがいい気がします。書いてみた感覚からして継承の不自由がありますし。

Swift プログラミング

WindowsでC++,iOSでObjective-C(以下ObjC)をそれぞれ触っていましたが、その融合型であるObjective-C++(以下ObjC++)にようやく触れる機会が出たのでちょこっと触った感じを書きます。主にフレームワークとコード互換関係についてです。

ObjCとObjC++ではコンパイラが別

当たり前ですが、まず別のコンパイラで動作します。ObjC++コンパイラではC++とObjCのコードが混在していてもコンパイルすることができます。

こんな感じでC++のクラスとObjCのクラスが共存できます。C++の記述が.mm内で完結している場合は問題ありません。問題はObjCプレーンとObjC++のファイルが混在した場合にややこしくなります。例えばヘッダを介して次のようなことが起きます(使用環境:XCode6.1 Yosemite)

– “ObjCpp.h” (C++クラス定義があるヘッダ)
– “ObjCpp.mm” (C++クラスの実装 Objective-C++) ※ObjC++コンパイラ
– “Hoge.m” (#import “ObjCpp.h”を含むObjC実装) ※ObjCコンパイラ

上記の場合、Hoge.mがObjCpp.hに含まれるC++記述を解釈できずエラーになります。ObjCpp.hをObjCで読む場合、マクロなりで判別する工夫が必要そうです。

ObjC++はObjCのすべてをフォローできるわけではない…らしい

ここを誤解していたのですが、ObjC++でコンパイルできないものがありました。例としてはNSScreen。これを使っているコードがあったのですがObjC++コンパイラでは、ObjCAPIのリンクで失敗しました(OSX API関数のUndefined Symbol … Architecture x64_86)。なんとなく64bit対応しきれていないのかな、と言った印象。

ObjC++コンパイラでObjCコンパイラのオブジェクトがリンクできない?

自分はObjCコンパイラで作っておいたライブラリをObjC++の上で使おうとしたのですが、リンクでコケました(ObjCコンパイラで生成したオブジェクトのリンクはOK)。コンパイラが違うので仕方ないかな…とも思いましたが、リンクできる場合もあるみたいでここは要調査(SuperCollider for iOSはそのあたりがうまくできている)。加えて上記のNSScreenのように使えないAPIがあるとすると、ObjCプレーンがApple向け開発においては、やはり正解なのではないかと。

ObjC++を使うなら全面的に使う方がよさそう

ObjC++を使うのであれば、API非互換の危険性はあるものの全面的にObjC++コンパイラで使うのがよさそうという雰囲気です。混在して使うとしてもリンクができる状況を把握しながら使ったほうがよさげです。

Swiftつれづれ(Swift1.1)

このObjC++の流れ、Swiftに似てるなーと思いました。SwiftとObjCをブリッジする際ObjC側でうまくラップしてあげると幸せな感じがするのですけど、ObjC++もきっと同じです。まだ調べ始めたばかりなのでもっとうまくできるのかもしれませんけど。しかし、まるで別言語のようなSwiftのブリッジは、本当によくできてるなー、すごいなー。まぁこれから色々不具合でるでしょうが、また追って報告していきたいと思います。

Swift プログラミング

個人事業主になると記帳が必要になります。青色申告の届け出をしている場合、記帳は毎年の義務となりとても大事です(※白色でも大事です)。記帳は「複式簿記」で行うのが通例ですが、複式簿記はその概念を理解しないと、とっつきにくい部分があります。私も苦労しました…。それらの難問を支援するために「会計ソフト」があります。ではちょっと簿記の壁と会計ソフトが何をやってくれるかを

1.いったい簿記のなにが大変なんだい?

ちなみに僕は簿記の資格はまったくアリマセンが、簿記のなにが大変かは少しずつわかってきました。列挙すると、

  • 複式簿記(貸方/借方)を理解しないといけない
  • 勘定科目などおぼえることが沢山ある
  • 最初から複式で書く必要があるため、チンプンカンプン
  • 転記が大変

複式簿記はその必要性が見えてこないとピンときません。つまり「簿記の概念」そのものの理解に時間がかかります。加えて、記帳は”同じお金の動き”を複数の帳簿に書く必要があります。これを「転記」といいますがとても大変です。そして、ミスが見つかったりするとそれ以降の記帳をすべて修正しなければならないといった繊細な部分もあるため、「マメなチェック」も必要になります。この3つが同時に求められるため、とても大変な作業になってしまいがちです。経理の人には頭がさがります。

2. 会計ソフトは何をしてくれる?

知り合いの税理士さんいわく”コンピュータの普及で会計の世界に改革が訪れた”。たしかにコンピュータは精緻な計算が得意、会計はもってこいだとおもいます。では何を助けてくれるのかな…ということでいくつか使ってみました。会計ソフトによって多少機能は異なりますが、大枠はどのソフトウェアも同じことを支援してくれます。特に会計ソフトがフォローしてくれるのは、

  • お小遣い帳のようにつければ、複式化してくれる(※すべてではない)
  • 帳簿が連動していて、自動で転記してくれる
  • 申告に必要な書類一式を出力してくれる
  • 税金(消費税など)の計算もしてくれる

などで「複式のつけ方になれない間の補助入力機能」や「自動転記」が主なメリットです。とくに自動転記はもう現代社会ではなくてはならない機能となりました。コンピュータすごい。

会計ソフトで有名なものに「弥生会計」があります。会計事務所や各地の青色申告会などでも勧められるソフトウェアです。最近ですと「Freee」といった無料の会計サービスがでてきたりしていますし、好みに合わせて使えばいいと思います。ちなみに自分は「弥生の青色申告」というソフトを主に触ってみたのですが、…複式記述の勉強にはなりましたが、習慣にできませんでした。

ただ一般的には弥生会計などは会計事務所、青色申告会などが経験豊富なこともあり、アドバイスは細かく受けることができます。人の援助も得やすいという点でも、有名な会計ソフトを選択するのが無難だと思います。複式の理解が深まってきたら、選択肢を広げてチェンジしても良いと思います。

3. Excel帳簿付け

自分は弥生に挫折してしまったので、どうしたかというとExcelで自分でコツコツつけることにしています。ただし、これはまったくお勧めしません。実際私も青色申告会さんにお世話になっているのですが、Excelで記帳したいんだけど…と言ったら、避けてほしいと言われました。Excelの基礎は手作業です。使い方によっては転記作業、総額計上が全部手作業になり、帳簿としてつじつまが合わなくなるお客さんが多いからだそうです。

でも自分はExcelで相変わらず管理しています。場合がなぜ認められたかというと、Excel VBAでプログラムを組んで「転記」を自動化しました。「仕訳帳」を自分で入力すると出納帳、振替伝票、総勘定元帳、試算表、貸借対照表、損益計算書を出力できるようにしました。完全道楽ですね、まったくオススメはしません^^;

未分類

Swift1.1とC言語,Objective-C (& Objective-C++)はブリッジできます。一方でブリッジ時に使えなくなるものがあるので、何が使えて何が使えないのかをメモしていきます。

[確認リスト]

  • ○ .hppなどにあるコンパイルされていない(インライン)関数。
  • ×  printf(char* fmt, …) のような可変引数の関数。ブリッジできない模様。
  • × C言語マクロ(#defineなど)。Swift専用のOther Flagで#if節程度はできる。値の設定は不可。
  • △ 列挙型。使えるがSwiftのenumと様子が異なる。NSENUMの使用が推奨される。
  • ○ typedefは有効。
  • ○ NSString*型の引数に、SwiftのString型を渡すことは可能 (iSCKitで確認)
  • ○ typedefしたダブルポインタ型の中身に2次元配列的にアクセスすることができた

[方針]

そもそもSwiftでそのままブリッジできること自体がびっくりなので、正直これだけでも十分ありがたいです(&いつ打ち切られるか怖い)。様子をみた感じ、現状で特に気にしないといけないのはC言語マクロとポインタという印象です。

C言語マクロに関しては正直全滅とみなして、Swift用に作り直したほうがよさそうな雰囲気です。デバッグマクロを作られる方もそのようにされているみたいです。

次にポインタですが、CのポインタはSwiftブリッジ時にUnsafeMutablePointer型といった形になってしまい使いづらい感じです(慣れればいいのかもしれないが)。せっかくブリッジするのならSwiftではサクサクつかえるように工夫したいですね。ポインタなどは伝統的な~~~~Refといった型にtypedefしておくなどするとSwift側ではすっきりした感がでました。よって結構な範囲でC言語側でおぜん立てしてあげたいと思います。どこをC言語で、どこをSwiftで書くのかの棲み分けの基準はポインタの管理デザインによるのかなと思いました。

Swift プログラミング

こんにちわ、けんごです。

晴れて個人事業主にはなったものの、事業に必要なことって色々あり、スッキリとはわからないです。おそらく法律で決まっていることも多々からんできて、手段や手続きがきれいに揃わない感じが多いんだと思います。さしあたって思い当たる限りを下に書いてみました。

  1. 青色申告/確定申告(年に1回)
  2. 複式簿記の記帳(さしあたり一番大変そう)
  3. 経費計上
  4. 納税(事業税、消費税など)
  5. 保険(労働保険など)

ざっくりとまとめてしまいましたが。さらに、これらをやっているからといってもちろん仕事がくるわけじゃないので、これに加えて「営業」「開発」が必要ですね…笑 なんかこれを一生懸命やっていたら本業がおろそかになりそうだなぁ。なんという矛盾。なるほど事務仕事専門の人が大事になりますな…

1個1個が(よくわからなくて)気が重くなりますが、1つずつやっつけて行くしかないですねー。まずは慎重にならないといけない税金からいこうかと思います。またエントリ書きます。

個人事業主

個人事業主になったとしても、業態によってはそのまま仕事を始めてしまってはいけないことがあります。許可が必要な業種の場合です。電気工事なら国家資格の電気工事士免許、食品を取り扱うなら食品衛生管理の認可が必要になります。許可なく営業をしていると、指導されちゃったり場合によっては営業停止処分になったりするらしいので気をつけて下さい。

さて私の場合はソフトウェア開発業なので、2011年の段階では免許がなくてもとりあえずは始められる仕事のようです。いずれは免許とか出てくるのかな…セキュリティ関係なんかではでてきそうですな。しっかりしたお仕事を納めるようになったら、プライバシマークやISOなど取得する必要が出てくるかと思います。

個人事業主

(注:4年前の記事を加筆修正しています)

前回悩みをいろいろ書きましたが、個人事業主になることにしました。さしあたり個人事業主になるのに必要なことはなんなんじゃい、ということで手続を列挙。

1. 事業主になるための書類の提出

まず「個人事業はじめたよ」宣言をするために「個人事業の開廃業等届出手続」を税務署に出します。このとき、青色申告するなら「所得税の青色申告承認申請手続」も出す必要がある…とのこと。後者は白色申告なら要らないようですが、 白色のメリットと言えば記帳が不要という点くらいで収入が300万を超すと義務化します。 今回は青色でしっかり記帳の覚悟を決めたことにします(ちなみにH26年度から、白色申告でも記帳が義務化されたので、なんも記帳せんでいいわけじゃないのでご注意を)。

2. 個人事業の開廃業等届出手続

実際の書類
個人事業主を始める・やめるときに出す書類で、大体以下のことを決めて書類を書きましょう。必要な記述内容は以下の通り。

納税地 税を納める場所です。僕は在宅なので自分の住所携帯電話番号。該当するものは「住所地」に○。
上記以外の住所地・事業所など 事業所が別にある場合は書きます。僕は空欄でした。
氏名 自分の名前です。
生年月日 自分の生年月日です。
職業 お仕事がある方はその職業を。自分は研究員で出しました(笑)
屋号 お店の名前で、これで名乗れるようになります。長く使う名前なので良いお名前を是非…
届出の区分 開業に○と、事務所・事業所の新設に○でOKでした。新設に○は不要かも?
開廃業日 開業した日です。
個人事業主は1/1~12/31が収支期間と決まっています。個人的な意見ですが1月1日で届け出するとスッキリすると思います。ちなみに1月1~15日開業の人は3月15日まで届け出できます。その他の日が開業日ならば開業から2か月以内に。

「青色申告承認申請書」または「青色申告の取りやめ届出書」 青色申告をするのでに○。
消費税に関する「課税事業者選択届出書」または「事業廃止届出書」 免税事業者として申請するのでに○。
事業の概要 お仕事の内容です。自分は「ITアプリケーションコンテンツの開発およびIT支援業務」としました。

後は届け先の税務署・提出日を記入し捺印すればOKです。
ちなみに控えを1部持っていたほうが良いので、あらかじめ記入したものをコピーしていくと手間が省けます。

3. 所得税の青色申告承認申請手続

実際の書類
実際にお仕事をする場所を書いたり、提出する書類の種類を選択するようです。

納税地 上記書類と同じ
上記以外の住所地・事業所など 上記書類と同じ
氏名 上記書類と同じ
生年月日 上記書類と同じ
職業 上記書類と同じ
屋号 上記書類と同じ
平成_年分以後… いつから青色にするのか年を書いてください。僕の場合23年。
1. 事業所または所得の基因となる… 空欄
2. 所得の種類 事業所得に○
3. いままでに青色申告承認の取り消し… (2)のに○
4. 本年1月16日以後に… 事業開始日を書きます。1月15日以前でも念のため書いておきました。
5. 相続による事業承継の有無 (2)のに○。
6-(1)簿記方式 複式簿記に○しました。これで青色申告は複式簿記での提出が必須になります。
6-(2)備付帳簿名 いわゆる各種帳簿がズラーッと並んでいて困ったのですが、ひとまず何も無しで良いようです。ただ必要な帳簿(現金出納帳や経費帳)はしっかりつけて保管しておくように、と税務署の人にアドバイス受けました。

こちらも上記同様、届け先の税務署・提出日を記入し捺印し、控えにコピーを取っておきます。

ちなみに簿記の種類を分けると「白色申告」「青色申告(簡易)」「青色申告(複式)」と分けられる感じです(参考サイト)。簡易は10万円の課税控除、複式は65万円の課税控除がつきます。複式簿記で必須なのは「総勘定元帳」と「仕訳帳」ですね。他の補助簿もあったほうがいいんでしょうね、きっと。

4. 税務署の人に相談する

これらの書類を用意して税務署に行きました。恐る恐る提出したものの税務署の人は丁寧に対応してくださいました。 最初の申請書の書き方くらいは「個人事業主の開業をしたくて相談に乗っていただきたいのですが」と告げて、 自分の事業の状況や、青色申告のこと、記帳の予定などを伝えれば、丁寧に教えてくれます。実際の記帳の細かい相談などは「税理士」や「青色申告会」で聞いてねと言われますが、 市区町村によっては帳簿の初回指導を無料でやってくれるサービスなども予約受付しているので、これを受けるのはかなり有益かと思います。

上記の書類を出せば、ポンポンとハンコ押してくれて申請完了です。さくさく終わりました。

5. 個人事業主になれました!…が

申請書に関しては簡単に出せます。でも一番大事なのは「事業の軸」です。ちゃんとどんなお仕事しようか決めてからの申請でも遅くはありません。わざわざ個人事業主になるのですから、仕事の軸はちゃんとしておくのが一番大切だとおもいます。加えて事業主の義務として帳簿付けはマメにやることが肝心です(2ヶ月くらいほっとくとむしろ混乱するヨ)。そもそもExcelで自分のお仕事のお金を家計簿みたいにしてたので、これをちゃんとした形に整えて、習慣にすればさほど苦ではなさそうです。…さしあたりの課題は青色申告周りの書類形式の知識ですね。 そこをスッキリしたうえで上記の手続き申請をしたいものです。

個人事業主

個人事業主になって4年ほど経ちますが、以前日記にまとめていたものをあらためてブログでまとめていこうと思います。
まずは旧日記からの修正記事でいこうと思います。

(注:4年前の記事を加筆修正しています)

パニック障害になってから固定職を持たない立場になっていた私、アニメ業界のちょっとしたお仕事やiOSアプリの副収入を生活の足しにして生きていました。しかし確定申告などを試算した際、これらの収入が雑所得で処理されるのはもったいないことに気づきまして、やらねばならんことが多いのですが、このタイミングで「個人事業主」について真剣に考えようと思いました。

しかして、調べるほど悩みが深まる。頭で考えるばかりでは仕方ないので、これをきっかけに少しずつ情報を整理していこうかな、と思います。

1. 事業を始めるか・否かで悩む
そもそも、まず個人事業主になるべきか、そうでないのか。
個人事業主になるメリット・デメリットを思った通りに並べると、

2. メリット
・青色申告すると最大65万円税金控除
・経費を計上できる
・「職」ができる
・お仕事を増やしても安心

3. デメリット
・290万円以上の収入があると、事業税(3~5%)が発生する(※290万は控除される)
・申請や手続きがめんどくさい
・青色申告用の記帳がめんどくさい(簿記わからない)
・面倒事を税理士に任せると、金が吹っ飛びそう(想像)
・といって自分でやるとなると大変で、実務に集中できなそう
・個人のお金の管理とちゃんと整理しないといけない(ちゃんとしないと混じって混乱)
・そもそも収入が不安定なのでメリットが生きるかわからない
…思ったこと書いてみたら、要はメンドクサがってるだけですね。
なんで面倒くさいかというと、書籍やネットで調べてると、アレが必要、コレが必要となんだか義務感増やすばかりでストレス溜まっちゃいました。アレなんとかならんもんかな。 …やったことない私がガタガタ言っても、実際必要なんでしょうけれど。

さしあたり、面倒そうだ!という気持ちは確認できました。お金の面を考えれば、(収入がそれなりにあれば)価値はありそうです。事業税はあるものの雑所得でまるまる課税対象になるよりかは税金対策になりそう。さて、やることにしようかどうしようか。4年前の自分は2週間くらい悩んでました。 ちなみに今回参考にしたサイトはこちら

個人事業主

けん悟庵のリニューアルをはじめました.

過去のリソースをご覧になられる方は,

http://kengolab.net/pure/

法人「渡辺電気株式会社」へご用の方は,

http://wdkk.co.jp/

以上のリンクへお越しください.よろしくお願いいたします.

未分類