C++幼女先輩

プログラミング成分多め

花粉症辛い

私は小学校入るぐらいには重度の花粉症でした
毎年春になると見動きに不自由が出るぐらいに厳しい症状が出ます
2月中旬から花粉を感じ始め、3月いっぱいは死ぬように倒れてます
4月の中旬になるとだいぶ回復するかな?
なので今が一番厳しい季節
年度の切り替えもあいまって、この季節に案件を手放す事が多いです
普段は3,4月は海外の杉のいないところで過ごします

つまり、今は普段に半分ぐらいの収入になります
この季節は技術のインプットを行っています

本当は経営学んだりしたほうがいいのですが、技術の方が好きなので。

UNITY NintendoSwitchの対応状況調べたい

Switch

UNITYのレファレンス見る限りでは、Switchは現代的ではないらしい

Unity - Manual: Compute shaders

Modern consoles (Sony PS4 and Microsoft Xbox One)

そのためか、NintendoSwitchに関しては、機能が大きく制限されるので、とりあえず機能リストアップして使えるか試そうと思う

#

Version

HDR

SparseTexture

CullingGroupAPI

AsyncTextureUpload

ProcedualMeshGeometry

FrameDebugger

Tessellation

MovieTexture

3DTexture

TextureArray

CubeMap

ReflectionProve

DeferredRendering

MultiRenderTarget

リニアカラースペース

Vulkan

CommandBuffer

GPU Instancing

Geometry Shader

ComputeShader

ScriptableRenderPipeline

JobSystem

ECS

DynamicResolution

GPU Profiler

New MemoryProfiler

Timeline

UNITY DrawCall調査 particles GPU Instancing ~ UNITY2018.3.6f1 ~

今、DrawCall(SetpassCall)を減らす作業をしています
その中でもGPU Instancingという減らし方を調査していました
パーティクルは性質上、たくさんポリゴンを飛ばすので、GPU Instancingとの相性は良いです

qiita.com

次はTerrainかな。
Terrainも同じモデルを沢山表示する関係で GPU Instancingや Static、Dynamicバッチングと相性いいです

年収2000万を超えた方法

多分、凄腕プログラマさんは年収1000万オーバーもざらにいます
2000万超えるのは、プログラムだけじゃ難しいですが

とりあえず1000万の壁を抜けた人たちの話です

会社員で1000万超えられるか?

年収1000万は月にして83万。フリーランスなら普通にそれぐらいいます
ただし、リーダー、マネージャ出来る凄腕だけど
会社員でも年を取ればいけます
でも若いうち(30前半まで)で超えられるか?
ボーナス200万あれば月67万。行けそうですかね?

会社次第だけど、あまり簡単ではなさそうです
基本的に社員時代は技術力向上と、自分のブランドアップに徹した方がよさそうです
やはり大きな会社の方がノウハウがたまっていて、技術力のある先輩社員や外注さんと仲良くなり
技術力を高めていくのがいいのかな?
自分売りはやはり TwitterなりFacebook、Qiita というSNSや、勉強会等で能力を公開することですね
で、そこで満足してもいいし、お金を求めてフリーになってもいい
技術力と自分売りが出来てれば、1000万ぐらい軽くいくでしょう

会社員良く知らないけど

ただ、外資でなくても、月160万~のオファーも来たりするので
もちろんリーダーやマネージャの能力重要ですが、プログラマでも2000万はギリ行く事は確定です

フリーで1000万オーバー

月額83万。でも実際は1,2か月仕事ない期間があると考えると月100万欲しいところ
月100万というのは心理的な壁になっています
なぜなら、会社によっては外注一人に出せる決済のおりる金額というのがあり、担当レベルだと例えば80万までとか
部長クラスで90万。100万超えると役員の承認が必要とか
ルールがある場合が多いようです
そんな場合は、週3日で60万で請けて、別件を週2で入れたり、持ち帰りと合わせて 100万オーバーを狙うか
役員以上の人から話をもらうために、役員以上のコネを作るのがいいでしょう
ただ、最近は腕のたつプログラマには100万ぐらいまでは簡単に決済おりることが多い気がします
120万は一つの壁ですが
役員の首根っこつかんでれば160万までは、わりと話をききます

年収2000行くには、平日で120万以上の案件をもち、あとは 人を入れるか持ち帰りを行って足さなければ難しいかもしれません

アイドルプログラマ

自分売りが本当に成功した人です
AWSならこの人に聞け、この言語ならこの人に・・
勉強会で人気な発表したり、本が売れたり、何かですごく名前が売れた人です
私も経験してないのでわかりませんが、この人が居る事で社員も入ってくる、まさにアイドルなので
月200万オーバーも夢じゃない世界です

自分の場合

私は30前半で1000万はいってましたが、それは平日の仕事が100万で常駐し、持ち帰り案件と合算という感じです
2000万はもっと後の話ですが、平日は120万ほどで請けて、信頼できる人間を入れたり、持ち帰り案件や、手を動かさずにコンサルのみ行う
といったことで超える事ができます
まだ自分の技術だけでは超えられないので、そこが課題ではありますが
安心して仕事場に送り出せる人と、コンサルと、やはり技術力と売り込み どれも重要で微妙なバランスです

お金の使い道

正直、かせいでも半分は税金になりますので、正しい事に使うべきです
例えば、お金をけちって安いPCで作業効率落とすなら、いいPCにして経費にすべき
モニター1個追加したり、SSD容量大きいものを買う、メモリー増やす、CPU良くする、GPU良いのに・・
これだけで作業効率やモチベーション上がるなら、正しい使い道です
あとは、事務所というか秘密基地を作って、そこに投資しようとしています
なるべく 一緒に仕事する人たちが快適に楽しく技術を磨けるように、いい秘密基地 目指しています

決して、自分がブランド品で固めたり高い車乗り回したりはしません
でも、仕事とるために、多少はいい服のコスプレすべきだな・・・とは反省しているところですが・・
そのあたりは別の課題ということで・・

そして最も重要なのは、自社プロダクトを作る事ですね。
ただ難しいのは、お金をいっぱい出して仕事としてプロダクトを作るのか、みんなでワイワイ遊び感覚で作るのか
どちらが良いかは、メンバーやプロダクト次第ということです
あまりにもビジネスライクにすると、結局お金出す人の声だけでかくなり、いいものが出来ない気はします
その場合、基本的には 環境をよくしたり場所を提供したり機材を提供したりはしますが、あまり給料は発生させず
プロモーションなどの費用を受け持つかんじがいいのかな?と思ってますが、いかんせん経営は素人なもんで・・・

今までの反省とこれから

最近自分の技術力が相対的に落ちてきた気もしつつ・・・は反省材料
自分の売り方が下手で、本を書くなりSNSうまく使うなり、ちゃんと売らなきゃ
結局この先は人を沢山入れて会社の利益増やしてそれを、秘密基地や自社プロダクト=会社の価値 に還元する事になるが
従業員の価値を高める方向へのお金の使い方が出来ないか?模索している
人を入れる、自社プロダクト以外の利益の上げ方、つまりは自分の単価を高めるための努力は行わねばならないな・・

結局技術力しか売りのない私なので、ちゃんと技術ついていかねば明日がない
しばらくUNITY勉強し直します

UNITY DrawCall調査 GPU Instancing ~ UNITY2018.3.6f1 ~

UNITYのパフォーマンスの鍵は昔からDrawCall削減といわれている
今はSetPassとともに語られるようになった

まず、DrawCall、SetPassとは何か?
それらを減らす方法は?
GPUインスタンシングとは何か?
から、GPUインスタンシングで減らすのを調査した

qiita.com

人生最後の言語

おおげさに
プログラマとしては後数年でメインの座から離れるかもしれない
理由は、一生働かなくても暮らしていける貯金を手に入れているからだ
もちろん質素な暮らし限定だが、ご飯食べて住むところがあり、ゲームして遊べれば十分だ
ただし、ゲームを一日中出来るほど集中力があるわけじゃないので、暇つぶしに少しプログラムしたい
もっと言えば、最近仕事をしている人、仮にクィーンと呼ぶ
クィーンからの依頼をこなすため、Web開発に使える言語をなにか一つ本気で身につけようと思った

言語の比較

言語は色々な側面から選ぶのだが、まずは速度という面からジャンル分けしてみる

ネイティブコンパイル言語

ネイティブ実行ファイルが生成される、最も早い言語である
この言語を使うなら非同期前提だろう

C++言語

C言語はlibEvent等を使うが、個人的辛いのでCでは書きたくない
Boost.Asio等を使い非同期を行う
Webフレームワークも無くはないが、あまりWeb開発で使う人が居ないので情報が少ない
ライブラリは非常に多くそろってはいるが、SDKやWeb開発に便利なものが少ないので
かなり自作する必要があるだろう
問題は、他の人と共同開発や、開発速度を上げるのが時間がかかる

Rust

Post C++をうたう言語
今の所、まだライブラリが少ないかな・・という印象をうける
速度は申し分ない
フレームワークとして Actixが良さそう

Go

ネイティブのわりには遅い気もする(JavaやKotlinより遅いような・・)
が、恐らくコンパイラの最適化でもっと速くなるだろう
シンプルな言語で、サーバレスには良さそうだが
あまり作り込みがしにくいので、あまり良い印象もってない

VMコンパイル言語

VM上で動くコンパイル言語だ
基本的にはネイティブより遅いが、そうでない場合もある

Java

特にビジネスアプリでは昔から大人気
フレームワークも非常にたくさんあり、Spring、Play、Servlet・・・
少し前までは Android開発言語でもあった
なんだかんだでド安定言語

Kotlin

Better Javaといったかんじか
今のAndroid言語
JavaVM上で動く言語
フレームワークは、http4kなど

C

Better Java
Microsoftの言語なので、ビジネスでの利用も多くマニュアルも濃い
.net Coreの存在や、UNITY、Xamarinの存在により、最もフルスタック言語といってもいい
ゲーム案件を多く抱え、UNITY開発をよく行っている私にはベストかもしれない
MVCフレームワークはFullstackフレームワークのくせに速い

Erlang,Elixer

Erlang VMはあまり速い印象がないが、堅牢性では非常に優れている
Erlangは言語に癖が多いが、ElixerはそれをRubyライクにまとめたかんじ
Elixir Phoenixが有名か

Haskell Clojure

メインで使うには・・・
良い言語なのだけどね

スクリプト言語(非同期)

スクリプト言語は遅いが、非同期であれば我慢できそう

node.js

非同期を流行らせた言語
JavaScriptがベースになっているので、Webサービスを作るには相性はいい
非同期フレームワークのなかでも、かなりライブラリが多くコミュニティも発達している

Python

使ったこと無いが Tornado等、非同期フレームワークは存在する

スクリプト言語(同期)

個人的には、速度的には避けたいが、高速で開発できるならあり

PHP

ゲーム業界では人口が多いハズ

Python

世界的に最も人口が多い
人工知能にも使われる

Ruby

日本では開発者が多くコミュニティも活発

決断

C

UNITY案件を多く請けているし、.net Coreのおかげでサーバ開発も可能
さらにツールも作れる
ほぼフルスタックのC#をまず初めに勉強しようと思いました

node

非同期サーバとして有名でノウハウもあふれている
また、GypでC++とも連携しやすい
Electronでアプリも開発出来る
そしてWebのフロントはJavaScriptが必要
これまたフルスタックである

Java

Webサーバとして歴史もあり速い
Hadoopにも必要
業務アプリはほとんどJava

Python

軽量言語としてPython3系を使いたい

年末休みにnodeでAPIサーバを勉強した復習 最終回〜part5 ログイン認証をPassportで

年末休みにnodeの勉強でAPIサーバ作成した
その時のコード説明
5部作ついに完結

今回は Passportを使いJWTトークンをつかい認証を行う
APIサーバのキモの1つを実装した

qiita.com