Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ActiveAdmin Better Practices@関西Ruby会議06
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
KUROKI Shinsuke
July 11, 2015
Programming
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ActiveAdmin Better Practices@関西Ruby会議06
KUROKI Shinsuke
July 11, 2015
More Decks by KUROKI Shinsuke
See All by KUROKI Shinsuke
冴えてるRailsエンジニアの育て方
skuroki
7
11k
伝わるコードレビューのために
skuroki
5
7.4k
進行中の開発プロジェクトで増えていくテストを自動で回し続けるために行ったいくつかのこと
skuroki
11
45k
Refactoring Ruby Edition in-house reading
skuroki
0
230
ActiveDecorator導入の話
skuroki
5
260k
Other Decks in Programming
See All in Programming
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
220
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
580
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
210
どこまでゆるくて許されるのか
tk3fftk
0
470
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
510
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
140
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
160
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
190
act2-costs.pdf
sumedhbala
0
110
Webフレームワークの ベンチマークについて
yusukebe
0
200
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
100
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
230
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
220
GraphQLとの向き合い方2022年版
quramy
50
15k
Side Projects
sachag
455
43k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
230
Raft: Consensus for Rubyists
vanstee
141
7.6k
Marketing to machines
jonoalderson
1
5.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
Transcript
ActiveAdmin Better Practices 2015/07/11 株式会社Aiming 黒木慎介
自己紹介 • 株式会社Aimingのエンジニア(大阪web 開発チームのリーダー) • Railsなどを使ってオンラインゲーム運営 を助けるものをいろいろ作っています • Ruby/Rails歴5年 •
今年の5月から大阪スタジオに勤務してい ます
提供 Aimingは関西Ruby会議06に協賛しています!
目次 • ActiveAdmin概要 • TIPS初級編 • TIPS中級編 • TIPS上級編
ActiveAdmin概要 • 少ない記述量で定型的なCRUDの画面と処 理を実装できるgem – CRUD=データの登録・閲覧・更新 • 管理ツールを作るのに使ってます • 規模はかなりでかいです…
例えばこんなmodel
こういうのを書くと
こんなんとか
こんなんとか
こんなんができます
もうちょっと書くとこんな感じ
便利そうに見えるが… • 定型的なCRUD以外の処理をさせようとす るととたんにドはまりしたりする – 管理ツールの開発をしていると、定型的な CRUDでは満たせない要求が必ず出てくる – ActiveAdminで管理ツールを作る時には、い かにこのはまりを回避するかが重要になる
自分が感じるActiveAdminの問題点 • 使い始めにつまづきやすいところがある – 公式サイトが更新されていない – Rubygemsへのリリース頻度が低く、1.x系 は未だにpreのまま • コードをかなり読み込んで構造を理解し
ないと対処法がわからないことが結構あ る
まあいろいろありますが • 知っていれば回避できる問題もあるので、 それを知ってもらいたい、というのが今 日の発表の趣旨 • Bestとはいえない手段が必要なときもあ るけど、Betterな手段で不幸を回避して、 ProgrammingをEnjoyしましょう
TIPS初級編1 • ActiveAdminでググると、 activeadmin.infoという公式サイトっぽ いものがヒットする • しかし、これを読んではいけない
どういうこと? • ここでgithubのレポジトリを見てみま しょう • https://github.com/activeadmin/activ eadmin#documentation
None
どういうこと? • activeadmin.infoのドキュメントはあま り更新されていなくて、記述が古くなっ ているところが結構ある • Githubのレポジトリのdocs以下を見ま しょう
TIPS初級編2 • Rails4系に対応しているのは、1.x系だけ • しかし、1.x系はまだpreのバージョンし か出ていないので、バージョンの指定を しないと、0.x系のものを取ってきてしま う – 依存性を解決できなくてbundleがこける
Gemfileの書き方 • gem ‘activeadmin’ # NG • gem ‘activeadmin’, github:
‘activeadmin’ # OK • gem ‘activeadmin’, ‘~> 1.0.0.pre1’ #OK
TIPS中級編 • 定型的なCRUDではない処理をする場合の カスタマイズの仕方を知ろう
カスタマイズが必要なケース • 特定のmodelクラスのCRUDではない処理 を行う場合 • ModelクラスがActiveRecord::Baseの子 クラスではない場合 – CSV読むとか •
ActiveRecordを拡張するgemを使ってい て、CRUDのやり方が変わっている場合 – 複数DBとか
カスタマイズの代表的なやり方 • register_page(例を示します) • controller do … end • member_action
/ collection_action
register_pageの例
register_pageの例
register_pageの例
TIPS上級編 • ActiveAdminのページのレイアウトをい じるのは難しい • レイアウトのテンプレートファイルがど こかにあるわけではない • ActiveAdminのviewクラス(arbre)につい て理解しよう
arbre(あるぶる) • HTMLをDSLで書くためのgem • ActiveAdminの開発初期にview部分が抽 出されたもの • ActiveAdminのviewクラスは、arbreの拡 張として、複数定義されている •
ActiveAdminのviewは、これらのクラス を組み合わせて描画されている
None
None
例題 • データを表示するtableの中で active_decoratorで定義したメソッドを 使った表示を行いたい • 普通にやろうとすると、tableに渡す前段 階でdecorateを呼んであげる必要がある – コードがごちゃっとしがち
None
見た目をいじる流れ • カスタマイズしたい部分のHTMLのタグの idなどを確認する • bundle openからのgrepでみつける • モンキーパッチを書く
おさらい • ActiveAdmin概要 • TIPS初級編 – ドキュメントはGithubを見よう – Rails4なら1.0.0.pre1以上を使おう •
TIPS中級編 – カスタマイズのやり方を知ろう • TIPS上級編 – viewの構成を知ろう
他にも • あれやこれやあります – decoratorの使い方とか – 関連を含めたtableやfilterの書き方とか – メニューの並び順制御とか •
続きはQiitaで – http://qiita.com/skuroki@github – まだ書いてないネタもたくさんあります
おしまい • ありがとうございました • AimingはRailsエンジニアを募集しています! – Ruby/Rails未経験者採用実績あります • 勉強会会場提供もやってます –
グランフロント!駅近!便利!