タオルケット体操

サツバツいんたーねっとでゲームとかガジェットのレビューとかをします

新しいフレームワークとかを習得するときのちょっとしたコツ

コツは、なぜそのフレームワークが作られたのかについて触れることです。

だいたいはREADMEの一番頭とか、あるいは本人やコミッターのブログになんかに作者の思想とか、フレームワークのコンセプトについて書いてあります。
それらを読んだりしていると「なぜ既存のやり方やフレームワークじゃだめだったのか」というのがみえてきます。

ここがわかっていると、ドキュメントを読まなくてもだいたいどういうAPIが生えているのか、あるいはどういう流れで実装していくものなのかの想像が付く状態になるはずです。なぜならあなたにはそのフレームワークが何を解決するために生まれたものなのかがわかっているからです。
あとは公式のチュートリアルをこなして想像と実際のギャップを埋めていきましょう。

ここで想像と、提供されているAPIに著しい差がある場合は以下の可能性が考えられます:

  • あなたの理解が間違っている/乏しい
  • コンセプトがあなたの好みにあっていない
  • 実装者の理解が間違っている/実装力不足
  • まだライブラリが枯れておらず、実装が間に合っていない
  • 思想とか特に存在してない

おそらくは高確率で一番なので、チュートリアルをこなしつつ色々なドキュメントを読んで再学習しましょう。
思想が特に存在していないライブラリとかも稀によく存在しているので、そういう場合は諦めます。

チュートリアルを終わらせたらもっと複雑で、実際的な機能をもつものの実装に移ります(権限があるならば、業務にぶちこむのもありでしょう。実験だよ実験!)。
実践的なものを作っていると、チュートリアルレベルでは考えなくて良かった様々なものに対する問題が立ち上がってくるでしょう。ここで気をつけないといけないのは以下のことになります:

  • 複雑化するモジュールの構成をどう管理するか
  • エラーのハンドリングまわり
  • 値の整合性(バリデーション)
  • パフォーマンスの調整(非同期サポートとか)

この辺に対するガイドラインが存在しない、サポートが薄い場合、特にエラーのハンドリングまわりのサポートが未熟な場合はそのライブラリがまだ若いか、実践レベルで利用しているユーザーが存在しない可能性があります。
時間とモチベーションにあふれている場合はコントリビューションチャンスですが、忙しい業務などでは避けたほうが無難だとおもいます。

まとめ

いきなり思想がどうとか、作者のお気持ちだとか、国語の教師かよテメーって感じではありますが、結局がこれが一番効率よく習得できます。
例えばReduxですが、ぱっとみのボイラープレートの多さが異常なだけで、フレームワークが提供(強制)しているAPIはほぼなく、大体はただの関数です。丸暗記とコピペでアプリを組もうとするとこれほどシンドいフレームワークもないかもしれないですが、コンセプトさえちゃんと理解すれば覚えるのは一瞬です*1

APIの丸暗記だけの知識はそのフレームワークが死んだら終わりますが、思想への理解は次に繋がります。
なぜなら次世代のフレームワークというのは、前世代の否定か洗練だからです。例えばフロントエンドフレームワークの進化の歴史はstateの管理とviewへの反映方法の洗練(Railsが歪める前のMVCの移植)からはじまっています。fluxはMVCを洗練させたもの、そしてstate -> viewの部分ではDOM操作を否定する方向に進化しています。

そういうところさえ押さえておけば、次にまた新しいものが出てもちゃんとついていけるんじゃないかなと。
ちなみに僕は最近仕事でRailsを使う羽目になっていてヒーヒー言っています。大抵のやり方は気に食わず、やろうとすることがことごとくうまくいかないのでたぶん思想レベルで相容れないんだとおもいます。そういうこともあるとおもいます。

だんだん何言いたいのかわからなくなってきたので今日は以上です。

*1:実践レベルで使おうとすると大変ですが、今ではかなり楽になりました

最近のゲームは本当に面白すぎてダメ

無限に時間を奪われてしまうので本当にダメ。

しかもWitcher3みたいな超美麗グラフィックで音楽もよくてストーリーも最高な数十年に一本レベルの作品だったとしてもDLCとかを出してしまい、もっと遊びたいというファンの欲望を満たしてしまう。
スパイダーマンなんて最初のPVだけ観てファンボーイ向けのムービーゲーなんでしょとおもってたら良作に仕上がってしまっている。こんなの一昔前じゃ考えられなかった。

しかも現代はオンラインが基本なのでNPCみたいなしょうもないロボットじゃなくて人類といつでも戦える。Overwatchとかは最高に面白くて、僕は下手くそなんだけど今でもときどき遊ぶくらいだ。

アクションゲームだけでも、モンハンみたいにややこしくてプレイに時間がかかるゲームから、Dead by Daylightみたいにルールは超シンプルでちょっとの時間だけ遊べるような、それでいてやりこみの余地が十分にあるようなゲーム、レトロな2Dゲーム、クラフト系、サバイバル系、サメ系…… しょうもないやつから神ゲーまで色々買えてしまう。
しかもとんでもなく安い値段で*1だ。スーファミ時代のゲームは9000円や10000円くらいしていたような気がする。今どき買うのに10000円かかるのはEAとかUBIのゲームくらい(しかもDLCとかシーズンパス同梱版)のもんじゃなかろうか。

2018から2019年にかけて発売されるうち、僕の心を掴んだタイトルだけでも「BFV」「Metro exodus」「Anthem」「World War 3」「Days Gone」etcetc…… っていうか2月22日に発売日集中させすぎじゃね???
とにかく大変なことになっている。そして未だ発売日未定のタイトルのうち、僕が知っている超有名なやつだけでも「Last of US Ⅱ」「Death Stranding」「Cyberpunk 2077」があるし、恐らく僕がまだ知らないだけで海外では有名なタイトルとか、あるいはPUBGみたいにいきなり現れて全てをかっさらっていくダークホースも出てくるはずだ。

PUBGことPlayer's Unkown Battle Groundはゲーム後進国(あるいは老衰寸前の超先進国?)になりつつある日本におけるエポックメイキングな作品だったんじゃなかろうか。
PUBGのためにゲーミングPCを新調したという話を結構きいた。僕の友人も買ってた。まるで一昔前、WizardryをプレイするためにクソたっかいApple Ⅱを買ったうちの親父やその同類みたいな話だ。プロゲーマー、e-sports、そしてゲームのストリーミングみたいなキーワードが日本人の広い層に浸透したのもPUBGのブームとは無関係ではあるまい。
いわゆるバトロワ系タイトルがジャンルとして定着した*2のもここからで、荒野行動みたいなしょうもないパクリゲーからFortniteみたいな「やり方は上手だけどお前らに仁義はないの」ゲームが生まれてて、恐らく来年とか再来年あたりになって人気が落ち着いたあたりで日本でもキャラゲータイトルとして出てくるんじゃないかもしらん。

「最近のゲームは3Dとかがスゴイので手作りのバグの暖かみがないのでダメ」などとほざきながらスマッホで調べることもせずにSNSで横から失礼している腰抜けのあほは当然爆発したダチアが突き刺さって死ぬので放っておけ。
ゲームというのはテクノロジーと人間の血と汗の結晶体なので、人間が血と汗を捧げるほどすごいものが出来上がるが、テクノロジーの進歩もゲームの完成度に貢献する。これはボトルネックという理論によって正しいことが照明されている。
ゲーム作りに人生を賭けていたのは昔の人間だけなのか? これにはおれはノーと答える。
実はおれにも5年間ほどゲームを一切やらない時期があった。社会人になり、プログラミングを覚えてからの5年間だ。言われたことに従う他のなかった学校と比べて、圧倒的に自由度の高い社会というものと、プログラミングの勉強が面白すぎたこと、ネトゲの村社会への疲れ、PS3末期の倦怠感……そういったものがおれをゲームから遠ざけた。
だがドラゴンズクラウンを徹夜でプレイしまくり、その後GTA5を徹夜でプレイしまくったあとのおれは完全にゲーマーとして復帰するための身体つくりが出来上がっていた。そして全くタイプの違うこのふたつのゲームからは、作り手の熱意が強く伝わってきた。それが何よりもおれの心を強く打ったのだ。だから先の答えには強くノーと答える。

つまりゲーム作りに情熱を捧げているすごいやつらはまだ沢山いるし、テクノロジーもめっちゃ進化しているので今のゲームは昔のゲームより当然おもしろい。
昔と今は何もかもが違う。それを受け入れられず、感性の更新ができないやつはそのまま老いてしまい…孫とかが出来て、やがてミカン農園で家族に看取られて死ぬ。

何度でもいうが、最近のゲームはマジで面白い。
そして今はVRというフロンティアが存在しており、向こう10年は進化し続けることが確定している。VRの世界はいまだ体験を支える「ルール」が確立されていない。いわばファミコンとかメガドラとかそういうのが大量発生したケオスの時代を経て今のコントローラーが出来上がったようなメキシコを追体験できる。

AAAタイトルが好きなやつは僕が上であげたやつのどれかを買うだろう。
そうじゃないやつ、レトロなのが好きなやつはまずSteamにアカウント登録をしてTandledeep(https://store.steampowered.com/app/628770/Tangledeep/)とかそういうやつを手当り次第に買ってみるといいだろう。人を食うのがすきやつはForestとかConanとかを買え。
あとここでSteamの名前を出したことでちょっとマイナーなタイトルを出してマウントを取りたい人間が色々なタイトルを紹介してくれるとおもうのでそういうのも参考になるだろう。

以上。

*1:競争力の激化と安値のせいでインディーズスタジオはどこも大変らしいので諸手で喜ぶわけにはいかないけどね

*2:PUBGが初ではない

BFV ベータをプレイしての感想

PC版です。

システム修正点について

BFVでは以前の流れを引き継ぎつつも、システムに大きな手が加えられている。その中でもゲーム性に大きく影響を与えているのは

  • スポットの(実質的)廃止
  • 弾丸所持数の低下
  • 自動回復の弱体化(完全回復しなくなった)
  • 衛生兵以外でも分隊員の蘇生が可能 & 蘇生にかかる時間が全体的に増加

だとおもわれる。

5chとかそのへんの掲示板?とかのエアプクソガキはヤーヤーとやかましいけども、ぼく個人としては上記の修正全てについて好意的。

続きを読む

エンジニアの技術力と給料の相関についての誤解と幻想

SNSやブログでこの手の話題が定期的に盛り上がりますが、難しい話をするわりにしょうもない二元論に陥って基本的な事実を見逃されているようにおもえるので簡潔にまとめます。

技術力と給料が相関関係にない理由

技術力を測るスカウターが存在しない

そもそも論になってしまいますが、技術力ってなんですか? っていう話です。
数値化できない以上、普通の組織であれば「社内の曖昧な相対評価」みたいなものに落ち着いてしまいます。

そのうちにAI(エーアイ)がなんとかしてくれるはずでしょうが、今はまだ無理です。

お金は無から湧き出てはこない

はい。
金のない会社は社員に給料を出せません。なので、どんなにスゴイ級の腕前を持っているハッカーであっても、所属する会社が儲かっていたり多額の投資を受けていたりしない限りはおちんぎんは高くなりません。

「技術力と給料」の話をする人はなぜかみんなここの前提を吹っ飛ばして喧々諤々やってしまいますが、独りで会社に爆益をもたらすヤバイ人でもない限りは会社の金回りがボトルネックになって給料が決定されます。

技術力が差別化項目になっていない組織

噂によると、ひよこ鑑定士は資格の習得難易度も高くなかなかの年収を誇るようです。
ただしそんな高度技能であるひよこの鑑定であっても、それに高給を支払ってくれるのは鶏を扱っている企業だけでしょう。例えば不動産会社はひよこ鑑定士に年収700万円を支払ったりはしません(たぶん)。

「IT業界」というくくりが、せいぜい「パソコンをつかっている人たちがあつまっている」程度の意味合いしか持たない我が国において、エンジニアリングの技能を全く必要としていない「IT」企業なんて掃いて捨てるほどあります。
たとえば、病院なんかの金を持ってるけどITに疎い人しかいない組織を適当に騙して、保守料金と称してWindowsアップデートの実行に何千万円も取る作業にPythonでAIをディープラーニングできる人材は不要です。

さすおに様じゃないですが、評価対象にならない技能を磨いても給料が上がらないのは当然です。*1

競争力

例えばJavaなど、知っている人が多くてコモディティ化しているような技能と、PythonでAIをディープにラーニングをするような技能だと、同程度の極め度であっても後者のほうが給料が高くなる……なんてことは普通にありえます。*2
逆にJavaのように誰もが学校の授業でやって知ってはいるような言語だとしょうもないフェイク野郎しかおらず採用に苦労するため、極度極め人材は高級チャンスかもしれません。あくまで例です。

モバイルアプリはずっと単価高いままですし、今であればReactやVueなどもTODOアプリ作りました(GitHubでサンプルをフォークしただけ)程度の経験で他分野のベテランより単価高いなんてことも普通にありえるんじゃないでしょうか。知らんけど。

モノの値段は需要と供給で決まるというお話でした。

『新卒』

例えば僕より優秀な学生なんていくらでもいるでしょうが、我が国では新卒の網に絡め取られてしまい横並びの給与しか支払われません。すごい!

技術力が給料に影響する例

技術力で売っていて、かつ強い組織にはいることができる

上で挙げた例の逆ですね。
高度な技術力が他社との差別化要因であり、収益を支えている会社に技術者として入れば当然高い賃金が支払われます。そういった組織へはいるためには高い技術力が必要になってきます(たぶん)。

転職しやすい

昇級は様々な面倒ごとを伴います。また、僕の知る限りまともな評価制度を備えた会社はごくごく少数です。
なので給料を上げる最善手は転職を繰り返す*3ということになりがちです。

最初に「スカウターはない」という話はしましたが、技術者同士であれば「気」のデカさというか、しばらく雑談する程度でも「おめぇすげえ強そうだな!」くらいのことは感じ取れるので、スキルの高さと転職のしやすさは概ね相関関係にあるといってよさそうです。

ブランディングしやすい

知名度 = 技術力ではないですが、強いほうがブランディングしやすいのは確かです。

フリーランスしやすい

僕は生活力が皆無なので技術力云々以前の問題ですが、フリーランスうまくやれば組織にまつわるもろもろのボトルネックを回避できる……かもしれません。

まとめ

給与の額面を決める一番大きな要因は所属する国と会社。
技術力は競争力。売る相手を間違えたら買い叩かれるのは当然。

僕は給料のためだけに勉強とかしたくなくてそれだったらゲームしてたいけど、お金が必要な理由があって頑張ってるのに給料があがらない……と嘆いている人はもしかすると努力する箇所やモノを売る相手を間違っているのかもしれません。


個人的に日本の会社で給料を上げる方法が

  • 家庭環境の変化(結婚、子供ができたとか)という意味不明でかつウェットなやつ
  • 昇進による役職手当て
  • 転職 or 転職を切り札に交渉

くらいしかないのは不健全なのでどうにかならないかなーとおもうんですがどうにかなりませんかね。
以上。

*1:もちろん人生は自由ですし、勉強は楽しいものなのでやったほうがいいですが金が欲しいなら他のことをしたほうがいいよという意味です

*2:国語が苦手なお友達が多いので念のため書いておきますが、あくまで例です

*3:なぜ繰り返すかというと、「前職の給与を考慮」というよくわからない風習があるからです。やっぱ技術力関係ないじゃないか(絶望)

脱MacBookしようとしてnew XPS 13 2018年モデルにLinuxをいれてみたけどちょっと後悔してるよ

Linuxはオープンソースなので政治的にも正しいし、自分で改造すれば理論上は無限大の可能性があり、とにかくすごいです。
Macは使うととにかく宗教になってしまい信者だから全部ダメだし、オープンソースじゃないから自由じゃないです。みんながLinuxを使えば無限がたくさんになって、かなりすごいことになるとおもいます。

みなさん使うといいとおもいます。
困ることは何もありませんでした、あったとしても自分でパッチをあてれば理論上は全て解決するのでわるいアップルやマイクロソフトみたいな悪のプロプライエタリ企業の顔色を伺う必要もなく、誇り高いきもちになれます。こんなすごいOSを使える自分はきっと特別な存在なのだと感じました。

<!-- 最近何かとCPUスペックが足りない気持ちになることが多くなりました。具体的にはコンパイルとか、コンパイルです。

そして年々劣化の一途をたどるMacBook。反面、着実に進歩を遂げる他メーカー。正直なところ、ハードウェア的なMacBookの優位性はすでにありません。タッチバー(笑)

というわけで、Razerと迷いましたが、海外ではDevelopper Editionなども販売して*1おり、よりLinuxサポートの充実している(ようにおもえた)new XPS 13 2018年モデルを購入。

前もって断っておくと、僕はOSのインストールだの環境のカスタマイズだのは一切やりたくない人間です。が、同時に作業環境に関しては強いこだわりがあるのでカスタマイズ性が高い必要があるのです。
その点、macOSは最初からEmacsっぽいショートカットが使えたり、コマンドキーのコンビネーションが優秀でホームポジションを崩すことなく殆どの作業が行えます。キーボードショートカットのカスタマイズもやりやすく、karabinerなどのサードパーティツールを使えばさらに高度な設定も可能です。

そしてLinuxユーザーは常々カスタマイズの自由さや、環境選択の自由さ、宗教的自由さ、とにかく何かと自由度を強調してWindowsやMacユーザーを見下した言動を取るので、きっとどのデスクトップ環境を使ったとしてもキーボードショートカットくらいは半端ない自由度で設定できるんだろうなーすごいんだろうなーと、そういう期待で心がいっぱいでした(フラグ)。

*1:たぶんDellは日本にDevelopperがいることを知らないんだとおもう。SEしかいないとおもってる

続きを読む