引数の多い関数と表現と設計

引数が多い関数は悪、リファクタリングするべきのような言説を見て引っかかったので、メモ程度に書きとどめておきます。 引数の多い関数は全く悪くない 世の中には引数の多い関数は見にくいので悪!構造体にするなどして減らすべき!と言う意見がありますが…

Unity の iOS ビルド時に Settings.bundle を組み込む

Unity で iOS アプリを作るとき、iOS の設定に設定画面を追加することができる。 こういうの。 アプリ上で設定画面を作ってもいいが、簡単なテスト用アプリや、広く公開しないアプリなら、こっちで設定しまったほうが、バグも出ないし楽である。 iOS の設定…

Unity の IEnumerator を返すメソッドの override

Unity には StartCoroutine というメソッドがあり、これは IEnumerator を引数にとって、非同期実行(別スレッドではない)ができるすごいやつである。 詳しくは公式サイト これは一見魔法のように動作するが、その実仕組みはとても単純で、やっていることは…

Macアプリの自動起動

展示とかでアプリの自動起動・終了を設定したいときは、launchd でやります。 ユーザー設定からぽちぽちもできるけど、launchdのほうが一気に設定とかできて便利。 1. 実行スクリプトを用意する Macアプリを起動するならこんな感じ startup.command open /Ap…

最小二乗法が使えると人生が捗る

最小二乗法が使えると人生が捗る!! という数式があったとき( は行列、 はベクトル) は擬似逆行列 を使って、 で表せる。 なぜかはよくわからないけど、これで解を求めるといい感じに最小二乗法っぽくなっている。もっと具体的な例をあげる。 ある長さ2の…

【ポエム】演技が苦手

昔からなのですが、人が何かを演じている姿というのが苦手です。共感性羞恥の亜種と言うのでしょうか、ドラマや映画で、人が大げさな演技をしているのを見るのが、非常に苦手なのです。何か驚いたときに、目を見開いて「わあ!」と声を上げたりだとか、怒り…

リズと青い鳥の

www.youtube.com GWの最終日にリズと青い鳥という映画を見たのですが、これが死ぬほどよかった! 僕はアニメ映画は結構見るのですが、ここまで好き好きの好き状態になるのは何年振りか。 ただ、人を選ぶ気がします。 感想文を書こうと思ったのですが、何を書…

【宇宙よりも遠い場所】なぜめぐっちゃんは赦され、日向のチームメイトは赦されないのか

『宇宙よりも遠い場所』を全話見て、練られたプロットとキャラクター、技巧的な演出に感銘を受けました。 ここ数年で見たアニメ作品の中でも、トップに入ると思います。 見ていない方はプライムビデオとかで見られるので全話見てください。 www.amazon.co.jp…

XXXManager という名前は本当に良くない

XXXManager という名前は良くない。ということは、僕が言うまでもなく過去にたくさんの人が指摘しています。 『名前が漠然としているから』と言うのが大きな理由なのですが、実際に開発をしていると、この手の役割をクラスを作りたくなることは多く、それに…

Electron でファイルを保存するパターン

意外と簡単に書けるので、面倒くさがらずに書くとすぐです。 レンダラ側 document.getElementById('saveButton').addEventListener('click', () => { ipcRenderer.send('save-state', JSON.stringify(state)); }); メイン側 ipcMain.on('save-state', (event…

最小の Unity プロジェクト

Unity はプロジェクトを構成する要素が意外と少ないです。そもそも中核となるプロジェクトファイルのようなものがない。 Unity 2017 では、新規プロジェクトを作成すると次のようなディレクトリが作成されます。 ├Assets/ ├Library/ │└いろんなふぁいる ├Pro…

Unity の MonoBehaviour と Coroutine

やってみて当たり前だと気づいたのですが、StartCoroutine を使うには、MonoBehaviour を継承している必要があります。 つまり、これはダメ public class MyAwesomeClass { void BestMethodEver() { StartCoroutine(SomeCoroutine()); } } どうしても使いた…

Unity のスクリプトの実行順を設定する。

Unity では、MonoBehaviour に設定した Update や LateUpdate は順不同で呼び出される。 これらの順番は、メニューの [Edit] → [Project Settings] → [Script Execution Order] を開き、各スクリプトの優先順位を数値で指定することで、制御することが出来る…

Google Apps Script とロック

恐ろしいことに Google Apps Script(以降 GAS)は並列で実行される。普段 JS を書いていると意識しないが、並列実行ほどプログラムにおいて恐ろしいものはない。 ロックは、以下のような関数で取得できる。 var documentLock = LockService.getDocumentLock…

Unity の meta ファイルと guid

本日は Unity のパッケージ読み込みで一日を潰してしまいました。 Unity のプロジェクト上で扱われるリソースは Asset と呼ばれ、 実ファイルと meta ファイルの組で管理されます。 meta ファイルは実ファイルに付加的な情報を与えるものです。 guid やイン…

誰も読まないブログを書く意味

僕は日記というものをつけたことがないし、 社内で日報を続けようとして何度も挫折している人間です。 かく言うこのブログも、以前に毎日書くと宣言して、挫折しているわけですから、 今回もいつまで続くかわからないんですけど、 まあ何事もやらないよりや…

ブログを書くぞ(決意)

最近は社内の Slack で、もっぱら分報と称し、気づいたことや思ったことを書き留めていたのですが、 やはり、狭いコミュニティで情報を発信するのは、それほど効果的でないし、 せっかく人の目に留まるチャンスがあるのに、それをみすみすと逃すのは、もった…

Web系企業のエンジニアブログまとめ

クックパッド開発者ブログ Hatena Developer Blog GREE Engineers' Blog DeNA Engineers' Blog [ Technology of DeNA ] mixi engineer blog pixiv inside サイバーエージェント 公式エンジニアブログ

JSで抽象クラスごっこ

class AbstractClass { constructor() { } abstractMethod() { throw "Not Implemented" } }

ChromeでWebAnimationAPIが使えるようになった

Polyfillもあるので、積極的に使っていきたい github.com

いい感じのWebサイトの探し方

ここで言ういい感じのWebサイトとは、 デザインが優れていたり、演出盛々だったり、3Dゴリゴリで最先端っぽかったり、 そういうサイトを指す。 アワード系のサイトを見る AWWWARDS www.awwwards.com 大手。 レベルの高いサイトが多いのはもちろん、 メタスコ…

自作ライブラリなんか使うな!!!

どうにも、僕の周りには、 なんでも自作したがる人が多くて、 EventEmitterも、Throttleも、 果てはjQueryライクなライブラリまで、俺俺でやってる始末。 マジでやめてほしい。 なんで人と足並み揃えられないんだろう。 そんなちんけなライブラリ、自前で作…

CoffeeScriptを書くならCoffeeらしく書いて欲しいという思い

厳密等価(===) javascript if(a === b) coffeescript if a is b undefined javascript if(a !== undefined) coffeescript if a? 否定if javascript if(!a) coffeescript unless a 後置if javascript if(a) return; coffeescript return if a 即時関数 java…

git pull したときデフォルトで rebase するようにする

git config --global branch.autosetuprebase always

CSS calc ってこういうときに使えばいいのか

run scripts の タスクランナー

hystking/npm-run-build-task-runnergithub.com かいた

We Will All Be Game Programmers

面白いのでぜひ見てください。 状態と副作用について、ゲームからReactまで、なぜそれらが重要か、それらを安全に取り扱うにはどうするべきか、丁寧に説明しています。

gulp で livereload できる開発用サーバを立てる

gulp で開発用サーバを立てるには、gulp-connect とか、gulp-webserver とががあるんだけど、 ブラックリスト入りしていて、 gulp 的には 「入出力を伴わない処理をプラグインにすんじゃねーよバーカ」 ってことなんだと思う。 なんだか過激だなあと感じつつ…

最近よんだ漫画

あれよ星屑 超おもしろい あっち系の人が描く漫画は面白いという法則 クジラの子らは砂上に歌う 超好き 登場人物全員かわいい系殺戮SF、続きが気になる 魔法使いの嫁 超かわいい 人生達観系ヒロインすき ちーちゃんはちょっと足りない 超胸糞わるい ほんと救…

GLSLで指定位置をクロップした正規化座標

vec2 p = ( ( ( vec2(0., 画面高さ解像度) - gl_FragCoord.xy ) * vec2(-1. ,1.) - クロップオフセット ) * 2.0 - クロップ解像度 ) * vec2(1., -1.) / min(クロップ解像度.x, クロップ解像度.y);