技術に精通した コンサルタント が併走 経験豊富なアドバイザー 元ITエンジニア、元ゲーム企業人事、 IT会社役員、大手人材エージェント
tl;dr Railsではコネクションプール数を設定していても、1スレッド辺り1コネクションしか持ちません。 発端 アカツキではRails + Unicorn + Nginx + MySQLの構成をAWSで運用しており、c3.4xlargeのインスタンス上で1台辺り64のUnicornワーカープロセスが実行される設定になっています。 ソーシャルゲームでは時にたくさんのアプリケーションサーバを並列稼働される必要がでてきます。特に年末年始の時期は平時の2-3倍のトラフィックが予想され、アプリケーションサーバを最大100台で稼働させる必要がありました。 Railsのdatabase.ymlのpool設定は5だったので、単純に考えると最大 100台 * 64プロセス * 5接続 = 32,000個の接続が常時貼られるのでは?MySQLのmax_connectionsの設定は大丈夫か?という議論があ
『 APIデザインケーススタディ 』という本を頂戴したので読んでみた。 ライブラリ作者に向けて この本はRuby標準ライブラリを題材にして、分かりやすく、多様な機能をサポートして、互換性を保つAPIの設計をするにはどのように考えるべきかを教えてくれる。 ここでAPIと言っているのは、一般的なRubyのクラスとオブジェクトとメソッドから成るライブラリをどうデザインするか、という話である。 別にChef RecipeやRSpec DSLのようなちょっと変わったDSLを設計するとかそういう話ではない。確かにその種の言語内DSLのデザインには固有のセンスが必要とされるし、 Ruby DSL Handbook なんて本が書かれているように実装にあたってもある種のテクニックが必要なのも確かだ。でも、それ以外の「ふつう」のライブラリのデザインは果たして簡単だろうか。 適切な粒度のクラスを定義する。必要な
はじめに Rails 5.0.0.beta1が2015年12月18日にリリースされました。 また、それにあわせてRuby on Railsの公式ブログに主な変更点がまとめられています。(投稿者はあのDHH氏のようです) Rails 5.0.0.beta1: Action Cable, API mode, Rails command beta1がリリースされたということは、Rails 5.0の正式リリースもそろそろ近いということです。 (ちなみにRails 4.0ではbeta1の4ヶ月後に正式版がリリースされました。) Railsユーザーであれば、みなさん早かれ遅かれRails 5.0を使うことになると思うので、事前に予習しておきましょう! というわけで、上記の公式ブログの内容を翻訳してみました。 これを読めばRails 5.0でどういう変化が起きるのか、だいたい理解できるはずです! 翻訳の
タイトルが対象を絞りすぎててもはや誰にも見てもらえてない疑惑もありますが。。 MoneyForwardでは、【MFクラウド】というサービス名で、会計・請求書・消し込み・決済・給与・マイナンバー・経費、といった、バックオフィス業務を最適化するサービスを運営しています。 バックオフィス業務は日本固有の法律に対応する必要があり、法律由来の一般的ではないロジックへの対応を求められる事がよくあります。 今回はそんなHR領域やバックオフィス関連のサービス開発に、もしかしたら役立つかもしれないgemをご紹介します。 era_ja tomiacannondale/era_ja 和暦を扱うgemです。 給与や会計サービスなどで提出帳票などを印字する際には必須となるgemです。 使い方はREADMEを読んでもらった方が早いですが、DateやTimeに和暦変換の to_era methodが生えます requi
$ bin/rails g scaffold user name:string mail:string password:string invoke active_record create db/migrate/20151214145437_create_users.rb create app/models/user.rb invoke test_unit create test/models/user_test.rb create test/fixtures/users.yml invoke api_resource_route route resources :users, except: [:new, :edit] invoke scaffold_controller create app/controllers/users_controller.rb invoke test_un
このエントリは Ruby on Rails Advent Calendar 2014 の 7 日目のエントリです。 前日は seri_k さんの「Turbolinksさんと上手く付き合う10の方法」でした。 お詫び WIP です。公開期限に間に合わない可能性があるため、まだ途中ですが先に公開してしまいました。 サンプルコード等を後ほど追記する予定です。 → 12/08 18:10 追記しました。 Rails のファットモデル問題 Rails で構築したアプリケーションが大規模になり機能が増えていくにつれてモデルが大きくなり、そのうち手がつけられなくなる問題は古くから指摘されています。これについてはもはや詳細を述べるまでもないと思うので割愛しますが、この問題は 2014 年になった今でも多くの開発チームを悩ませていると感じています*1。 このエントリでは、普段 Rails を業務で使いながら
こんにちは、freeeでフロントエンドエンジニアをしている @joe_re です。 freee Engineers Advent Calendar 2015の4日目を書きます。 僕からはfreeeで現在進行中の革命について、フロントエンドのビルドプロセスを中心に書こうと思います。 革命 ってなんのこと? というのはフロントエンドヤンキーこと @ymrl が 2日目で書いたので詳しくはそちらをご参照頂ければ幸いです。 背景 弊社ではRuby on Railsを主軸にしてWebサービスを作っています。 Railsは素晴らしいフレームワークですが、めまぐるしく変化する昨今のフロントエンドについては、このままRailsの用意しているRailに乗ったままでは時代に取り残されてしまう危機感があります。 僕たちは時代に取り残されている場合じゃない。 最先端でかつ適切な技術を用いて未来を切り開いていかなく
RailsのAsset PipelineとPrecompileをNode.jsのみで処理できるgulp-sprocketsを作った 仕事ではRailsアプリを書いていて、JSやCSSなどのフロントエンドはRailsのAsset Pipelineの仕組みに則ってビルドしてる。 普通にRailsアプリ作ってると普段Sprocketsについて特に意識しないと思う。 Sprocketsはそこが凄くて、あまり考えなくてもドキュメント通りにやってれば、必要なAssetを結合できて、リリース時は変更がなければブラウザキャッシュから、変更があれば 新しく読み込まれるみたいなことをやってくれる。 なんだけど、もうそろそろ新しい機能はES2015で書きたいよねという人が増えてきた。 とはいえSprocketsは独自のディレクティブ以外は使えなくて、SprocketsWayから外れると途端に脆い。 ES2015
Railsで中規模なサイトを作っていく上で 避けて通れないのが、増えてきたモデルを適切にキャッシュするしくみのように思えます。 特に変更が少ないマスタ的なテーブルに対して、『多対多』で関連付け(アソシエーション: association)がある場合などは、 それなりのSQLの発行コストになることがあります。そこを適切にキャッシュすることでDBへの負荷が減り、 ユーザーへのレスポンスが改善されると思います。 今回は、最近実装しているキャッシュの方法について、紹介したいと思います。 (というか偉い人、ぜひいい方法教えてください><) 🍣 前提条件: RailsからRedisにキャッシュ今回は前提条件として、Railsのアプリケーションから『redis-store/redis-rails - GitHub』 のGemを使って、Redisにキャッシュをされているとします。 セットアップ方法は『r
ちょっと前に触ったサービスでRailsサービスでgulpとかbrowserifyとかそのあたりのモダンなJSツールを使いたくて、こんな感じにやってみたというメモです。 おおまかにいうと、gulpでビルドしたものを、asset pipelineに通すというだけ。 こんなことを考えていた 最初はsprocketsをいっそのこと外してしまおうかと思ったんだけど、そのサービスはasset_syncというassetをS3にあげるgem使ってたのと、digestまわりとかあって、それらは解決できなくはないけど、めんどくせえからそこはsprocketsに任せてもいいやと思ったので、結局外しませんでした。 また、JSまわりのツールsprocketsと連携してたりするgemがあったりするんですが、JSまわりツールのバージョンアップの早さにgemがついていけてないと感じたので、我慢して古いバージョン使うのが嫌
この記事を読むと良い人 rails使って作ってるWEBサービスの中でガイドとかキャンペーンページ作りそう、作ってる 静的ページなんだけどリ商品の価格(よく変わる)とコメンデーションみたいなものも出したかったりする(それ静的ページじゃない) railsでページは作れなくても、html,css(簡単な),js(簡単な)ならかけるマーケッター?みたいな人がいる 静的ページ作る、ちょくちょく更新するのにrailsエンジニアの稼働を使いたくない 背景 説明/キャンペーンページなど静的っぽいページを作る。 WEBサービス,WEBサイトを作成してたら必ずある 一枚一枚railsのなかに静的ページ作ることも可能だけど、エンジニア以外の人が更新できないとか問題ある しかも、静的ページの内容自体はエンジニア以外がすでにマークアップ済みということも多い エンジニア以外が、ページの内容を持っていることののほうが多
このエントリで書いた内容は、ほぼ Growing Rails Applications in Practice の内容が元になっています。英語ですが、ここで挙げた内容以外にもコードを綺麗に保つテクニックが書かれており、かつページ数も少なく読みやすいです。コードを綺麗に保つのが好きな方は一読してみることをおすすめします。 はじめに Rails で fat model を避けるための方法は、7 Patterns to Refactor Fat ActiveRecord Models を始めとして、多くのやり方が存在します*1。 validation や callback は ActiveRecord(以下AR) を継承せずとも利用することができます。7 Patterns to Refactor Fat ActiveRecord Models の 「3. Extract Form Objects
最近 SPA (Single Page Application) についての議論が盛んで、Angular とか React とか Flux とか Mithril とかの名前をよく聞くようになりました。 でも必ずしも全ての Web アプリにおいて SPA は必須ではありません。 むしろ枯れた jQuery と Rails の remote: true の仕組みを正しく使うだけで十分なケースも多数あると思います。 (特に iOS, Android のネイティブ開発者が身近にいる環境では SPA で開発するのとネイティブで実装するのとでは後者の方がコストが低いこともありますし。) ということで、「じゃあ Rails で Ajax ってどうやって実装するんだっけか?」というところをまとめた資料を公開します。 中級者以上の方にとっては特に目新しい情報は無いと思いますが、経験の浅い方の自己学習や研修な
RESTful な設計って、ってマスタメンテ作るにはいいけどまともなサービス作れるの? という疑問に対して、結構やればアプリケーションできるので安心してください、という話をしました。 「独自研究」セクション以外はだいたいふつうに経験したことです。「独自研究」セクションはたぶん、今流行りのオーケストレイションレイヤをどうするかというところになるのかな、と。APIといいつつ、HTMLを返す話ばかりですが、これはAPIとHTMLをあえて区別せずそれは単にリプレゼンテーションが違うだけです、という意図でした。 転職してから初の社外発表が前職オフィスでやるというのが面白かったです。永和メンバーも結構たくさん会えてよかった。来てくださった方、開催をアレンジしてくださった方、ありがとうございました。
セキュキャン 2015 高レイヤートラック(Jxck) 本資料は、セキュキャン 2015 高レイヤートラックの講義資料です。 セキュキャン参加者であるセキュリティエンジニアの卵を対象に、 Web のセキュリティの知見が、実際どのように Web アプリ開発に反映されているか、もしくはどう反映すべきかを、フレームワークの視点から解説することを目的としています。 将来、 Web のセキュリティに興味を持ったエンジニアが、その知見を多くの開発者に啓蒙する手段として、フレームワークに反映するというのは非常に有効な方法です。 ここではその実例として Rails を例にとり、 Rails がこれまでに積み上げてきたセキュリティに関する知見を振り返るとともに、フレームワークとしてそれをどう取り入れているかを解説します。 Intro Web アプリケーションを開発する場合、 Web アプリケーションフレーム
土日でreact-railsとturbolinksを勉強してみた成果です やりたいこと 画面遷移するときは<div id='content'></div> の中身だけ入れ替えて、pushStateで行き来できるようにしたい reactを使ったリッチなページでも、イニシャルロードやSEOの為にサーバーサイドでレンダリングしておきたい サーバーサイドレンダリングした要素を破棄することなくReactで初期化してsetStateでガンガンViewを書き換えたい 結果どうなったか サーバーサイドでReactComponentをレンダリングしてクライアントのReact.renderで初期化情報を揃えて引き継ぎ どんな画面でもapp.component.setState({})が反映されて最高 TurbolinksでReactComponentをマウントしたルート要素だけ入れ替え その為にTurboli
Sendagaya.rb #114に来たので、目標のブログ記事を書いてた。 今日はsendagaya.rbへ行ってブログ記事を一本仕上げるのが目標。— Koshikawa Naoto (@ppworks) August 10, 2015 今日は、React.jsの会なので、RailsからReact.jsをざっくり使って見る準備をしてみます。 目指すもの sprocketsのままとりあえず進む jsのライブラリをnpmで管理したい React.jsをES6で書きたいし、JSX書きたい herokuで動かすぞ! react-railsは使いたくない 方針 sprocketsと共存するために、browserify-railsを利用し、ES6はBabelを利用します。ライブラリはそのまま、npmで管理します。 npmを入れます もし入っていなければnpmを入れましょうね。 brew install
Rubyで書いたスクリプトの起動時間を速くした話。 tl;dr bundle execもしくはbundle install --binstubsで生成して動かす実行ファイルはそこそこ遅い 一方、bundlerには bundle install --standaloneというオプションがあり、実行時にbundler無しにversion lockしたgemを使う方法を提供する仕組みで、bundle install --standalone すると bundle/bundler/setup.rb が生成される。 bundle/bundler/setup.rb にはGemfile.lockに従ったバージョンのgemのlibのパスが$LOAD_PATHにpushされるコードが書かれているので、bundlerに含まれる 'bundle/setup' を require 'bundle/setup'する
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く