タオルケット体操

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

プログラミング

どうしてスタートアップのソフトウェア設計はいつもいつもブッ壊れてるんですかぁ?

そんな皆さまの疑問にお答えします。 スタートアップのアーキテクチャがブッ壊れてるのってなんでェ? 先にざっくりまとめましょう。 巷でよく言及されるのはカネ、つまりは雇用するエンジニアの能力問題を元凶とする方が多いようです。 スタートアップの内…

コードの修正範囲は最小限に留めておくべきなのか?

一つの機能修正、バグ修正に対してコードをいじる範囲、つまりdiffの行数は常に最小であるべきなのか?というお題ですね。 無関係な場所を触りまくって肥大化したPull requestが論外なのは当然です。 そのせいでその挙動に影響があった範囲だけど少しだけい…

PROのためのスーパー型が付くReactフォームライブラリをつくった

GitHub - hachibeeDI/mayoiga hachibeedi.github.io つまりReactフォーム界のHANAMASAということ。 良い特徴、あるいはReact Hook Formとの違い 1. refに依存していない 自作するとわかるのですが、Formの状態管理(およびバリデーション)は素朴な実装だと…

異説 ぼくがかんがえた最強のフレームワーク

注意:本稿にはあまり一般的ではない(かもしれない)筆者の独自思想がふんだんに盛り込まれています。これを受けてどう考え、行動するのかは自己責任でよろしくおねがいします。 ソフトウェア開発に銀の弾丸なし、という言葉は広く市民権を得ています。多少…

型はみんなの心の中に存在しているんじゃない?

はじめに まずインターネットのお気持ち記事で「型がある」とか「型がない」とか言い始めたら、書き手がどういった意図でそのような言葉を選んだのか警戒しなければならない。 全部を語るとそれだけで5記事分くらいの分量になりそう*1なので割愛するが、世間…

実はDDDってしっくりこないんです

DDD失敗パターン集 DDDという方法論それ自体に対する僕の立場はあんま好きじゃない寄りのフラット(といいつつほぼ忘れかけている)なんですが、過去何度もDDDでプロジェクトが爆死するのをみたり、爆破してしまったり……というのを見てきたので供養したいと…

GoogleのTypeScript Style Guideについてのお気持ちスタンダード

なんか話題になってて、なんかおみこしwasshoiする流れになってたのでお気持ちを書き残したくなった。 先に結論 こういうのを作って公開するのは誉れある組織 ですが 内容的にはfor TypeScriptというよりはfor ES nextといった感じで、特に型周りに関する言…

NestJSちょびっとだけ触ってみた所感

ここ数年まともにサーバーサイドをやっていないなぁとかおもいつつなんやかんやあってNestJSを数日ほど触ったりドキュメントを読んだりしてたので初心を忘れないようにメモ。 いちおうTypeORMだけは出始めにちょっと使ってた。 理解度が高まったら気分が変わ…

Flutterでスケールするアプリ設計 Store編

hachibeechan.hateblo.jp 前回の続き そういえば、前回の記事のブコメで Behavior = TransactionScript? 実践CQRS という感じの元ネタばらし鋭い指摘をしてくれた方がいました。 90%方その通りなのですが、実装の平易さ、許容できるパターンの広さを優先する…

駆け出しプログラマーが効率よく成長するために必要なたった一つの習慣

動いたところで満足して終わりにしない はい。 書き上がったあとに何をするべきか あなたにチケットが割り振られているとする。 駆け出しの貴方にとってはどれも初めて実装するような機能ばかり、あれこれ試行錯誤してようやく動くようになったッッ……!!と…

Flutterでそこそこ規模の大きいプロダクションアプリを作ったのでスケールする設計についてまとめる

あわせて読みたい FlutterでBLoCだChangeNotifierと振り回されて消耗するまえに - タオルケット体操 筆者のFlutterに対する印象は半年前にこのエントリーを書いたときから驚くほどに何も変わっていないので、逆にFlutterは非常に明快でわかりやすいライブラ…

FlutterのRoutingを型安全に扱いたい!!

標準Routerのつらみ Flutter標準のRouterの仕組みと書き方はだいたいこんな感じです。 flutter.dev はい。つらいですね。 具体的にいうと 定義が単純な Map<String, WidgetBuilder> なので補完が効かない なのでタイポで全てが終わる なので後からrouterのkeyを変更するのが大変 引</string,>…

FlutterでBLoCだChangeNotifierと振り回されて消耗するまえに

追記 providerとかfreezedの作者が作ってる state_notifier が当エントリとほぼほぼ同じことをやっているので依存が増えることを気にしない人はそっち使ってもいいんじゃないかとおもいます。 みんなの心はひとつでした。 まえがき 先のエントリ BLoCにおけ…

BLoCにおけるリモートデータの状態遷移のパターンをくくりだす方法

Dart否定して終わりだとあもりにあわれ。 おれにこれしかなんだ! だから、これがいちばんいいんだ!というわけで現実と戦う方法を模索。 元ネタ: https://elmprogramming.com/remote-data.html ちなみにBLoCはすでにオワコン化しつつあるようなので新規で…

Flutter所感

諸事情によりしばらくFlutterでアプリ作って感じたことをいくつか。 良いところ 1. ちゃんと動く みなさんも今までに出ては消えていくiOS, Android両方で動くアプリ作れるよ系ソリューションで色々なお気持ちを発生させてきたかとおもいますが、Flutterの出…

TypeScriptで関数型プログラミングしたい勢に推したいPipeline operatorの良さ

前置き Rubyで一瞬だけ湧いて出てきて消えたPipeline風演算子については忘れてください。あれはメソッド呼び出しの演算子であって今回取り上げるPipeline operatorとは似て非なるものです。 JavaScripterでも、Ramda.jsやRxJSを普段から使っている人には既知…

TypeScriptで既存の関数の引数と返り値の型情報をコピーする方法

TypeScriptにはType infer in ConditionalTypeという便利機能があり、それを利用すると既存の型定義から柔軟に特定の方を取り出すことができます。 そして利用頻度が高そうなものについては組み込みの型定義がいくつか存在します。 関数の型定義から引数を取…

ReactにおけるBreadcrumb(パンくず)実装のパターン

もちろんケースバイケースなんだけど、パンくずリストというのは全体のレイアウトに属していながらマウントされる要素に従属して中身が変わるという点でちょっと厄介。 具体的にどういうケースで厄介かというと、ヘッダやサイドバーなどをまとめたpage layou…

You are gonna obviously need itの法則

YAGNIの原則 YAGNIの法則はご存知ですか。 You Ain’t Gonna Need It. の略で、アジャイルとかでよく言われる「いらんもん作るな」の原則ですね。 「これいるやろー」で前もって作りこまれた機能は10%しか使われないし時間の無駄だよね(10%の根拠はあるんか…

フロントエンドエンジニアをやっていくために本当に必要な技能

「俺はフロント開発者じゃない、ただフロントが得意で書く機会が多いだけなんだ」といいながら日々ジャバScriptの中でもがいています。 採用の面談に顔を出したりする機会ができてきたのでここら辺で一度言語化しておきたい。 勘なんですが、たぶん心の強さ…

React HooksとTypeScriptを使ったRedux再実装で理解度を深める試み しましょう

React Hooksでましたね。 これでクラスを使う必要がなくなってみんなハッピーです(公式で再三書かれてますが、既存のコードをHooksで書き直す必要性はないです)。 それはそうとして、useReducer という新しい仲間が増えました。 ちょっと前に追加されたCon…

「プログラミング教育が難しい」いくつかの要因

最近の波には乗り遅れたけど、これは定期的に議論が発生するトピックスな割にあまり整理して話してるものが見当たらないので僕なりの観点からまとめる。 なおこの記事では 学校教育 未経験者を雇う企業の新人研修 社員の平均レベルをあげたいイケイケ企業 な…

TypeScriptのモジュールをnpmで公開する方法

はい。わたしです。 こちらは 2018年の株式会社LOB Advent Calendar になります。 前回書いた 書いたコードはチャンスさえあればパッケージに切り出して公開すべき という記事はお気持ちしか書いてないポエムだったので、じゃあ実際どうやればいいんだよって…

書いたコードはチャンスさえあればパッケージに切り出して公開すべき

どうもTypeScriptおにいさんです。 こちらはLOB Advent Calendar 2018年の記事です。 前回はmojibakeo氏による TypeScript + React で i18n (国際化/多言語) 対応を楽して続けるためのアレコレ でした。 i18nには多くの苦しみがありますが、ECMAScriptはAST…

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

補足:2021年6月 結構昔に書いた記事ですが、今でもたまにアクセスがある(ありがとうございます)ようなので使命感に駆られて追記。 本編の冒頭にもあるように、これは2018年の記事です。なので色々と書いてますが、2021年の人間の立場からTypeScriptの導入…

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

今後必要になる言語はお前がどういうキャリアパスを辿りたいかによって変わる。以上。 場所によってはCもCOBOLもまだ現役だし、パチンコの制御基板はアセンブラだ(確か)。そもそもPythonだってそろそろ30年選手の言語なわけだ。その影で消えていった言語は…

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

コツは、なぜそのフレームワークが作られたのかについて触れることです。 だいたいはREADMEの一番頭とか、あるいは本人やコミッターのブログになんかに作者の思想とか、フレームワークのコンセプトについて書いてあります。 それらを読んだりしていると「な…

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

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

Windowsを開発環境化する試みのWork In Progress日記

なぜWindows MacBook高すぎ問題、macOSの劣化ぶりがヤバい問題、革ジャンGeforce GPU使いたくなったらどうすんだよ問題。 そして去年一年はLinuxを使って開発しており、iOS開発でもやらない限りは全くもって何の問題もないことがわかったのだけれども、ラッ…

GitHub時代のボトルネックとの解決策について (WEB+DB vol.102のペアプロ/モブプロ特集を読んで)

前回書いたコードレビューに関する記事の続きです。 色々なブコメがついていましたが、僕が感じてたもやもやに共感するようなコメントが結構あったのでちょっと安心しました。ひとりじゃなかったんや……! さて、そのブコメのひとつで筆者の一人であるt_wada…