タグ

ブックマーク / mizchi.hatenablog.com (16)

  • 俺の webpack.config.js-20200503 - mizchi's blog

    思想 とにかく薄く。必要なものだけ。基は ts-loader を transpileOnly: true で使うだけ。最悪これだけでいい。型チェックはIDEか yarn tsc -p . --noEmit でやる。 CRA や parcel は使わない。暗黙な振る舞いが多すぎるので。一切勉強したくない人はいれていいと思うが、その場合 eject しない、dist ディレクトリをそのまま使うこと前提。 style-loader/css-loader は外部CSSを読むときに設定する worker-plugin はなくてもいいけど、 worker もビルドしたいことが多いので、入れていることが多い html-webpack-plugin と webpack-dev-server 組み合わせると、他と組み合わせずに完結して動く。このHTML番で使わずとも、デバッグで使ってることが多いの

    俺の webpack.config.js-20200503 - mizchi's blog
  • 2020 年、 React 軸で学ぶべき技術 - mizchi's blog

    なぜ仮想 DOM という概念が俺達の魂を震えさせるのか - Qiita から 5 年経ち、 仮想 DOM を備えた React やそれを採用した Vue や他のライブラリも市民権を得たように思います。 有用な技術が市民権を得る、というのはエコシステムが花開くことでもあります。新しいプロダクトを作る際の技術選定において、 TypeScript + React が常に正解というわけではないですが、このスタックはかなり強力だという手応えがあります。 このスタックは得意のウェブフロントエンドは勿論、それ以外もとりあえず 80 点ぐらいの品質でプロトタイピングできる、というようなエコシステムになってきたような肌感があります。 モダンフロントエンドだと TypeScriptWebpack は採用しているのを前提として、記事では React を軸にその技術を活かすために、次の 6 個の技術を紹介

    2020 年、 React 軸で学ぶべき技術 - mizchi's blog
  • フロントエンドの開発環境に Docker は不要(少なくともMacでは) - mizchi's blog

    追記: 前提部分 開発環境を docker-compose で抽象することが最近のベストプラクティスだとされているが、フロントエンドをコンテナに突っ込むと無視できないIOボトルネックが発生する。 とくにwebpackのファイル監視からのビルドで発生する高頻度のIO処理を捌くために、フロントエンドだけはホスト環境に移したほうがいい、という主張。 これについて speakerdeck.com 自分の意見 Web開発者の主要な開発環境である Docker for Mac は I/O がとにかく遅い (3x~5x) data volume の driver やら cache を工夫しても遅い npm install/webpack は 基的に I/O ヘヴィー とくに大規模開発時の watch => build がクリティカル webpack.conifg の entry で自分が関与する部分以

    フロントエンドの開発環境に Docker は不要(少なくともMacでは) - mizchi's blog
    lizy
    lizy 2019/04/08
    フロント・サーバ両方docker-composeで作ってるけど、フロント側のビルドだけローカルにするのもありか
  • 実践: React Hooks - mizchi's blog

    hooks が発表されてから趣味でも現場でもずっと hooks を使っています。おかげでだいぶこなれてきて、だいたいなんのライフサイクルでも表現できるようになってきました。 最初は単に useState が state を、 useEffect が componentDidMount/componentDidUpdate を置き換えるもの、と説明を済ますつもりでしたが、 useEffect についてはライフサイクルのモデルがぜんぜん違うので、別の説明をする必要があるように感じていました。 で、その結果 React Hooks を理解するには、関数のメモ化を理解するのが最も簡単だと思ったので、その説明をしつつ、イディオムを解説していこうと思います。 最初に: React Hooks は何であり、何ではないか 関数コンポーネントが状態を持てるようにするもので、関数のメモ化のテクニックを多用しま

    実践: React Hooks - mizchi's blog
  • Webpack の考え方について - mizchi's blog

    なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - from 健人 井関 www.slideshare.net この記事バズってたけど、わからない人がよりわからなくなる、という点で問題だと思っていて、webpack の目的の質的な部分から整理する必要があると思います。 (あと友人webpack に挑戦していたので入門資料も兼ねてる) Webpack質的な部分は次の3つです。それ以外は全部おまけ機能だと思ってよいです。 ES Modules のエミュレート node_modules のリンカ 拡張子ごとの変形 Webpack当にやりたいこと こういうコードがあるとします。 // src/a.js export default () => console.log('hello'); // src/in

    Webpack の考え方について - mizchi's blog
  • Redux 再考 - mizchi's blog

    今まで自分で作ったものが十数個、仕事で5社ぐらいの redux を見てきたので、その結果思うところを書く。 前提として、自分はエコシステムに乗るという意味で今では redux 肯定派だが、redux それ自身が過剰に抱えている複雑さはもっと分解されるべきだ、という立場。 Redux がうまく設計されているとどうなるか 一貫した一つの設計論に従うので、考えることがなくなる 難しさが廃されるのではなく、難しい部分が一箇所に集中する。React Component の末端では、何も考えることがなくなる。状態管理という難しい部分を作る人と、末端のコンポーネントのデザインに注力する人を分けられる。 大規模になっても設計が破綻しにくい、というエンタープライズ向きな特性を持つ。が、その技術基盤は(静的)関数型由来の考えが多く、基礎設計や基盤理解にはハイスキルが要求され、需要と適用対象のミスマッチを感じる

    Redux 再考 - mizchi's blog
  • 最近のフロントエンドのエディタ事情 - mizchi's blog

    これは、個人でどんなエディタを使うべきか、ではなく、「チームとして」新しいものを採用するとき、あるツールがエディタ横断で便利かどうかを考える必要がある。 自分個人としては、基はAtomを使って、TypeScriptを書くときだけVS Code を使っている。ターミナルでは Vim。 環境でエディタを選ぶ 最近の新規プロジェクトでは、とくにブロッカーがなければ TypeScript を使っていいと思う。TypeScript を使うなら当然 VS Code を使うことになる。Atom や Vim でもいいが、TypeScriptのエディタとしては、流石に完成度が頭一つ抜けてる。JavaならJetBrains 的なノリで、TSならVSCode、そういうものと思ったほうが楽。 TS以外なら、エディタはなんでもいいが、ある程度流行ってるものでないとエコシステムに追いついてくれない。 prettie

    最近のフロントエンドのエディタ事情 - mizchi's blog
    lizy
    lizy 2018/06/01
    SublimeTextにMS謹製のTypeScriptパッケージを入れればまだ戦える…はず……
  • クライアントサイドのモデルとは何か 前編 ~ クライアントサイド MVC の死 - mizchi's blog

    前置き この記事、来は Flux には Model がないのではないかと思った覚書 - ナカザンドットネット と Flux の Store が ViewModel かって話からの MVW とかどうでもいいって話 - 型の蓄音機は 1 分間に 45 回にゃあと鳴く のアンサーとして書き始めた記事だが、前置きだけで別テーマとなったので、前後編に分割する。 僕は元々がゲームクライアント屋だったときの発想を引きずってるのと、既存の Web の開発の文脈に対して距離を置いていることを明言しておく。あとこういうテーマでとある原稿書いていたので、頭の整理も兼ねて。 ActiveRecord の功罪を振り返る このテーマを語るにあたって、まず Rails の MVC について述べなければならない。なぜなら、フロントエンドのアーキテクチャとは、サーバーサイドの MVC の模倣に始まり、破綻し、結果として

    クライアントサイドのモデルとは何か 前編 ~ クライアントサイド MVC の死 - mizchi's blog
    lizy
    lizy 2018/05/15
    フロントエンドが厚くなってきたことによって、サーバサイドMVC(MVC2)から、GUIアプリ向けMVxを再考する必要がある、ということなのかな
  • キャッシュフレンドリーなステートレスアプリケーション設計について考える #CDN_Study - mizchi's blog

    CDN_Study という勉強にいってきた。 https://http2study.connpass.com/event/81469/ そこで、Akamaiの方が、「個人の意見だけど、アプリケーション側がもっと基礎設計でステートレスでキャッシュフレンドリーな設計になってないといけないよね」という旨の発言をしていて、最近そのことにアプリケーションエンジニアとして同じようなことを考えていたので、書き出してみる。 SPAとかSSRとかフロントの不毛な話は出さないようにしてるが、主にサーバレス環境を意識している。 前提 世の中のアプリケーション内のモジュールは、Statefull or Stateless に分類でき、それをツリー状に表現できれば差分検知できる、という React の仮想 DOM 的な世界観が自分にある 以下の話は、基的には Fastly のサロゲートペアーとそのためのミドルウェ

    キャッシュフレンドリーなステートレスアプリケーション設計について考える #CDN_Study - mizchi's blog
  • さよなら CoffeeScript - mizchi's blog

    prototype.js が jQuery に置き換えられた時、開発者が気づいたのは、自分に当に必要だったのはprototypeのメソッド拡張などではなく、クエリエンジンだったということ。 coffeescriptが当初、熱狂的に支持された背景はなんだっただろう。今思えば、それはアロー記法とクラス構文だったと思う。 javascriptの関数型への憧れ、prototypeベースの限界 javascript は断じて関数型言語ではないが、他の言語と同じぐらい関数型言語に憧れていたのも、また事実だろう。しかしビルトイン関数が高階関数を要求するデザインにしては function というキーワードはながすぎたし、その function が暗黙に作り出す this スコープの複雑な振る舞いも開発者の悩みの種だった。「あらゆる関数スコープで状態を持つことが"できすぎる"」という割れ窓だった。 ES5

    さよなら CoffeeScript - mizchi's blog
  • あなたがReactを使うべき理由 - mizchi's blog

    最近フロントエンドでfacebook/reactをずっと使っている。世界的には一部のエンジニアの間で流行っているのだが、国内だとqiitaのタグ等を見てもどうも少ない。みんなもっと使うべきだと思うので、宣伝かねて意見をまとめてみる。 複雑化するデータバインドに対する懸念 MVWのVに対して思いを馳せると、だいたい次のことに行き着く。すなわち、「ある構造体の入力に対して、必ず一意なビューを生成したい」 {items: [1, 2, 3]} を入力とすると、 1, 2, 3のli要素になってほしい。これは単純な例だから問題に成り得ないように見えるが、アプリケーション全体の状態を一つのjsonとして定義し、 そこから常に0から組み立てればアプリケーションの健全性が確保できると考えたことはないだろうか? 現実の問題 UIのだいたいの状態は遷移で表現される。遷移の差分をプログラマが記述する。jQue

    あなたがReactを使うべき理由 - mizchi's blog
  • 小さいライブラリを採用する - mizchi's blog

    僕がJavaScriptでライブラリを選定する際、迷ったら小さいものを使う。その理由について。 前提 前提として、枯れた環境で大きいフレームワークができるのは理解できるし、メリットも大きい。あるいは言語それ自身と区別できないぐらいに発達したフレームワークに依存するのも理解できる。RubyにとってのRailsとか、ErlangのOTPとか(いや、これは詳しくないけどそうなんだろうなっていう予想なんだけど)。 危険信号 今のJS界隈は動きが早すぎて、何に依存するのも危ない。とくにフレームワークと銘打たれたものは、でかすぎてどれも危険信号を放っている。 数年後、廃れてしまったフレームワークで開発し続けるのは、僕個人としてもあまり関わりたくないし、現場の離職リスクとして数字に出るだろうし、採用後の教育コストの問題になる。だいたいそういうものは元の設計者もいなくなるものだ。プロダクトの死を意味する。

    小さいライブラリを採用する - mizchi's blog
  • Angularが嫌い - mizchi's blog

    僕は当にAngularが嫌いで、もはや許せないレベルに達していて、今ではもう当に使いたくない。 イカ理由。 APIがほんっっっっっとうに糞 趣味の問題といえばそうでもあるが僕は糞だと思う 実装が黒魔術 良識あるJSエンジニアなら Function.prototype.toString() しない 実際に一部のクロージャが破壊されてて挙動が直感に反する DirtyCheckの実装、表面的にもDirtyな挙動として現れるのでデータバインドとして何も嬉しくない Googleだから許される、みたいなコミュニティの驕りが当に嫌 Angularの都合だけでChromeでObject.observeを前倒しするのやめろ Angularの内部モジュール同士が密結合 DI, module, factory, それぞれ大きなテーマなのに密結合 使いはじめるとAngularをやめることが困難 パフォーマン

    Angularが嫌い - mizchi's blog
  • altjs武闘会で得られた知見 あるいはTypedCoffeeScriptの進捗と、TypeScriptリファレンスについて - mizchi's blog

    vvakameさんに誘われて、どのAltjsが最強か殴りあう会合に参加してきた。 当日の資料やどんな様子だったかはこちら。 天下一altJS武闘会 - 資料一覧 - connpass 天下一altJS武闘会 - Togetterまとめ で、TypedCoffeeScriptについて発表してきた。自分の発表資料はこれ。 基的な思想とコードを載せてるので、TypedCoffeeScript気になる人はここに載ってるとおりに遊んだらいいと思う。 小学生並みの感想 遅刻しました(完) 自分の発表は淡々としすぎてたのでもっとネタに走ればよかった。でも Altjsのモチベーションは型システムへ ぶっちゃけ構文拡張程度のAltjsはもう皆飽きてて、coffeeでお腹いっぱい感があった。動的型付けのaltjsは、他の動的型付け言語の変換ぐらいしかもう目がないような気がする。 で、後半のパネルディスカッシ

    altjs武闘会で得られた知見 あるいはTypedCoffeeScriptの進捗と、TypeScriptリファレンスについて - mizchi's blog
  • s3cmdとRoute53で静的サイトをデプロイする手順メモ - mizchi's blog

    クレカの類が復活したので、ドメイン買い直してAWSが使えるようにした。 そんでJSで作った類のアプリを静的サイトとしてホスティングしたいなーと思い、s3でサブドメインにホスティングできるまでの作業メモを残す。 ググッて出る情報が色々古くて苦労した。 アカウント登録 クラウドコンピューティング なら アマゾン ウェブ サービス | 仮想サーバー、ストレージ、データベースのための Amazon のクラウドプラットフォーム(AWS語) から登録。 クレカ認証と電話番号での自動入力の確認の2段階がある。 次に、クライアントから扱えるように https://console.aws.amazon.com/iam/ でアクセスキーを生成。メニューから AccessKeys -> Create Access Keys を選択。rootkey.csvをダウンロードさせられる。ダウンロードした root

  • TypedCoffeeScriptに構造体宣言と関数型を追加した - mizchi's blog

    [注意] まだまだ全然使いものにならないよ! プロジェクト名をリネームした mizchi/TypedCoffeeScript https://github.com/mizchi/TypedCoffeeScript 構造体と関数リテラルを追加した。今は次のコードが通る。 struct Point { x :: Number y :: Number } p :: Point = {x: 3, y: 3} f :: Number -> Number = (n :: Number) :: Number -> n * n console.log f 4 f の関数型のところはわざと冗長に書いている。正直、型アノテーションを通すパーサが書けただけで推論は全然完璧ではない。 宣言済みのプロパティに代入しようとした瞬間だけバリデーションしている。関数型も返り値が一致しないと代入できないようにはなってる。引

    TypedCoffeeScriptに構造体宣言と関数型を追加した - mizchi's blog
  • 1