Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

設計に関するYassLabのブックマーク (25)

  • t_wadaさんにTROCCO®︎開発の悩みを壁打ちしてもらいました|株式会社primeNumber

    primeNumberのSoftwareEngineerの中根(@gtnao) です。 今回、特別講師として和田卓人さん(t_wadaさん)をお招きして社内勉強会を開催しました! 勉強会はprimeNumberのオフィスで実施しました。社内には写真のように、広めのイベントスペースがあり、勉強会や輪読会がよく実施されています。 勉強会の様子。20名近くのメンバーが集まりました。勉強会は、ローンチから6年ほど経過したTROCCO®︎が抱えるリアルな悩みを、CTO鈴木(@kekekenta)と私中根が、t_wadaさんに公開壁打ちしてもらうスタイルで行いました。ここから先は、勉強会のアジェンダに沿って内容をご紹介していければと思います。 TROCCO®の前提知識ディスカッションを始める前に、TROCCO®︎の前提知識をt_wadaさんに説明させていただきました。その場で初めて共有する形式だったの

    t_wadaさんにTROCCO®︎開発の悩みを壁打ちしてもらいました|株式会社primeNumber
    YassLab
    YassLab 2024/10/08
    "■悩み - 1つ目は、Railsのレールに乗らない(本当は乗せられるかもしれない)コードがapp/serviceディレクトリに特にルールもなく散在していること / 認知負荷を上げ、割れ窓理論的に考え無しのコードが増えていく原因"
  • 0063 号 巻頭言

    DDD を理解したいあなたのための DDD 入門以前 Rubyist Magazine 63 号をお届けする。 突然のお知らせで恐縮だが、日 Ruby の会の主たる事務所が東京から北海道に移転した。それもあってあまりまとまった時間がとれず、11 月のうちに書くはずだったのが気がつくと 12 月も半ばを過ぎていたので、今回は以前書きかけていた文章を発掘してお茶を濁したい。 Ruby とは直接関係がなくて恐縮だが、Ruby に限らずソフトウェア開発では現在でもちょくちょく話題になることがある、DDD についての話である。 ドメイン駆動設計こと DDD は 2020 年代のソフトウェア開発でもよく話題にされるが、率直に言うとストレートにポジティブな評価が行われているとは言い難い。 どちらかというと、ある種マニアックで、対象分野が制限されており、また初心者にはとっつきにくいところがある手法と思わ

    YassLab
    YassLab 2024/01/10
    “DDD はソフトウェア開発における困難に向き合っている。その「困難」とは、「ソフトウェア開発者は、自分が開発しているソフトウェアの対象分野に必ずしも詳しくない」という事実である。”
  • Progressive Enhancement (プログレッシブエンハンスメント) - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN

    プログレッシブエンハンスメント (Progressive enhancement) とは、可能な限り多くのユーザーに不可欠なコンテンツと機能のベースラインを提供することを中心とした設計哲学であり、必要なすべてのコードを実行できる最新のブラウザーのユーザーに限り、最高の体験を提供します。 プログレッシブエンハンスメントの「プログレッシブ」とは、古いブラウザーや機能の限られた端末のユーザーには、よりシンプルでありながら良い使い勝手を実現し、同時に新しいブラウザーや機能が豊富な端末のユーザーには、より魅力的で充実したものへ使い勝手を進化させる設計であることを意味しているのです。 機能検出は、一般にブラウザーが高水準のコンテンツを処理できるかどうかを判断するために使用されます。 ポリフィル は JavaScript で欠けている機能を構築するためによく使用されます。 アクセシビリティに特別な注意を

    Progressive Enhancement (プログレッシブエンハンスメント) - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN
    YassLab
    YassLab 2023/11/22
    “古いブラウザーや機能の限られた端末のユーザーには、よりシンプルでありながら良い使い勝手を実現 / 新しいブラウザーや機能が豊富な端末のユーザーには、より魅力的で充実したものへ使い勝手を進化させる設計”
  • Simplicity on Rails -- RDB, REST and Ruby

    Kaigi on Rails 2023の登壇資料です。 https://kaigionrails.org/2023/talks/moro/ 実世界のRailsアプリケーションをシンプルに保つための方法を、Railsが提供する機能群をもとに考察します。 実世界の、特に仕事で開発するRailsアプリへの要求は様々のものがあり、Railsの豊富な機能群をもっても日々苦労して開発しているかと思います。 そんな中でも、Railsが得意とするような設計に落とし込むことで、複雑な要求をシンプルな実装で実現できると感じています。 講演では、Railsが提供する機能のうち、「RDB」「REST」「Ruby」という要素を軸に、実世界の要求をシンプルに実装するための考え方を紹介します。

    Simplicity on Rails -- RDB, REST and Ruby
    YassLab
    YassLab 2023/10/30
    “実世界の、特に仕事で開発するRailsアプリへの要求は様々のものがあり、Railsの豊富な機能群をもっても日々苦労して開発 / Railsが得意とするような設計に落とし込むことで、複雑な要求をシンプルな実装で実現できる”
  • Hotwire的な設計を追求して「Web紙芝居」に行き着いた話

    Kaigi on Rails 2023での「Hotwire的な設計を追求して「Web紙芝居」に行き着いた話」のトーク資料です。

    Hotwire的な設計を追求して「Web紙芝居」に行き着いた話
    YassLab
    YassLab 2023/10/30
    "Kaigi on Rails 2023での「Hotwire的な設計を追求して「Web紙芝居」に行き着いた話」のトーク資料です。"
  • 事業の試行錯誤を支える コードを捨てやすくして システムをシンプルに保つ設計と工夫

    Kaigi on Rails 2023 での発表資料です。 https://kaigionrails.org/2023/talks/zuckey/

    事業の試行錯誤を支える コードを捨てやすくして システムをシンプルに保つ設計と工夫
    YassLab
    YassLab 2023/10/30
    “事業の試行錯誤を支える コードを捨てやすくして システムをシンプルに保つ設計と工夫 / Kaigi on Rails 2023 での発表資料です。 https://kaigionrails.org/2023/talks/zuckey/
  • 深いドメインと統合型経営プラットフォームを支えるモジュラモノリスの事例 / Modular Monolith That Support Deep Domains And Integrated Management Platform

    freeeにおけるモジュラモノリスの事例を大規模プロダクトから新規プロダクトまで紹介します。

    深いドメインと統合型経営プラットフォームを支えるモジュラモノリスの事例 / Modular Monolith That Support Deep Domains And Integrated Management Platform
    YassLab
    YassLab 2023/09/12
    "Rails WayではARにドメインロジックを凝集させ、DBとドメインロジックが密結合になる代わりに、強力な開発体験を得る / アーキテクチャを独自に作り込み過ぎない / あくまで手段であってそれ自体が目的化しないようにする"
  • Linus「C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが 簡単に生産されるようになってる」

    /15 [4] (21:54) 原文: http://lwn.net/Articles/249460/ From: xxx To: xxx Subject: Re: [RFC] builin-mailinfo.c をマシな文字列ライブラリを使うようにすること Date: Thu, 6 Sep 2007 18:50:28 +0100 (BST) Message-ID: <alpine.LFD.0.999.0709061839510.5626@evo.linux-foundation.org> On Wed, 5 Sep 2007, Dmitry Kakurin wrote: > > Git のソースコードを最初に見たとき、ヘンだと思ったこと: > 1. C++ じゃなくてただの C を使ってる。理由は謎。移植性がどうとか言わないで、 > そんなのウソに決まってるから。 *あんた* のほうこそ

    YassLab
    YassLab 2023/09/08
    “正直いって、C を選ぶ理由が C++ プログラマーを 追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる / この事実を理解できない連中をケトばすことができるってのも、大きなメリットだな”
  • プログラマが知るべき97のこと/名前重要 - Wikisource

    Kevlin Henney(編)、和田卓人(監修)『プログラマが知るべき97のこと』(オライリー・ジャパン、2010年)を出典とする。各エッセイはCC-by-3.0-USによってライセンスされている。 ネイティブ・アメリカンの信仰に「すべての人物・事物には真の名前があり、その名前を知るものはそれを支配することができる」というものがあるのだそうです。ですから、彼らは自分の真の名前を秘密にして、家族など当に信頼できる人にしか打ち明けないのだそうです。そして、対外的にはあだ名を用意してそちらを使うということです。そういえばアニメ化もされたA.K.ル・グインの『ゲド戦記』でも同じ設定が用いられていましたね。「ゲド」というのは主人公の真の名前なので物語中にほとんど登場せず、物語の中では彼は一貫して「ハイタカ」と呼ばれていました。 さて、プログラミングの世界において、この信仰はある程度真実ではないか

    YassLab
    YassLab 2023/09/06
    "私の設計上の座右の銘は「名前重要」/ あらゆる機能をデザインする時に私はその名前に最もこだわります / ふさわしい名前がつけられないということは、その機能が果たすべき役割を設計者自身も十分理解できていない"
  • RESTful APIのURI設計(エンドポイント設計) - Qiita

    RESTful APIのリソース設計で述べた通り、何をリソースとするかを決めたらそのリソースを識別するURIを検討する必要がある。 エンドポイントとは何か エンドポイントとはAPIにアクセスするためのURIのこと。例えば、QiitaのAPIで自分の情報を取得する時のエンドポイントは以下となる。 http://qiita.com/api/v2/users/nagaokakenichi 似たような言葉に「エントリポイント」というものがある。エントリポイントとはプログラムやサブルーチンの実行を開始する場所のこと。 Qiita視点で考えると、 http://qiita.com/api/v2/users/nagaokakenichi を参照されることでプログラムが開始されるので、Qiitaからすると上記URIはエントリポイントとなる。 つまり、エンドポイントはAPIにアクセスする側からの、エントリポ

    RESTful APIのURI設計(エンドポイント設計) - Qiita
    YassLab
    YassLab 2023/08/25
    "ただ、URI中のドメイン名はハイフンは許可されているがアンダースコアは使えないため、迷ったらドメイン名と同じルールでURI全体を統一するためハイフンでつなげるのが望ましい / users/profileのように区切る方が望ましい"
  • 巨大なタスクに圧倒されそうな時は“分割統治”で征服せよ ゴールまで走り続けるために有効な考え方

    大きな問題も分割すればなんとかなる まつもとゆきひろ氏:次のことわざにいきましょうね。4番目は、これもことわざじゃないと言われちゃうんですが、「分割統治」という言葉です。英語だと「Divide and Conquer」。「分割して征服せよ」という感じです。大きな問題もね、分割すればなんとかなるというやつですね。 (スライドを示して)これは最近見た漫画です。巨大なタスクが存在して、圧倒されそうな気持ちになった時には、タスクを取り上げて細かく分解すると、細かく分解されたタスクは無視しやすいので、タスクは片づかなくても気分は楽になるという漫画なんですけども(笑)、実際、そういうところもあるんですよね。 非常に巨大なことをしろと言われると大変なんだけど、手に負える範囲に分割して1つ1つ話をしていくと問題を解決できるというのは、どこにおいても応用可能な原則だと思います。 クイックソートは一応現時点で

    巨大なタスクに圧倒されそうな時は“分割統治”で征服せよ ゴールまで走り続けるために有効な考え方
    YassLab
    YassLab 2023/08/17
    “ソフトウェアが必要以上に複雑になっていないか、もっと簡潔に書けるんじゃないか / その複雑さは間違った方向性ではないか / 減らすことによって正しい未来をもたらすのではないかについて、考えるタイミング”
  • Railsの設計に迷ったのでGitLabの設計ドキュメントを読んでみた | DevelopersIO

    Railsプロジェクトがそこそこ大きくなり、ServiceやSerializerなどのカスタムレイヤーを追加してコードを細分化しているものの、レイヤーの役割やインターフェイスのルールが明確に決まっておらずふわふわとしていることを課題と感じていました。課題を解決するヒントを探すため、Railsの超巨大OSSプロジェクトであるGitLabの設計ドキュメントを読んでみました。 ガイドラインの必要性 まず初めにガイドラインの必要性が語られています。レイヤーの抽象化ができたとしても、それを正しく使えないと、あっという間にメンテナンスしにくいコードができてしまうということが説明されています。 例として、あるFinder(Finderはデータベースからデータを検索する抽象)の中で別のFinderを呼び出してはいけないということが挙げられています。もしそうしたなら、Finderにどんどんオプションが追加

    Railsの設計に迷ったのでGitLabの設計ドキュメントを読んでみた | DevelopersIO
    YassLab
    YassLab 2023/07/12
    “Railsの超巨大OSSプロジェクトであるGitLabの設計ドキュメント / ServiceはRailsではお馴染みのレイヤーですが、その役割は様々な印象です。GitLabでは、Serviceは「アプリケーションの状態に変化を加えるもの」と定義している”
  • Railsをやめても解決しない問題

    序文 昨年末くらいからRailsとフルスタックJavascriptの論争の記事がよくバズってましたね。主にORMとパフォーマンスやSPAが論点として多かった気がします。 Rails側のSPA作りづらい問題に対し、hotwireが一つの解として今後どういう受け入れ方をされて行くのか、どう発展していくのかは気になるところです。 未来のフルスタックフレームワークの代表争い さてこの論争、僕は「未来のフルスタックフレームワークの代表争い」だと思っているのですが、結構難しくって視点次第でどうとでもなっちゃうような気がしてます。 というのもこの手の技術選定の問題ってアプリケーション規模やチームの思考、求められるサイト特性などによって合う合わないがあるので、一概に正解がわからないんですよね。 例えば今勉強がてらブログを作ってみたい、という人には迷わず僕はblitz やNext/Gatsby+外部サービス

    Railsをやめても解決しない問題
    YassLab
    YassLab 2023/06/20
    “フルスタックフレームワーク=スケーラブルなフレームワークではないことを意識しなければいけない / なぜならこのスケーリングや大規模アプリケーションへの適用の問題は、多くの場合アーキテクチャの問題だから”
  • React Server Componentsに感じたフロントエンドの消失

    はじめに 新年早々に面白そうな記事を見つけました。ReactでのAPI呼出しを最適化するために「部分的にサーバサイドで実行するコンポーネントを作る」というもののようです。 あるいは去年の記事ですが気になってたものとしてBlitz.jsでReactベースのFWであるnext.jsに永続化層を持たせてRailsのようなFWにしようというアプローチもあります。 どちらの記事も書かれてる内容自体は分かる気がするものの 「それをフロントエンドでやる意味あるの?」 というのが拭えずイマイチ腑に落ちなかったんですが、単純に 「私と最前線でやられてる方々で期待してるものがたぶん違う」 という気がしてきたので、その辺を整理のために書いてみます。 注意書き Vue.js/Nuxt.jsは少し触ったことがありますが、React Server ComponentsやBlitz.jsを触ったことは無いです 「なんで

    React Server Componentsに感じたフロントエンドの消失
    YassLab
    YassLab 2023/05/07
    “疎結合の方が拡張性や保守性は高いのですが基本的にめんどくさいので 分業不要な規模でかつ性能問題が無い ならば常に密結合を選んできたのが人類”
  • Railsで成功するには、 コンピュータ書鑑賞、本との出会い方【Rubyistめぐりvol.1 takahashimさん】 - STORES Product Blog

    Rubyist Hotlinksにインスパイアされて始まったRubyistめぐり。第1回は高橋征義さんをゲストに迎えて、お話を聞きました。こちらは後編です。前編はこちら。 Rubyが他の言語に与えた影響 藤村:第2部、高橋さんについて聞いてみようと思います。今更ながらRubyについて聞きたいんですけど、好きな機能とかありますか? 高橋:好きな機能ですか?あんまり機能としてこれというのなくて、全体的に使い勝手がいいですね。まあでも、そういう意味でいえばオープンクラスの方がいいんじゃないの?みたいな感じがしますね。オープンクラスじゃないRubyはつらそうだって。 藤村:確かに。 高橋:つらそうというかつまらなさそうですね。オープンクラスが原因でつらいことになるのはわかるんですけど、でもあれがないんだったら他の言語でもいいよね、って。 藤村:Rubyがああじゃなかったら他の言語は今のようになって

    Railsで成功するには、 コンピュータ書鑑賞、本との出会い方【Rubyistめぐりvol.1 takahashimさん】 - STORES Product Blog
    YassLab
    YassLab 2023/03/23
    “ #Rails をうまく使いこなすにはデータベース設計ができないといけないわけですよ / ハードルが高いんだけれど、データベース設計をみんなでできるようになりましょうという圧力がかかるのはすごい大事なこと”
  • open3のはなし

    YassLab
    YassLab 2023/03/04
    "Rubyで実現したいこと: OSが提供するプロセス起動機能を使いたい. シェルでできることをRubyでもやりたい. ポータブルに記述可能であってほしい. できることは何でも可能であってほしい. よくやることは簡単であってほしい
  • 素のRailsは十分に豊かである(翻訳)|TechRacho by BPS株式会社

    はじめに 「Railsは関心の分離が不十分である」という批判をよく目にします。状況が深刻になったら、Railsに足りない別のピースを導入しなければならないというのです。しかし私たちはそうは思いません。 「素のRails(vanilla Rails1)ではここまでしかできない」みたいな批判を耳にすることがよくあります。Railsはアーキテクチャレベルで関心の分離が不十分なのだから、アプリはいずれメンテナンス不能になり、足りないピースを導入するという別のアプローチが必要になるというのです。 代表的なDDD(ドメイン駆動開発)書籍では、概念上の4つの層である「プレゼンテーション層」「アプリケーション層」「ドメイン層」「インフラストラクチャ層」について議論しています。 アプリケーション層は、ドメイン層と協調動作してビジネスタスクを実装します。しかし、Railsが提供しているのは「コントローラ」と「

    素のRailsは十分に豊かである(翻訳)|TechRacho by BPS株式会社
    YassLab
    YassLab 2023/01/14
    "「新規登録」というドメイン操作を担当する SigningUpServiceではなく、アプリでIDを検証して作成できるSignupクラスを用意する / Rubyによる純粋なオブジェクト指向そのものが、ドメインの概念をコードで適切に表現している"
  • 技適取得前に生産開始・流通した製品は、免許不要で利用できるか?

    ASIAIRのように、天体観測にもWi-Fiでの接続が行えるデバイスが増えてきました。 国内で無線LAN機器を総務大臣の免許なしに利用するためには、電波法第四条の規定に基づく一定の条件があります。 記事は、現在の日の法規制の是非などについて書いているものではありません。 2022年4月現在の法規制をそのまま解説するものです。 ASIAIR Plusについては、メーカーが2022/6/15付でASIAIR Plusとしての認証を取得しており、概ね2022/7月以降に国内代理店から出荷された製品については、製品に適合表示(技適シール)が付されているため、国内での使用に問題ありません。 ページにて取り上げているものは、2021年9月の販売開始~2022年6月頃までに出荷されたASIAIR Plusが該当します。 また、適合表示が2022年7月以降メーカーから出荷される全てに付されているのか

    技適取得前に生産開始・流通した製品は、免許不要で利用できるか?
    YassLab
    YassLab 2023/01/01
    "技術基準適合証明や工事設計認証は、空中線電力を含めた一式について行われます / Raspberry Pi Computer Module 4のようにアンテナが外付けである場合、無線LANボードとアンテナのセットで工事設計認証を受けることとなります"
  • 混沌としたモノリシックRailsを手懐けるためにやったこと - Speee DEVELOPER BLOG

    ※この記事は、2022 Speee Advent Calendar11日目の記事です。 昨日の記事はこちら tech.speee.jp こんにちは、DX事業エンジニアのさとーる(@satotoru2000)です。 私は今年の6月から「イエウール」というプロダクトのSEOコンテンツ開発チームで開発をしています。今回はその中でやったことをまとめながら、 モノリシックRailsアプリの一部のドメイン領域を担当する状況下で、自信をもって変更できる領域をどうやって広げたか? という話をしようと思います。 当初のイエウールの課題 イエウールは、アーキテクチャ的にはいわゆる一般的なモノリシックRailsアプリです。下の図のように、一つのRailsアプリケーションにほぼ全ての必要な機能が乗っているような状態です。 イエウールcoreに乗っているものたち また、サービスとしてもそれなりに歴史があるプロダ

    混沌としたモノリシックRailsを手懐けるためにやったこと - Speee DEVELOPER BLOG
    YassLab
    YassLab 2022/12/12
    “「小さいところから成功体験を作りながら、少しずつ出来ることを増やしていく」という至極当たり前の結論 / この当たり前の結論をきっちりと技術戦略に埋め込むことができたのが今回の成功要因だったと思います”
  • Railsプロジェクトをモジュール分割して見通しをよくする|こんぴゅ

    今年もRubyKaigiが始まりましたね!noterubyスポンサーとして協賛しています。三重の会場にきている方は、ぜひnoteのブースにも足を運びください。 さて、noteRuby on Railsを用いたwebサービスとして2014年にリリースされました。現在でも継続してRailsのコードベースを利用しています。 しかし、多くの機能がリリースされ、開発者も増えたため、モノリスの巨大化が進んでおり、開発効率に影響が出始めていました。 今回はそれらの問題を解消するために、noteが継続的に取り組んでいる・取り組んできたバックエンドの改善プロセスについて説明していきます。 モジュールでサービスを構成するモノリスは大きくなるとメンテナンスが難しくなります。Railsは、MVCの各層に全てのドメインがフラットに並び、レイヤごと・レイヤ間の結合度が高くなる設計思想で、巨大モノリス化への対処が難

    Railsプロジェクトをモジュール分割して見通しをよくする|こんぴゅ
    YassLab
    YassLab 2022/09/11
    “packwerkはRailsアプリケーションのモジュール化を支援する静的検査用ライブラリです。Shopify内のリファクタリングプロセスの一環で作られたツールをOSS提供したプロダクト”