MUGENUP技術ブログ

https://mugenup-tech.hatenadiary.com/

株式会社MUGENUPの技術ブログ

フィード

記事のアイキャッチ画像
Rails 環境別の設定ごと secrets.yml -> credentialへ移行
MUGENUP技術ブログ
こんにちは。MUGENUPの林です。 私の担当サービスは、かつてRails 5.1以下を使っていた名残で、secrets.ymlで秘密情報を管理していました。 ※現在の バージョンは 5.2.3 です。 secrets.ymlとdatabase.ymlが手動管理ということは、変更漏れによるエラーが発生してしまう可能性が高く危険です。 credentialへ移行し、変更の必要のないmaster.keyのみ手動管理する方法に切り替えることにしました。 credentialはRails5.2より追加されました。 railsguides.jp credential作成 EDITOR="vim" bin…
4年前
記事のアイキャッチ画像
新規に立ち上げるプロジェクトにWebpackじゃなくてParcelにした理由
MUGENUP技術ブログ
お疲れ様です。MUGENUP エンジニアの崔です。今回は新規プロジェクトサービスを立ち上げる時にフロントエンドの構成でWebpackじゃなくてParcelにした理由に対して話します。 フロントエンドの話 新規プロジェクトのフロントエンドはVueにするように決まってVueを使うためにはトランスファイラーが必要でJavaScriptと一緒に組み合わせるためにバンドラーが必要でした。 bundler(バンドラー)の話 最近のウェブフロントエンドをやっている方だったら当然のようにパッケージ管理にnpmを使っているかと思います。 JavaScriptのファイルの間をどう繋ぐかはAMDやCommonJS、…
4年前
記事のアイキャッチ画像
DiveでDockerイメージを覗いてサイズを減らす方法
MUGENUP技術ブログ
お疲れ様です。MUGENUP エンジニアの崔です。今回はDiveというツールを使ってDockerイメージの中身を見る方法を紹介しようと思います。 なぜ必要? イメージを作るときにCentOSやDebianのイメージ自体も300から600メガになるし、パッケージを設置したり、重いファイルを入れるとすぐギガバイトまで行くかと思います。 開発環境は多少イメージが多くてもdocker image pruneなどの立ち上がっていないイメージを消すコマンドをたたくことで容量を確保しますが、本番環境や他のイメージのベースのなるイメージだったらなるべくイメージのサイズを軽くする必要があると思います。 Dive…
4年前
記事のアイキャッチ画像
CTO Night and Day 2019備忘録
MUGENUP技術ブログ
今年初めての参加となりました。 MUGENUPの前島です。 CTO nightとは Day 1 CTOのためのamazon カルチャー keynote Unconference CTO MidNight!!! Day 2 まとめ CTO nightとは AWSが主催する日本のベンチャー企業CTOが一堂に介し、各セッションやディスカッションを通じ学びとネットワークを得るカンファレンスです。今回は約120名の参加がありました。 初参加企業は3割程度です。MUGENUPは代表の伊藤がCTO時代から通じ全て参加しているようです。 総日程は3日間で朝から晩までスケジュールが組まれており観光の時間はありま…
5年前
記事のアイキャッチ画像
AWS AuroraをR3(旧世代)からR5(新世代)に安全に変更する方法
MUGENUP技術ブログ
皆さん。こんにちは。MUGENUP エンジニアの崔です。 今回は、AWS AuroraをR3(旧世代)からR5(新世代)に安全に変更する方法をまとめてみました。 AWS Aurora Amazon Aurora は、MySQL および PostgreSQL と互換性のあるクラウド向けのリレーショナルデータベースであり、従来のエンタープライズデータベースのパフォーマンスと可用性に加え、オープンソースデータベースのシンプルさとコスト効率性も兼ね備えています。 MUGENUPはMySQLと互換性もあるためAuroraを使っています。 そこで中断させないでインスタンスの変更が可能かどうかを調査し、実際…
5年前
記事のアイキャッチ画像
SavePoint の動き方 (テナント編)
MUGENUP技術ブログ
皆さん。こんにちは。MUGENUP の osada です。 5月14日(木) に SavePoint(セーブポイント) という新サービスをリリースしました。 Save Point(セーブポイント) | クリエイティブに「安心」と「効率」をwww.savept.com MUGENUP がクラウドソーシングで培った進行管理プロセス、そしてその集大成である Workstation を リプレースし、どなたでも使えるように SaaS として提供したプロジェクト管理ツールです。 今回は、SavePoint が導入しているマルチテナントについて解説します。 SavePoint はビルディングに似ています。…
9年前
記事のアイキャッチ画像
ActiveJob から見るシリアライズとデシリアライズ
MUGENUP技術ブログ
皆さん、こんにちは。プルリクで間違った指摘をして大反省中 の osada です。 プルリクで間違った指摘をして大反省中です。 下記のコードで、何を指摘したか、お分かりになるでしょうか? class NotificationJob < ActiveJob::Base queue_as :default def perform(notifiable, user) notifiable.notify(user) end end こんなことを言ってしまったのです。 オブジェクトを丸ごとシリアライズすると、redis の容量を圧迫し、 シリアライズ・デシリアライズにも時間が掛かるので、 クラス名とidを…
9年前
記事のアイキャッチ画像
bower に table のカラムの表示/非表示を自由に選べるライブラリを追加してみた
MUGENUP技術ブログ
皆さん。こんにちは。MUGENUP のosadaです。 電車を降りようとしたら、スマホを線路に落としました! 駅員さんにお願いして取っていただいたところ、 なんと画面が割れることもなく無事でした!ラッキー! そんな運が良い osada がお送りする今回は、bower のお話です。 js のパッケージ管理ツール Bower。 皆さん使っていらっしゃいますか? 弊社では、bowerパッケージを自動でgemにしてくれるRailsAssetsというサービスを使って、 Rails上でbowerを使っています。 今回はそんなbowerのパッケージを作ってたみたので、レポートします。 要点 js ライブラリ…
9年前
記事のアイキャッチ画像
【Rails】Scaffoldされたコントローラを読んでみる
MUGENUP技術ブログ
こんにちは、MUGENUPの倉成です。 僕はRailsを使い始めてあと少しで丸2年になるのですが、初めの頃は覚えることがたくさんあって、とても大変だった記憶があります。 今回はそんな中でも、Railsで初めてWebプログラミングをする人向けに、コントローラのアクションであるnew,create,showについて解説してみたいと思います。 この記事ではソースコードは説明のため、実際にscaffoldされたコードを抜粋、もしくは省略されているコードを挿入して取り上げます。 なお、使用するコードは rails g scaffold user name:string email:string post…
10年前
記事のアイキャッチ画像
enctype='multipart/form-data'ってなんだ?
MUGENUP技術ブログ
こんにちは、MUGENUPアルバイトの倉成です。 今回は僕が前々から気になっていた、フォームからファイルを送信するときのおまじないenctype="multipart/form-data"について調べてみたので、得られた知識をまとめて見ようと思います。 また、マルチパートの情報を検索していると、HTMLのフォームだけではなく、メールのマルチパートの情報に当たることも多くありました。 調べてみると、HTMLの仕様と電子メールの仕様が似ているのは、どうやら歴史的な経緯があるようなので、後半ではインターネット成長の歴史についても少しだけ触れてみようと思います。 multipart/form-data…
10年前
記事のアイキャッチ画像
意外と簡単。HTML5のデスクトップ通知を実装してみる
MUGENUP技術ブログ
こんにちは、MUGENUPの倉成です。 最近はWebアプリでもデスクトップ通知が出来るものが増えていますよね。 今日はそんなデスクトップ通知の実装を取り上げてみようと思います。 便利なライブラリ デスクトップ通知はブラウザによって実装が異なり、各ブラウザの対応は手間がかかるので、今回はクロスブラウザ対応を簡単にできるHTML5-Desktop-Notificationsを使います。 他のデスクトップ通知のライブラリにはnotifyもあり、こちらもHTML5-Desktop-Notificationsと同じくらいのStarが付いているようです。 使い方 さて、ここからはHTML5-Desktop…
10年前
記事のアイキャッチ画像
【Rails】after_createが発動するタイミングはいつでしょう?
MUGENUP技術ブログ
MUGENUPの倉成です。 今回はRailsのCallbackであるafter_createとafter_commitの処理順番を改めて確認し、処理順番を誤解していた事によって僕が遭遇した問題ついて記事を書こうと思います。 シチュエーション ブログ記事の新規投稿があった時、購読者に対してメールを送信する。 ブログの投稿時に通知のメールを送信するような場合、記事の投稿に必要な最低限の処理のみを行い、購読者へのメール送信などリアルタイムな処理が必要でないものは非同期で処理することで、レスポンス速度を向上させることが出来ます。 非同期処理を行うためのライブラリとしてはresqueやsidekiq、d…
10年前
記事のアイキャッチ画像
初めてのVimプラグイン開発とMUGENUPエンジニアのエディタ事情
MUGENUP技術ブログ
初めまして!MUGENUPアルバイトの倉成です。こちらで書く初めての記事として、今回は僕が初めて作ったVimプラグインとMUGENUPエンジニアのエディタ事情について紹介しようと思います。 僕自身はMUGENUPでアルバイトを始めてから、Emacs, SublimeText, RubyMineといろいろなエディタに手を出していましたが、現在はVimに落ち着いています。 もちろん、それぞれのエディタには一長一短があり「他で出来たことがこっちでは出来ない」というようなことはよくありますよね。 後置記法を支援するプラグイン そんな中でも、RubyMineを使っていた時に便利だと思った「bodyが1行…
10年前
記事のアイキャッチ画像
Yammer に投稿したLGTMな画像を、GitHub に POST する Chrome 拡張を作ってみた
MUGENUP技術ブログ
皆さん、こんにちは。MUGENUP の osada です。 今回のテーマは、 Chrome 拡張を作ってみた JS の BLOB として、画像をダウンロードする GitHub 経由で、S3 に POST する の3点です。 読者ターゲットは、 画像は S3 に置きたいけど、管理はしたい 人や、 <input type="file"> を使わずに画像をPOSTしたい 人です。 注: 一部画像にモザイクを掛けてあります。copyrightを守ります Yammer から GitHub に 開発部では、社内コミニケーションツールとして、Yammer を使っています。 Yammer は社内専用の Fac…
10年前
記事のアイキャッチ画像
ruby は メソッドに return が不要なのではなく、元々そうなっているだけ
MUGENUP技術ブログ
皆さん、こんにちは。MUGENUP の osada です。 いきなりですが、問題です。 def if_expression(flag) if flag "NG" else "OK" end end Ruby は 最後に評価された値が返る と言われていますね。 では、上記のメソッドで if_expression false の返り値は、何ですか? はい、正解です。OKが返ってきますね。 ちょっと長いので、リファクタリングしましょう。 def if_modifier(flag) "OK" "NG" if flag end さてもう一度。 if_modifier(false) の返り値は、何ですか?…
10年前
記事のアイキャッチ画像
RailsプロジェクトのRSpec3.0.0へのアップデート
MUGENUP技術ブログ
皆さん、こんにちわ。MUGENUPの narikazu です。6月2日にRSpec 3.0.0がリリースされました(Myron Marston » RSpec 2.99.0 and 3.0.0 have been released!)。RSpec 3.0.0での変更点はMyron Marston » Notable Changes in RSpec 3あるいは、その日本語訳のRSpec 3の重要な変更 - 有頂天Rubyをご参照下さい。 ここでは、弊社Railsプロジェクト(Rails 3.2.18)でのRSpec3.0.0へのアップデート手順を記述いたします。この記事が皆さんのアップデート時…
10年前
記事のアイキャッチ画像
【MySQL】`SELECT id FROM news ORDER BY published_at DESC` と `SELECT * FROM news ORDER BY published_at DESC` では結果が異なることについて
MUGENUP技術ブログ
皆さん、こんにちは。 暖かくなってきたので Tシャツとサンダルで通勤しちゃったりする方、 MUGENUP の osada です。 服装に気を使わなくてよい(わけではないのですが)というのは、 エンジニアの利点の一つですよね。 さて、先日、こんな現象が持ち込まれました。 「下の2つのコードで、結果が異なるんですが……?」 News.order("published_at DESC").map(&:id) News.order("published_at DESC").select(:id).map(&:id) 今日はMySQL の order で * は特別な動きをする(ようだ)というお話です。…
10年前
記事のアイキャッチ画像
gem の内部を書き換える2つの方法 + おまけ(後から明示的に dependent: :destroy を止める方法 Rails3 限定)
MUGENUP技術ブログ
皆さん、こんにちは。MUGENUP の osada です。 いきなりですが、 gem の内部を書き換えたい! と思ったことはありませんか? globalize というgem が、内部で has_many :translations, dependent: :destroy を実行するのですが、このdpendent: :destroyを止めたい、という要望から発生した、 gemの内部の挙動をオーバライドする方法のご紹介です。 想定する読者は、ruby を使い始めたばかりで、オープンクラスやメタプログラミングを使ったことがない人です。 概要 dpendent: :destroyを止める方法として、…
10年前
記事のアイキャッチ画像
「Qiitaの中の人とQiita:Teamを使う人と共に理想のチームについて考えてみませんか?」というイベントに出てきました
MUGENUP技術ブログ
こんにちはMUGENUPの伊藤です。 2014年5月15日(木)に開催された「Qiitaの中の人とQiita:Teamを使う人と共に理想のチームについて考えてみませんか?」というイベントでQiita:Teamを使う人としてお話させていただきました。 MUGENUPでは昨年の夏頃からQiita:Teamを使っています。 以前にはIncrementsさんに事例として取り上げていただきました。 Qiita:Teamを使った議事録の共有・保存で仕事の効率化をめざす MUGENUP CTO 伊藤勝悟氏 - Qiita Blog イベント当日はIncrements代表取締役の海野さんと二人で「チーム」「組…
10年前
記事のアイキャッチ画像
ドメイン名を使ってEC2を運用していたら、ELBのスケールアウトで苦労した話
MUGENUP技術ブログ
2014年5月14日 13時00分 修正 タイトルが誤解を招くものだったので、「なぜ URL に www を付けるのか。または、サブドメインなしでは CNAME が使えない件」から変更致しました。併せて、画像に Public IP と Private IP の明記を行いました。 皆さん、こんにちは。MUGENUP の osada です。 今回は、スケールアウト時にELB(Amazon Elastic Load Balancer) を使うときの注意点についての記事です。 といっても、インフラ・エンジニアには自明のことと思いますので、読者の対象は インフラ・エンジニアではないけど、インフラもやると…
10年前
記事のアイキャッチ画像
【Rails3.2】【バッドノウハウ】includes 使用時に where で ドットを使うと想定外になるかも知れない件、または、なぜRails4 から references が必要になったのか
MUGENUP技術ブログ
皆さん。お久しぶりです。MUGENUP の osada です。 某死にすぎるゲームの1周目をクリアしたので、戻ってまいりました! 目標を達成するために大事なことは観察力である、ということを思い知らされるゲームでした。 さてそんな今回は、Rails 3.2 の includes に関するバッドノウハウの共有です。 弊社 okuda が、トライ・アンド・エラーの末に見つけた、バグの解説になります。 Rails 4 系 をお使いの方には不要ですので、何かの話のネタになれば幸いです。 includes は LEFT OUTER JOIN と eager loading の 2 種類がある Railsで…
10年前
記事のアイキャッチ画像
MUGENUP勉強会を開催しました!
MUGENUP技術ブログ
こんにちは、MUGENUPの伊藤です。 今回は先日2/27日に開催した勉強会をまとめてみました! 当日は外部の方を6人お招きし、全部で12人での開催となりました。 開催までの流れ MUGENUPの開発部では隔週木曜日に勉強会を開催しています。 元々は少人数でそれぞれの人が好きなことを発表するスタイルで、発表中にツッコミとかしながら和気あいあいとやっていました。 また、年末に外部の人を呼んでやったところ好評で、その後定期的に参加してくれるようになった人もいます。 そんなこんなで「本格的に外部の人を呼んでやってみたい!」と思い、元々MUGENUPと御縁のあったエンジニアの方や、知り合いづてなどで何…
10年前
記事のアイキャッチ画像
Rails 4.1 の spring で paralell_tests を使う方法
MUGENUP技術ブログ
みなさん、こんにちは! 2週間ぶりのご無沙汰、MUGENUP の osada です。 ruby 2.1.0、Rails 4.1 で開発した、みなゲー編集部が正式リリースとなりました! よろしくお願いします。 さて、そんなRails 4.1の新機能として、プレローダーspringが標準装備となりました。 本日はspringとparalell_testsを併用する方法についてのお話です。 要旨は下記となります。 PARALLEL_TESTS_EXECUTABLEを設定して、paralell_testsにspringを使わせない bin/rspecを書き換えて、始めのプロセスだけspringを使う …
10年前
記事のアイキャッチ画像
【探検】Railsカラム更新のメソッド1
MUGENUP技術ブログ
初めに 皆さん、初めまして。そして、明けましておめでとうございます。株式会社MUGENUP 開発部の奥田です。 今回、初めて技術ブログを書くことになりました。よろしくお願い致します。 何回かに分けてRailsのカラム更新メソッドについて書いていき、今回はupdate_attributeとupdate_attributesについて記述します。2つのメソッドは私の環境だとactiverecord-3.2.16/lib/active_record/persistence.rbにありました。以下の表は簡単なまとめです。 メソッド名 validation callback 更新カラム数 update_a…
10年前
記事のアイキャッチ画像
【拡張】論理和できるenumを書いてみた【gem】
MUGENUP技術ブログ
新年あけましておめでとうございます! MUGENUP の osada です。 2014 年は挑戦の年、ということで、MUGENUP でも新しい事業を初めています。 ゲームライター・編集者募集中|みなゲー みんなで作るゲーマー向けの攻略サイト「みなゲー」。 その攻略記事を書いてくださる方を募集しています。 スマホゲームなら俺に任せろ!という豪の方、攻略記事を書いてみませんか? 開発部でも、新しい挑戦としてRuby 2.1、Rails 4.1 で開発を初めています! 新機能 enum Rails 4.1 に enum という新機能が実装されました。 Ruby on Rails 4.1 Releas…
10年前
記事のアイキャッチ画像
【悲報】ActiveSupport::Concern の ClassMethod はモジュールメソッドになる件
MUGENUP技術ブログ
皆さんこんにちは!「太鼓式マッサージ?面白そう!」と思ったら「タイ古式マッサージ」でした。MUGENUP の osada です。名前って難しいですよね。 ところで、ActiveSupport::Concern の ClassMethod で定義したクラス変数が、どこにあるか、ご存知ですか? # app/models/concern/item_module.rb module ItemModule extend ActiveSupport::Concern module ClassMethods def my_module_method @@concern_class_variable ||= …
10年前
記事のアイキャッチ画像
シンボルでも文字列でもアクセス可能なHashを使おう!ActiveSupport {Hash編}
MUGENUP技術ブログ
皆さんこんにちは!遅れてきた最年長ルーキー MUGENUP の osada です。 さて皆さんは初めてオープンクラスという概念を知った時、驚かれませんでしたか?私はとても驚きました!だって、基本クラスさえもオーバライド可能なんですよ? [コラム]オープンクラスとは? 同名でクラス定義を行うと、クラスの再定義(上書き)ではなく、クラスへの追加拡張になる仕組み。 class A def a "a" end end a = A.new raise unless a.a == "a" raise if a.respond_to?(:b) # b というメソッドはない # 同名のクラス定義は拡張になる …
10年前
記事のアイキャッチ画像
最速で!最短で!真っ直ぐに!Facebookグループの書き込みを監視する方法!
MUGENUP技術ブログ
皆さん、こんにちは!WAというと Web Application ではなく、RPGの方を思い出す MUGENUP の osada です。 いきなりの個人的な話で恐縮ですが、私が初めて書いたWeb Application はPHPでした。当時 Web というと、「SSI で include」したり、「perl で cgi」とか、少し大掛かりだと「Java Applet」?、程度しか知らなかった私には、HTMLの中にプログラムが書けるというのは衝撃的なことでした。PHPの真髄は、すぐに動くことにあるのではないかと思っています。そしてさらに個人的な意見で恐縮ですが、ソースコードで最も価値があるのは動…
10年前
記事のアイキャッチ画像
Startup Live! に登壇してきました
MUGENUP技術ブログ
こんにちは、MUGENUP CTOの伊藤です。 12月1日の日曜日にリクルートキャリアアカデミーホールで開催された「Startup Live!」というイベントに、パネルディスカッションのパネラーとして登壇してきました。 Startup Live!ってなに? 開催概要についてはatndなどに書いてあるので引用します。 【現在参加者100名突破!更に増席50席分はこちら!】12/1(日)開催、話題の急成長スタートアップ8社の経営者が登壇!Start up Live! : ATND ■開催背景 2010年以降ソーシャルメディア、スマートフォンなどの各領域の拡大や日本のベンチャーキャピタルの投資規模拡…
10年前
記事のアイキャッチ画像
should を捨て expect を使うようになった、たった一つの理由
MUGENUP技術ブログ
皆さんこんにちは。スーパーのビニール袋は濡れタオルを触ってから開ける方、MUGENUP の osada です。 今回はexpect について調査したことを書きたいと思います。 ターゲットは、rspecが上手く書けなくて、気が付くと3時間もテストを書いている、というようなrspec初心者です(実話)。 中間管理職 expect さん では、本題のexpectです。まずは問1から。5秒で答えてください。 describe Person do it "should be a instance" do expect{Person.new}.to be_a(Person) end it "should …
10年前