タグ

ブックマーク / jinjor-labo.hatenablog.com (4)

  • 10000行超のElmを書いて見つけたベストプラクティス - ジンジャー研究室

    この記事はElm Advent Calendar 2016 の4日目です。 会社で書かせてもらってるElm製アプリが10000行を超えたので、現時点で個人的にこれはと思うベストプラクティスを実際のソース付きで書いてみる。 github.com (アプリについての情報は機会があれば) 1.必ずスタイルガイドに従う 行数が増える傾向にあるが、かなり読みやすくなるので絶対に従った方が良い。 Style Guide 関連コミット (let...in中に空行を挿入している) 2.データ構造にタプルを使わない 例えばマウスの位置などをタプルで(Int, Int)のように書きたくなる。しかし後悔するのでやめた方が良い。 -- 微妙 calculateX : Model -> Int calculateX model = let (x, y) = model.position in max 0 x --

    10000行超のElmを書いて見つけたベストプラクティス - ジンジャー研究室
    upamune
    upamune 2017/09/09
  • Elm のコンポーネント論争とは何か - ジンジャー研究室

    Elm 界隈で「コンポーネントをどう作るべきか」みたいな話がよく出る。日に限った話ではなくメーリングリストとか Slack でも頻出の話題で、その度に熟練者が説明するのだが、すんなり理解されることもあれば喧嘩になることもある。 ちょうど昨日 Twitter で盛り上がってたので、可能な限りわかりやすく現状を説明してみる。 @nobkz @m2ym (言っている意味が分かってしまった…多分かつての推しアーキテクチャで今は基的に避けるべきだけど場合によってはやっても良い的な位置付けのやつです…割り込み失礼)— Yosuke Torii / ジンジャー (@jinjor) 2017年5月11日 TL;DR 出来る限りコンポーネントを作らずにビューの関数で済まそう。 コンポーネントとは何か 最初に言ってしまうと、 Elm にはいわゆる「コンポーネント」という画期的なシステムはない。ただ関数があ

    upamune
    upamune 2017/09/09
  • 再利用可能なコンポーネントはアンチパターン - ジンジャー研究室

    言いたいこと Webフロントエンド界隈で「コンポーネント」という言葉が蔓延していて、「再利用可能になるように設計すべきだ」という論調があるが、実際には当に再利用可能である必要性があるまで、極力考えないほうが良い。YAGNIとも言う。 以下、現時点での考え。 ビューの階層化自体はOK ここはReactの恩恵と言っても良い気がしていて、それまであんまり明言されて来なかった「ビューの階層化」について公式で説明している点がとても良くて、開発者全員がビューはツリーになってるよねというマインドで統一できた功績は大きいと思う。 再利用可能なコンポーネント ビューはツリーでいいんだけど、それをコンポーネントと呼んでいるのでなんとなくDatePickerとかTextEditorみたいな汎用的なものを想像して、「アプリケーションの事情を知っていてはいけない」という気持ちになって疎結合に作りたくなってしまう。

    再利用可能なコンポーネントはアンチパターン - ジンジャー研究室
  • TOEICのリスニングCDを分割するWebアプリを作った - ジンジャー研究室

    TOEICのリスニング問題集をやっていて「ムキーッ!」となることありませんか? 私は2つほどあります。1つは「ひとつの問題を繰り返して聞きたいのにファイルが分かれていない」こと、もう1つは「何を言ってるのかさっぱり分からない」ことです。そこで今回、1つめの問題を解決すべく、CD音源を複数の問題別に分割するWebアプリを作りました。 Wave Cutter for TOEIC®(Source) Chrome、Firefox、Edgeで動作確認済みですので、ぜひ遊んでみてください。 使い方 MP3ファイルを読ませると自動的に空白を判断して分割します 自動分割で上手くいかなかったところを手動で調整します 完了ボタンを押すとZIPファイルが手に入ります 2に関しては、出力予定のファイル名(左側)と波形データの内容(右側)を一致させるゲームだと思うと手っ取り早いです。 主な機能 波形の削除、分割、結

    TOEICのリスニングCDを分割するWebアプリを作った - ジンジャー研究室
    upamune
    upamune 2015/12/29
  • 1