タグ

2021年1月26日のブックマーク (25件)

  • TypeScriptの導入にあたって考慮すべきメリットとコスト

    皆さんこんにちは。京都開発室のLinです。仕事と個人的なプロジェクトTypeScriptによる開発を始めて約2年が経ちましたので、 TypeScript導入時の経験を皆さんにお話ししたいと思います。 近年、TypeScriptフロントエンド分野で最も注目を集める技術となっています。The State of JavaScriptの資料によれば、TypeScriptの使用を選択する開発者は増加を続けており、その評価も肯定的なものが多いようです。 「次のプロジェクトではTypeScriptにより開発を行うべきだ」「今あるJavaScriptプロジェクトTypeScript仕様に変更すれば、プロジェクト品質の向上につながる」と考えているチームは数多くあるでしょう。 しかしながら、TypeScript導入のコストおよびメリットについては、極めて慎重に評価を行う必要があると、私は考えています。

  • GitHub - twitter/TwitterTextEditor: A standalone, flexible API that provides a full-featured rich text editor for iOS applications.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - twitter/TwitterTextEditor: A standalone, flexible API that provides a full-featured rich text editor for iOS applications.
  • Rails のサービスクラスでのマイルールとちょっとしたコツ - Qiita

    動機 Railsにおけるサービスクラスのオリジナルルール という記事をたまたま見つけ、「自分ならこう書くかな」と感じたことがいくつかあったので、記事にしてみました。 なお の参考記事の中でさらに参考にされている 肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳) という記事のコードを、この記事でも説明のために用いようと思います。そこで、以下は 2 つの記事をこのように呼称します。 参考記事 1: Railsにおけるサービスクラスのオリジナルルール 参考記事 2: 肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳) さらに翻訳元の記事: 7 Patterns to Refactor Fat ActiveRecord Models ルール 1. クラス名は「動詞 (+ 目的語)」にする 参考記事 1 のものとほぼ同じルールです。末尾に

    Rails のサービスクラスでのマイルールとちょっとしたコツ - Qiita
    fuyu77
    fuyu77 2021/01/26
  • Railsにおけるサービスクラスのオリジナルルール - Qiita

    サービスクラスとは? Railsではビジネスロジックはモデルに実装するのが通説ですが、その原則に従うと、すぐにモデルが肥大してしまいます(いわゆる「Fat Model」)。 そこで肥大化したActiveRecordモデルをリファクタリングする7つの方法で紹介されているように、モデル以外にロジックを分離していきます。 特に「サービス」が便利で、ある一つの単位の機能をまとめて実装します。 オリジナル実装ルール サービスクラスは以下のルールで実装すると、綺麗に実装できると思います。 クラス名には動詞と目的語と「Service」を付ける 引数は出来る限りnewで渡してインスタンス化する 1つのサービスにpublicなメソッドは、原則1つにする 初期化したインスタンスはprivateのattr_readerで呼ぶ 切り分けたメソッドは全てprivateなgetterメソッドとして実装する 実際のコー

    Railsにおけるサービスクラスのオリジナルルール - Qiita
    fuyu77
    fuyu77 2021/01/26
  • コマンド(Command) | Ruby デザインパターン

    GoFのデザインパターン(Design Pattern)のコマンド(Command)のRubyコードを使った紹介記事です。 コマンドデザインパターンは、あるオブジェクトに対してコマンドを送ることでそのオブジェクトのメソッドを呼び出すことです。 たとえば、ファイルシステムの実装は知らなくてもユーザーはファイルの追加、削除といったコマンドを実行できます。これもコマンドパターンのひとつです。 🍮 コマンドの構成要素コマンドの構成要素は、シンプルに2つです。 Command(コマンド):コマンドのインターフェイス ConcreteCommand(具体コマンド):Commandの具体的な処理 🍣 コマンドのメリット コマンドの変更・追加・削除に対して柔軟になる 🎳 ソースコードコマンドデザインパターンを説明するために、ファイルの作成・削除・コピーができるモデルを考えます。 Commandクラス

    コマンド(Command) | Ruby デザインパターン
    fuyu77
    fuyu77 2021/01/26
  • 【Rubyによるデザインパターンまとめ6】コマンドパターン - 銀行員からのRailsエンジニア

    コードの品質向上のため、Rubyでデザインパターンを解説した名著である Rubyによるデザインパターン で紹介されているデザインパターンを1つずつまとめており、今回が第6弾です。(毎週1つが目標です!) 前回の記事(イテレータパターンのまとめ)はこちらです。 ysk-pro.hatenablog.com こので紹介されているサンプルコードをそのまま使うのは面白くないので、オリジナルのコードで説明しています。 今回は コマンド(Command)パターン についてまとめました。 コマンドパターンとは サンプルコード ストラテジーパターンとの違い おわりに コマンドパターンとは 処理の内容をオブジェクトに閉じ込めて、実行する際はそのオブジェクトのメソッドを呼び出すパターンです。 処理の内容が書いたオブジェクトのことを、命令という意味の「コマンド」と呼んでいます。 これにより複数のコマンドをキュ

    【Rubyによるデザインパターンまとめ6】コマンドパターン - 銀行員からのRailsエンジニア
    fuyu77
    fuyu77 2021/01/26
  • RailsのService層とうまく付き合うにはどうすればいいのか調べてみた - カレーの恩返し

    RailsのService層ってどう使っていくのがいいんだろうね?」って聞かれたときにすぐ答えられなかったのでまとめておきたいと思います。 ※ Fat Modelの解決策としてTrailblazerが最近よく話題に上がりますが、私がまだ使ったことがないので触れない方向で行きます。 情報を漁る まずは「Rails service」とググって検索して引っかかった記事を読みました。 techracho.bpsinc.jp アクションが複雑になる場合 (決算期の終わりに帳簿をクローズする、など) → 複雑な処理をmodelから分離させたい アクションが複数のモデルにわたって動作する場合 (eコマースの購入でOrder, CreditCard, Customer を使用する、など) → どのmodelに書けばいいのかよく分からないのでとりあえずserviceに書いとけ感ある アクションから外部サー

    RailsのService層とうまく付き合うにはどうすればいいのか調べてみた - カレーの恩返し
    fuyu77
    fuyu77 2021/01/26
  • 俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita

    ちなみに、最初に結論だけ言っておくと、まずSandi Metzの「オブジェクト指向設計実践ガイド」を読め、という話です それだけで終わってしまいたい気持ちはあるが、不親切過ぎるしもうちょっとRails向けの話を書こうと思う。 ただ言いたいことは、よく分かってないのに使うのは止めろということ。 自分もで書いたりした手前、それが参考にされた結果なのかもしれないが、世の中には当に酷いクラスが存在するもので、雑にサンプルで書くと以下の様な感じのコードが存在したりする。 class HogehogeService # Hogehogeはモデル名まんま def process(hogehoge, option_a: nil, option_b: nil, option_c: false) history = hogehoge.histories.last unless hogehoge.activ

    俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita
  • クリーンアーキテクチャ完全に理解した

    clean_architecture.md 2020/5/31追記: 自分用のメモに書いていたつもりだったのですが、たくさんのスターを頂けてとても嬉しいです。 と同時に、書きかけで中途半端な状態のドキュメントをご覧いただくことになっており、大変心苦しく思っています。 このドキュメントを完成させるために、今後以下のような更新を予定しています。 TODO部分を埋める 書籍を基にした理論・原則パートと、実装例パートを分割 現在は4層のレイヤそれぞれごとに原則の確認→実装時の課題リスト→実装例という構成ですが、同じリポジトリへの言及箇所がバラバラになってしまう問題がありました。更新後は、実装時の課題リストを全て洗い出した後にまとめて実装を確認する構成とする予定です。 2021/1/22追記: パートの分割と、クリーンアーキテクチャという概念の定義について追記を行いました。大部分の実装例パートを中心

    クリーンアーキテクチャ完全に理解した
    fuyu77
    fuyu77 2021/01/26
  • みんなRailsのSTIを誤解してないか!? - Qiita

    な、なるほど...!? いや、みんなちょっと誤解してるんじゃないか? よーし、お父さん、みんながSTIを使いたくなるようにちょっと頑張っちゃうぞ! STIとは STIは、単一の継承階層に所属するクラス群を、ただひとつのテーブルを使って永続化する手法です。 PofEAA Railsのドキュメントを漁ると、次のような記述が見つかります。 http://api.rubyonrails.org/classes/ActiveRecord/Inheritance.html Note, all the attributes for all the cases are kept in the same table. Read more: www.martinfowler.com/eaaCatalog/singleTableInheritance.html このリンク先は、リファクタリングで有名なMarti

    みんなRailsのSTIを誤解してないか!? - Qiita
    fuyu77
    fuyu77 2021/01/26
  • 境界づけられたコンテキスト 概念編 - ドメイン駆動設計用語解説 [DDD] - little hands' lab

    境界づけられたコンテキストとは 公式DDD Referenceの定義は以下の通りです。(和訳はだいぶ意訳しています) bounded context A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable. 境界づけられたコンテキスト 特定のモデルを定義・適用する境界を明示的に示したもの。 代表的な境界の例は、サブシステムやチームなど。 まぁなかなかよくわからないですよね。DDD用語の中でもかなり難解なワードです。 境界づけられたコンテキストは、2つの観点から解説が必要でしょう。 ・概念としての境界づけられたコンテキスト ・境界づけられたコンテキストをどう実装に

    境界づけられたコンテキスト 概念編 - ドメイン駆動設計用語解説 [DDD] - little hands' lab
    fuyu77
    fuyu77 2021/01/26
  • 境界づけられたコンテキスト 概念編 - ドメイン駆動設計用語解説 - Qiita

    境界付けられたコンテキストとは 公式DDD Referenceの定義は以下の通りです。(和訳はだいぶ意訳しています) bounded context A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable. 境界付けられたコンテキスト 特定のモデルを定義・適用する境界を明示的に示したもの。 代表的な境界の例は、サブシステムやチームなど。 まぁなかなかよくわからないですよね。DDD用語の中でもかなり難解なワードです。 境界付けられたコンテキストは、2つの観点から解説が必要でしょう。 ・概念としての境界付けられたコンテキスト ・境界付けられたコンテキストをどう実装に

    境界づけられたコンテキスト 概念編 - ドメイン駆動設計用語解説 - Qiita
    fuyu77
    fuyu77 2021/01/26
  • マイクロサービス時代に捧ぐ、Railsでの中規模APIサーバ開発のための技術構成 - Qiita

    初めまして、qsona (tw) と申します。Ruby on Rails Advent Calendar 2016 6日目の記事になります。 Rails歴は10ヶ月で、もちろんAdvent Calendarへの参戦も初です。 全体的に生意気な内容と思いますが、 じゃんじゃんマサカリ投げてください お手柔らかにお願いします。 はじめに 環境 JSONを返すAPIで、データベースはRDBを想定してます。 あんまり関係ないですが一応、Rails5 (api mode) + MySQLを想定しています。 マイクロサービスとしてのバックエンドに使う技術スタックの必要な要件 マイクロサービスの良いところは、サービスごとに合った別々の技術が使えるということです。 とはいえ、一般的な組織であれば、学習コストの面などから、ファーストチョイスとなる言語があり、普通の要件に対してはその言語を使う、ということにな

    マイクロサービス時代に捧ぐ、Railsでの中規模APIサーバ開発のための技術構成 - Qiita
    fuyu77
    fuyu77 2021/01/26
  • Service Objectがアンチパターンである理由とよりよい代替手段(翻訳)|TechRacho by BPS株式会社

    近年、RailsアプリにService Objectを追加するメリットを説く記事が次から次へと量産されています。私は記事において、それがなぜ正しくないかを述べたいと思う次第であります。もっとよい方法はあるのです。 私はこれまで、Service Objectに関するネット上の議論にときおり参加しては、問題に対するまっとうな解決方法としてService Objectが正しくない理由について繰り返し見解を述べてきました。実際、私は多くの場合においてService Objectよりもっとよい解決方法があると考えるのみならず、Service Objectはオブジェクト指向設計原則への配慮が損なわれている兆候を示すアンチパターンとして取り扱っています。 このような深遠なポイントを細切れのツイートやコメント欄を追って理解するのは大変です。そこで私は、私の見解を正確に表すいくつかの現実的なコードを詳しく

    Service Objectがアンチパターンである理由とよりよい代替手段(翻訳)|TechRacho by BPS株式会社
    fuyu77
    fuyu77 2021/01/26
  • RailsでDDD - Qiita

    別のアプローチによる実装の記事を書きました。 よろしければこちらもご覧ください。 「かんばん」を、DDDで設計しRailsで実装してみました。 kanban_core_extension 現時点では、最小限の機能しかありませんが ドメイン駆動設計をRailsで実装する際の一例として参考になれば幸いです。 アプリケーションの機能 開発するフィーチャ(タスク)をカードで表現し、進捗状況をかんばんボードで可視化する カードを次のフェーズ(進捗の区切り)に進める時にWIP制限をチェックする アーキテクチャスタイル Event SourcingなしのCQRSです。 変更(Command)の時だけドメインモデルを使います。 問い合わせ(Query)では、必要なデータをデータベースから直接取得します。 リポジトリからドメインモデルを取得することはしません。 取得したデータは構造化されたオブジェクトですが

    RailsでDDD - Qiita
    fuyu77
    fuyu77 2021/01/26
  • ドメイン駆動設計の比類なきパワーでRailsレガシーコードなど大爆殺したるわあああ!!! - Qiita

    この記事は クラウドワークスアドベントカレンダー2019 12日目の記事です。 概要 こんにちは、怒り駆動リファクタリングを生業としている @MinoDriven です。 弊社リファクタリング専門チーム「バグハンター」で現在実施中のリファクタリング設計について紹介致します。 ドメイン駆動設計 を用い、Railsレガシーコードに対しViewとControllerを ActiveRecord非依存 に変更する設計です。 状況 弊社ブログの過去エントリにあるように、弊社サービスcrowdworks.jpはサービスインから8年経過し、 30万行 を超えるモノリシックRailsアプリになっています。 開発生産性が低下してきています 。 生産性低下の課題を解決しようにも、大規模な上に複雑かつ密結合な構造になっており、 マイクロサービスへの移行も、リプレイスも困難な制約 があります。 そこで半年前にリフ

    ドメイン駆動設計の比類なきパワーでRailsレガシーコードなど大爆殺したるわあああ!!! - Qiita
    fuyu77
    fuyu77 2021/01/26
  • 「有害な男らしさ」という言葉に潜む「意外な危うさ」を考える(西井 開) @gendai_biz

    便利な言葉ではあるけれど 「有害・有毒な男らしさ(toxic masculinity)」という言葉が話題になっている。アメリカで生まれたこの概念は、多くの研究者や運動家に言及され、細かな違いはあるものの(1)性差別や暴力につながる、(2)援助の希求や感情の発露を妨げる、「男性の性格上の欠点」をその基的な定義としている。 2017年に盛んになった#MeToo運動などの影響を受けて、日でもジェンダーにまつわる暴力の問題を考える機運がこれまで以上に高まった。翻訳書などを通じて輸入された「有害な男らしさ」は、この流れを受けてSNSを中心ににわかに取り沙汰されるようになり、先日NHKの番組でも特集が組まれた*1。 この言葉がこれほど速く社会に伝播したのは、男性の暴力や感情抑制は男性文化の中でインストールされた気質によるものだ、というわかりやすい説明と、その語彙の持つインパクトによるのかもしれない

    「有害な男らしさ」という言葉に潜む「意外な危うさ」を考える(西井 開) @gendai_biz
    fuyu77
    fuyu77 2021/01/26
  • mysql2-cs-bind released! - たごもりすメモ

    前に RubyMySQLに繋ぐためのruby-mysqlmysql2 - tagomorisのメモ置き場 というエントリで書いたとおり、いまおそらく最もよく使われそうな mysql2 という ruby用のmysqlドライバにはprepared statementを扱うためのAPIがない。MySQLではprepared statementを使っても使わなくても速度に影響は無いらしい(後のtweet参照)し、O/R Mapperを経由しての使用がメインだから不要、という判断なのだろう。 (p19)MySQLの場合: PreparedStatementプール機能の利用有無は、性能にまったく影響しません・パラメータのバインド機構の利用有無は、性能にまったく影響しません / Microsoft PowerPoint - URL 2012-04-18 11:49:15 via Hatena しかし

    fuyu77
    fuyu77 2021/01/26
  • GitHub - tagomoris/mysql2-cs-bind: 'mysql2' extension to add pseudo prepared statement

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - tagomoris/mysql2-cs-bind: 'mysql2' extension to add pseudo prepared statement
    fuyu77
    fuyu77 2021/01/26
  • Next.jsでページ共通の処理をする(useEffectを使う例)

    Nuxt.jsだとmiddlewareという機能を使うことで、ページの遷移ごとに特定の処理をはさむことができます。 Next.jsで全ページで特定の処理をはさむためには、Appコンポーネント(_app.tsx)にその処理を書くことになります。 Next.jsの_app.tsxに全ページ共通の処理を書く 参考:Next.jsの_app.tsxのカスタマイズ(TypeScript) import type { AppProps } from 'next/app' import { useEffect } from 'react'; function MyApp({ Component, pageProps, router }: AppProps) { + useEffect(() => { + // ここに全ページ共通で行う処理 + },[router.pathname]) return <C

    Next.jsでページ共通の処理をする(useEffectを使う例)
  • Hotwireとは何なのか?

    はじめに HotwireはBasecampが発表した、モダンなWebアプリケーションを作るための新しいアプローチです。名前もHTML OVER THE WIREから来ているように、HotwireではHTMLをサーバーから送ります。「それ普通のWebアプリケーションでは?」と思う方もいるかもしれませんが、SPA + APIサーバでJSONが使われるのに対し、SPAと同様の体験をHTMLを中心に置いて作るアプローチであることを示す表現です。 僕個人は、最初は「ふ〜ん」という感じだったんですが turbo-railsを読みつつHotwireのデモアプリをPhoenixに移植してみたり WebSocketではないTurbo Streamsのsourceを作ってみて遊んだり と、ある程度触ってみて良さが理解できてきたので、Hotwireを使うと何が嬉しいのか、Hotwireの各要素の紹介を記事として

    Hotwireとは何なのか?
    fuyu77
    fuyu77 2021/01/26
  • Hotwireの感想 - laiso

    Hotwire https://hotwire.dev/ Turboを中心としたウェブアプリケーションのアーキテクチャの要素技術やコンセプトをPRするための名称 Hotwireというライブラリがあるわけではない 役割としてはMicro FrontendsとかReactのlearn once, write anywhereなどに似ている アプリケーション実装言語非依存だけど現状Railsアプリケーションしか実用できる基盤がない Hotwireの思想 アプリケーション開発者の生産性を上げることを目的にしていること サーバーサイド言語でフロントエンドを実装したいアレではなかった プログレッシブ(段階的に利用可能)であること 必要な技術だけを使い無駄なことをしないことで効率化する Hotwireが列挙する技術は1つづつ有効にできる クライアントサイドでViewを差分更新する現在の主流のシングルペー

    Hotwireの感想 - laiso
    fuyu77
    fuyu77 2021/01/26
  • 映画秘宝 on Twitter: "【お詫び】 この度は、大変お騒がせしてしまい、誠に申し訳ございません。 添付のあるまじき悪質なDMを、本誌公式ツイッターアカウントより、いち個人の方へ送付した件につきまして、心よりお詫び申し上げます。 https://t.co/1XbEbWdTW7"

    【お詫び】 この度は、大変お騒がせしてしまい、誠に申し訳ございません。 添付のあるまじき悪質なDMを、誌公式ツイッターアカウントより、いち個人の方へ送付した件につきまして、心よりお詫び申し上げます。 https://t.co/1XbEbWdTW7

    映画秘宝 on Twitter: "【お詫び】 この度は、大変お騒がせしてしまい、誠に申し訳ございません。 添付のあるまじき悪質なDMを、本誌公式ツイッターアカウントより、いち個人の方へ送付した件につきまして、心よりお詫び申し上げます。 https://t.co/1XbEbWdTW7"
    fuyu77
    fuyu77 2021/01/26
  • free-programming-books/books/free-programming-books-ja.md at main · EbookFoundation/free-programming-books

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    free-programming-books/books/free-programming-books-ja.md at main · EbookFoundation/free-programming-books
    fuyu77
    fuyu77 2021/01/26
  • 撮り鉄に向かって「中指」立てる 車掌の行動をJR東が謝罪、本人は「カッとなった」と説明(J-CASTニュース) - Yahoo!ニュース

    JRの電車を後ろから撮影していたところ、車掌が振り向いて「中指」を立てたとして、鉄道ファンがその写真や動画をツイッターに投稿し、物議を醸している。 JR東日八王子支社は、事実関係を認め、不快な思いをさせたと謝罪した。車掌は、JRの聞き取り調査に対し、ある理由を挙げたという。 ■投稿者は、邪魔になるような行為はしていなかったと説明 この車掌は、電車の最後尾にある乗務員室から顔を出し、前方確認をしている。そして、カメラのシャッター音が響くと、突然後ろを振り向いて、白い手袋の中指を突き出し...。 この6秒ほどの動画は、鉄道ファンのじまさん(@jima_af)が2021年1月23日、ツイッターに投稿した。 東京都瑞穂町内のJR八高線・箱根ヶ崎駅でこの日20時30分ごろ、拝島発高麗川行きの下り電車をホーム上から撮ったものだ。車掌は、電車がホームから離れると、この行為を止めていた。当時は、雪が降っ

    撮り鉄に向かって「中指」立てる 車掌の行動をJR東が謝罪、本人は「カッとなった」と説明(J-CASTニュース) - Yahoo!ニュース
    fuyu77
    fuyu77 2021/01/26