タオルケット体操

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

TypeScriptを導入する前に『覚悟』したほうが良いこと 4項目

補足:2021年6月

結構昔に書いた記事ですが、今でもたまにアクセスがある(ありがとうございます)ようなので使命感に駆られて追記。

本編の冒頭にもあるように、これは2018年の記事です。なので色々と書いてますが、2021年の人間の立場からTypeScriptの導入について申すのであれば一言です。

使いましょう。
もはや「TypeScriptを使う理由」とか言ってる時代はとっくの昔に終わっています(Elmとかそういう、他の型付きAltを使いたいなら別ですが)。

もちろんstrict mode一択ですからね。
当時は採用云々とか書いてましたが、逆にいまTypeScript書けるかどうかってのはフロントエンドエンジニア採用の足切りラインとしてちょうどいいくらい(書けるってのが程度かにもよりますけど)だとおもいます。
好き嫌いはともかく、TypeScriptを使えないエンジニアを雇ってもフロントエンドの頭数に入れることはできません。

以上!

本編

こちらは株式会社LOBの2018年アドベンドカレンダーの内容としてお送りしてます。

前回はLOBのCTOによる 大規模プロジェクトの管理画面を育てるために TypeScript + React を選んだ理由 でした。

フロントエンドの技術選定に関わる話題、ということで僕からは「なんかいまTypeScriptめっちゃ流行ってるらしいけど導入して大丈夫なん?」みたいに迷っている人向けに考慮すべきことを書くことにしました。

楽 ≠ 簡単

まず僕個人の感想ですが、今後は何か特別な理由がない限りはフロントエンドをTypeScript以外で書くことはないとおもいます。
なぜならTypeScriptで書いた方が圧倒的に楽だからです。

続きを読む

Niz Atom66をiPad Pro用の最強キーボードとして認定します

ユーザーが本当に欲しかったものことiPad Pro第三世代ですが、とうとう買ってしまいました。   「1TBモデルのみメモリが6GB」という意味のわからない仕様については正直「Appleのエンジニアはもしかしてメモリとストレージの区別がついていないんじゃないだろうか…」と不安になったものですが、今のところ動作に支障はないしまぁ大丈夫だろうということで無視することにしました。もやもやするけど。

さてiPad Proといえばデフォルトではキーボードが付属していません。そして純正のキーボードとしてはSmartkeyboard Folioがありますが、これがキーボードとしては中途半端な製品な割にはクソ高い(2万円以上する)ということでもっぱらの話題です。   iPad Proには文字入力デバイスとして使うにあたってはまだいくつか問題点のある製品ではあります。
例えばCocoaキーバインドがMacと比べると貧弱です。まぁ貧弱なだけで限定的には使えるのですが。とはいえプレーンな状態でのiPad Proのテキスト入力の快適さはWindowsよりは100倍マシなので、十分現実的なスペックだと言っていいでしょう。ちなみに今のこの日記は99%をiPadProで書いてWindowsで手直ししています。

続きを読む

今後必要になる言語や大統一言語や学習効率についてのあれこれ

今後必要になる言語はお前がどういうキャリアパスを辿りたいかによって変わる。以上。
場所によってはCもCOBOLもまだ現役だし、パチンコの制御基板はアセンブラだ(確か)。そもそもPythonだってそろそろ30年選手の言語なわけだ。その影で消えていった言語は無数にあるが、優劣だけが原因で消えたわけではない。未来を予想できる人間はさっさと投資家にでもなったほうがいい。

続きを読む

World War 3がめちゃくちゃ面白い現代戦FPSなのでみんな投資しような

store.steampowered.com

BFのような広いフィールド & 戦車などの兵器。
R6Sのようなリコイルコントロールや室内戦。 細かすぎる武器カスタマイズ。

ぼくのかんがえたさいきょうのFPS。 それがWorld War 3。

発売2日で10万本売れたらしいが、それはつまり我々の体が現代戦を求めているから。軟弱なポリコレに染まった挙げ句、発売日を延期し、バトロワモードの実装は春だよ~~などとなめきった行為を連発しているEAに愛想をつかした戦士たちはインディーズゲームの荒野へと足を踏み入れる。
なお発売後しばらくはローディング地獄問題などで大炎上して返金騒ぎが起きたが今は解消しており、マッチングは非常に快適。

創設者インタビュー

fpsjp.net

WW3の良いところ

続きを読む

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

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

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

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

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

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

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

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

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

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

まとめ

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

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

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

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

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