スクラムチームと認知負荷 - ニフティのスクラムトーク Vol2. / NIFTY Tech Talk #18
![セキュアなRAILSアプリを目指す Part2: 暗号化編(鍵の管理)](https://cdn-ak-scissors.b.st-hatena.com/image/square/42b46d55b4e7a9f31176f0a30edaa57de35cd35c/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F9073bcc083d24708a2191550157338bd%2Fslide_0.jpg%3F12721599)
こんにちは、freee会計でエンジニアをしている @sakakibara-setu です。 普段は債権債務に関する機能を担当するチームに所属して開発を行っていますが、この度freee会計のRailsアップデートを担当することになりました。 実はfreee会計は、先日2021年12月にRails 5系からRails 6系へとメジャーアップデートされました。 ありがたいことにこのメジャーアップデートによる問題は一件も発生しなかったため、皆様には特にお変わりなくご利用いただけたかと思います。 その上で社内の開発環境においては様々な恩恵を得ることができたので、結果は成功と言っていいと思います。 しかしながら、その道のりはお世辞にもうまくいったことばかりではなく、反省すべきことも多々ありました。 アップデート作業には壁とも言えるような問題がいくつもありましたが、それはfreee会計が8年以上開発され
さて、どこからお話を始めましょうか。ここに到達するまでに長い長い旅路をたどりました。かつて私は開発にVagrantを使っていましたが、当時のVMは私の4GB RAMのノートPCでは少々重すぎました。そして2017年にコンテナへの乗り換えを決意したときに、やっとDockerを使い始めました。 しかしDockerで問題がたちまち解決したという気持ちではありません。自分自身やチーム、そしてすべての人々にとって完璧な設定を追求し続けてきましたが、「これでよし」と言える究極の設定はありません。標準的なアプローチを見出すまでにかなりの時間を要しました(2019年に本記事を最初に公開した時点でも相当の時間を費やしていました)。 本記事を最初に公開して私の秘密を隅々までオープンにして以来、多くのRailsチームや開発者が私の手法を採用し、さらに改良や貢献にもご協力をいただきました。 前置きはこのぐらいにし
この文章は祈りです。 主にRuby on Railsアプリケーションを想定した話です。 Ruby on Railsアプリケーションでは、Fat Model問題という問題が起きることがあります。 ドメインオブジェクトが肥大化しメンテナンスしにくくなる問題です。 Fat Model問題に対応するためにサービスレイヤーを導入することがあります。 「ドメインモデル貧血症」と呼ばれているアンチパターンです。 ドメインモデル貧血症 ドメインのロジックをドメインオブジェクトの中に入れないという設計ルールに従っているのでしょう。その代わり、すべてのドメインロジックを含むサービスオブジェクト群が存在しているのです。 Fat Modelを恐れよ Fat Modelは「単一責任原則」を満たしていないモデルです。 単一責任原則 | プログラマが知るべき97のこと 1つのサブシステムやモジュール、クラス、関数などに
Ruby WASM/WASI の発表にえらくテンションが上がったので、勢いで作ったものが窓の杜で紹介されてびっくりしました。(それだけ注目されているということですね) Ruby On Browserは51行しかないHTMLでまだまだ荒削りなのでもっとちゃんとしたものを試したい方は是非TryRuby playgroundのCRuby 3.2.0dev をお試しください。 Ruby On Browser自体もまだまだ発展させていくつもりですが、現状Ruby WASM/WASIを触ってみていいなあと思ったことです。 1. 簡単に自分好みのブラウザRubyが作れる Try Rubyのようにブラウザ上でプログラミング言語が試せること自体は現在はそこまで珍しくないですが、クライアントサイドだけで(しかもとても短いコードで)動かせるのは大変魅力的です。個人のPCやイントラネット上に好みのカスタマイズを加
こんにちは、サーバーグループの市川です。モバイルクライアントグループに所属していましたが、バックエンドの開発を担当することが多くなったので、サーバーグループ異動にしました。 最近、Studyplusブックというサービスをリリースしました。Studyplusアプリ内で、200冊以上の参考書が読み放題で使えるサービスです。 このサービスの開発にあたって、社内向けの管理画面を新規に構築したのですが、Rails 7から標準でインストールされるHotwireを利用することにしました。 今回はHotwireを実際に利用する上で、どういったUIを作ればいいか試作しましたので、その話を書きます。 作った画面 書いたソースコード 使った技術 解説 Turboを理解する Turbo Frameでフレーム分割する 追加フォーム (Turbo Frame) 追加処理 (Turbo Stream) 編集フォームと更
新年あけましておめでとうございます。 @rosylilly です。 この前 SRE 養成講座の体験授業配信 をしたんですが、その時にハンズオンの一環で Ruby 製アプリケーションをいじって高速化してみる。という内容を実施しました。 コンセプトとしては、『ちゃんと設定ファイルを書くだけでも高速化する』という感じです。作業としてはアプリケーションをいじらずに、設定だけいじって高速化する、ということなんですが、結局何がどれくらい効くのか、というのを事前に参考値レベルで弾いておかないとぶっつけ本番になっちゃうな、ということで何がどれくらい効くのかを試してからにしようということで、事前に調査したときのベンチテストと何を変えたかの記録になります。 ベンチマークの前準備 今回はほぼ何もしない Sinatra アプリケーションを作って、その性能差から測ります。ということで用意した性能測定用何もしない S
こういうAPIを作らなければいけないときって割とよくあると思います(有料データベースと契約してて、csvでもらったデータをAPIで使えるようにするとか) そんな時に一番シンプルな解決方法として思いつくのがaws lambda + API Gatewayになると思います そんな時にふとした疑問が生まれました 元のcsvって何の形式で持つのが一番効率良いのだろう こういうのって何となく適当に選んじゃうことが多いのですが実際に計測して選ぶことも大切なので色々計測してみました 別解 多分goあたりでプログラム本体に含めてコンパイルしちゃうのが早いと思いますが、今回はrubyでやりたかったのでそれ以外の解決策を考えてみます 準備 郵便局の出している住所 <-> 郵便番号データをサンプルとして使います 元データがcsvなのですがその時点で以下のようになっています 行数:12万4500行 ファイルサイズ
RubyがWebAssemblyのWASI対応へ前進。ブラウザでもサーバでもエッジでもどこでもWebAssembly版Rubyが動くように Ruby言語のリファレンス実装、すなわち事実上の標準となっているRubyインタプリタはC言語で実装されています。そのため、このRubyインタプリタもしくはそのソースコードは一般に「CRuby」(もしくは、まつもとゆきひろ氏による実装という意味でMRI:Matz' Ruby Implementation)と呼ばれています。 CRubyのソースコードをコンパイルすることで、Windows対応Rubyインタプリタのバイナリ形式やLinux対応Rubyインタプリタのバイナリ形式などが生成されるわけです。 今年、2022年1月7日、このCRubyのソースコードに対する要望チケット「Proposal to merge WASI based WebAssembly
2022.01.05 Rails 7.0.0+Ruby 3.1.0のGemfileは7-0-stableブランチの指定が必要 現象 Ruby 3.1.0がリリースされた直後にRails 7.0.0をRuby 3.1.0で動かそうとすると、以下のRails::Engine is abstract, you cannot instantiate it directly.エラーが出て動きませんでした。これはrails newの場合ですが、他の操作でも出ました。 $ dip rails new . --skip-git Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_nam
※この記事は、Speee Advent Calendar22日目の記事です。 昨日の記事はこちら tech.speee.jp 2021年7月から業務委託のエンジニアとして主にイエウールの開発のお手伝いしている高尾です。所属は株式会社ネットワーク応用通信研究所。Rubyのまつもとゆきひろさんも在籍されており、Rubyに関するSIでそれなりの実績のある会社です。私は20年近くSIerとして仕事をしてきました。 そんな私にとってもSpeeeでの開発は魅力的です。 プロジェクトの運営、プロダクトの仕様、技術の採用、リリースなど、多くのことをエンジニアが主体的に決めます。各エンジニアがお客様の価値を理解してプロダクトを作り上げるという意識が伝わってきます。そんなエンジニアのみなさんが、 Rubyをつかって楽しくプログラミングできるように全力でサポートしていきたいと思います! 前置きが長くなってしまい
筆者はES6以前のVanilla JSがあまり好きではありませんでした。 そこで、バニラJavaScriptをなるべく書かなくていいように、2000年代を通じてさまざまなアプローチを追求してきました。最初はRJS(Ruby-to-JavaScript)、次はCoffeeScriptでした。どちらのアプローチも、バニラJavaScriptより楽しく書けるソースコードを、ブラウザが実行できるバージョンのJavaScriptへトランスパイルするものです。ある程度は、うまくいっていました。 とはいえ、これは明らかにその場しのぎの手段に過ぎず、ブラウザがより洗練されたJavaScriptを理解できる日を待ちわびていたのです。ただ、そんな日が来ることはなく、永久にその場しのぎでやり過ごすのかと思われる時期がしばらく続きました。 しかし、幸いなことにJavaScriptは改善を続け、2015年にはES6
morimorihogeです。涼しくなってようやく生きていける感じになって何よりです。 今回はruby/debugに新しく導入されたChrome Devtools連携リモートデバッグ機能を動かしてみたので、そちらを紹介してみようと思います。 ことの起こり 新しいRuby標準デバッガとして開発が進んでいるruby/debugですが、先日こんなTweetがありました。 debug.gem and Chrome browser integration. Thanks Ono-san! pic.twitter.com/3aUdH2zbEo — _ko1 (@_ko1) October 14, 2021 なにこれすごくない!?と思い、今回の記事を書くに至りました。 動きとしては、デバッガのコンソールで open chrome コマンドを実行するとURLが表示され、そのURLにChromeでアクセスす
すべての説明はイチRubyユーザーの個人的で期間も限定的な観測範囲に基づきます。 「Rubyには型がない」 ある日、同僚とプログラミング言語に関する雑談をしていたときに言われた一言です。 私はその日までRubyの型機能は使っていませんでした。忙しい毎日を送り、キャッチアップを疎かにしていたのです。後日このことは猛烈に反省することになります。 「Rubyには……型があるッ……!」 火がついた私はパターンマッチの時と同様にRubyの型についてキャッチアップすることにしました。そして最高の体験が待っていました。 導入した後の世界 ぶっちゃけRubyの型を導入するとどうなるのでしょうか? メチャクチャ簡単に説明すると、エディタでバグがひと目で分かるようになります。 vscodeでの画面です。なにやら赤線がついています。 === bar === barの部分にカーソルを合わせてみましょう。 「Pos
[edit] 要約 RubyGems を扱うためのクラスやモジュールが定義されているライブラリです。 gem コマンドの使い方 $ gem help RubyGems は Ruby のための高機能なパッケージ管理ツールです。 これはより多くの情報へのポインタを含んでいる基本的なヘルプメッセージです。 使用方法: gem -h/--help gem -v/--version gem command [arguments...] [options...] 例: gem install rake gem list --local gem build package.gemspec gem help install さらにヘルプ: gem help commands 全ての 'gem' コマンドをリストアップします gem help examples いくつかの使用方法の例を表示します gem h
はじめに 新しい職場に来てもう少しで2ヶ月が経過します。現在の業務でHanamiを書き始め、何となく慣れてきたので、アドベンドカレンダーの機会にHanamiについて書いてみたいと思います。しかし、Hanamiはまだまだマイナーなフレームワークであるため、Railsエンジニアの視点で分かりやすいように解説していきます。 Hanamiとは 2017年4月にバージョン 1.0.0 がリリースされたばかりの比較的新しいRubyのフレームワークです。Railsとの違いで代表的なものはこんなところです。 長期的なメンテナンスに向いたフレームワーク Rails はMVCやActiveRecordに仕様の大部分が依存したフレームワークになっています。 一方でHanami は DDD (ドメイン駆動設計) をベースにしつつ、ある程度柔軟性を残した状態で開発出来るフレームワークとなっています。 もう少し具体的
初めまして、qsona (tw) と申します。Ruby on Rails Advent Calendar 2016 6日目の記事になります。 Rails歴は10ヶ月で、もちろんAdvent Calendarへの参戦も初です。 全体的に生意気な内容と思いますが、 じゃんじゃんマサカリ投げてください お手柔らかにお願いします。 はじめに 環境 JSONを返すAPIで、データベースはRDBを想定してます。 あんまり関係ないですが一応、Rails5 (api mode) + MySQLを想定しています。 マイクロサービスとしてのバックエンドに使う技術スタックの必要な要件 マイクロサービスの良いところは、サービスごとに合った別々の技術が使えるということです。 とはいえ、一般的な組織であれば、学習コストの面などから、ファーストチョイスとなる言語があり、普通の要件に対してはその言語を使う、ということにな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く