備忘録: rack-mini-profilerを使うときはRails.envを確認しようの話
環境: rack-mini-profiler: v1.1.3
業務にて、Railsアプリのパフォーマンスチューニングにrack-mini-profiler
を使っていた。
検証用環境でrack-mini-profiler
を使おうと思ったのだが、なぜか左上の計測窓が表示されず、どハマりしてしまった...。
原因は、Rails.env
の値を確認していないことにあった。
rack-mini-profiler
はRails.envの値を見て development
もしくはtest
でない場合、自動で表示されない仕組みになっていた。
業務の検証用環境は、別途staging
のenvを追加して運用していたため、気がつきにくかった。
最初はハマって悲しい気持ちになっていたが、これはproduction環境で実行されないようにという心配りなのですね。
ApplicationControllerか何か適当な箇所でRack::MiniProfiler.authorize_request
を実行してあげることで、無事計測窓が表示されましたとさ。
【第4回】ReactNativeにゆかりのあるスタートアップが集う会 参加レポート
はじめに
ふたたびReact Nativeの勉強会にブログ枠で参加した。
https://r-n.connpass.com/event/126775/
前回に引き続きシャンパン枠のひとが開幕と同時にシャンパンを開けてひと盛り上がりするし、今回はFlutter枠というRNのライバル(?)フレームワークの発表がいくつかあったり、技術書販売枠の人が先日の技術書展で出した本を売っていたりした。
謎の刺客がシャンパンを持って現れた!#RNstartup pic.twitter.com/kG0Hx63Rre
— かん / ワンディー株式会社COO (@kangyoosam) April 25, 2019
この勉強会はそんな独特な枠があったり、テーマやRN歴/プログラミング歴の縛りなどがないので、良い意味のカオスというか、Melting Pot感がある。
個人的には毎回新しい話題に触れられるし、知らないことに「?」となることも多いが、知るためのモチベーションにも繋がりやすいので、よいと思ってる。 来月(5月)はおやすみで、6月に渋谷にて100人規模で開催するらしい。楽しみ!
tl;dr
- 今回は
Flutter
とTypeScript
回だった- Flutterの強み: 描画ロジックがOSに依存しない、ホットリロードの速さ
- Googleの開発する言語だし、将来性はかなりありそうな感じ
- Flutterの強み: 描画ロジックがOSに依存しない、ホットリロードの速さ
- TypeScriptのAny容認派/Any断固反対派の溝は深い
- 容認派の意見
- ひとまず入れることだけでも意味は大きい
- Anyを入れることでゆるやかに導入できる
- 断固反対派の意見
- 型の安全は完全にしないと意味がない
- Any入れるくらいならTSにしないほうがマシ
- TS使ったことない/ゆるい型の言語しか馴染みのない自分としてはまだピンときてない
- チーム開発/スピードが求められるところだと、あんまりカッチリしすぎてもうまくいかないような気はする...
- 容認派の意見
広告計測してと言われた時にReact Nativeエンジニアが詠む資料
発表者
@syokenz さん 株式会社キッチハイクのCTO。
キッチハイクの広告計測の概要
- AppsFlyer, Google Analytics for Firebaseの二刀流
- 広告タップ〜アプリインストール(アプリ外部/ユーザ獲得)の計測: AppsFlyer
- アプリ起動後〜課金(アプリ内部/ユーザ行動)の計測: Firebase
なぜ分けているのか
- AppsFlyerとFirebaseでは得意分野が違う(失敗談でも触れる)
- AppsFlyerでもアプリ内分析はできないことはないけどFirebaseの方が得意
- Firebaseでもアプリ外分析はできないことはないけど(略)
使用ライブラリ
- react-native-appsflyer
- AppsFlyer公式
- READMEが充実しているし、サポートもすぐ答えてくれる
- react-native-firebase
- サードパーティだが、公式サイトでも紹介されている
- 多機能
使い方
- イベント内部でtrackEvent関数をコール
失敗談
- ストアで見るより新規インストールが多い
- AppsFlyer SDKを入れたアプリへのバージョンアップでも計測されてしまう(AppsFlyerの営業さん談)
- AppsFlyer側のDBにIDがないと新規ユーザとしてカウントされてしまうため
- Debugビルドでも計測されてしまう
- 開発環境ではif文で止めましょう
- Firebaseで全部やろうとした
- Firebase Dynamic LinkがAppStoreの計測でうまくいかなかった
- AppsFlyerの導入で解決
- AppsFlyerで全部やろうとした
- Firebaseのアプリ内分析が使いやすい
- Audiencesによるフィルタ
- アプリバージョンや年齢などのプロパティがデフォルトでセットされている
- Audiencesでフィルタしたユーザにプッシュ通知を標準機能だけで実現可能
- AppsFlyerでは有料
- Firebaseのアプリ内分析が使いやすい
Vue.js - ReactNative - イマ Flutter
発表者
@oligin020 さん
株式会社ファームノートのインタラクションデザイナー/フロントエンドエンジニア。
デザインツールSTUDIO
の技術顧問も担当。
MLP(Minimum Loveable Product)の概念
- MLP(Minimum Loveable Product)
- 愛される最小のプロダクトを作る
- MVPでは作り込みは悪とされる風潮がある
- 演出の作り込みができない
どうやっているのか
- プロダクト設計のサイクルとデザイン設計のサイクルを分離して、2つのイテレーションを回す
- Bootstrapのようにデザインフレームを作り込んで、プロダクトに混ぜ込む
RNでインタラクション実装はたいへん
- アニメーションの表現を追求すると、RNだと物足りなくなる
Flutterへの移行
- 描画結果がOSで変わらない
- 触り心地の良いUIを実装できる
- プラットフォーム固有のバグも少ない
- Google 謹製
- RNを書いていたら、1ヶ月くらいで書けるようになる
- Webのほうは腹をくくって書き直す
- アーキテクチャ、設計思想が近いので読み替えでいける(状態管理など)
VueNativeとReactNativeでキメラアプリを作っている話
発表者
@iwsksky さん 株式会社ジラフのエンジニア。 質問箱をRNで書いている。Android開発歴が長い。
VueNativeをRNと共存させつつリプレイスしていっている
- VueNativeとは: Vue.jsでアプリをクラスプラットフォーム開発できるRNのラッパー
- なぜリプレイスするのか(VueNativeのつらみ)
- RN以上にドキュメントが存在しない
- ライブラリがただラップしているだけのものが多い
- 依存モジュールのバージョンが古い
- 完全に開発止めるのはむりなので、緩やかなリプレイスしていってる
いちおう共存はできてる
transformer
をかませることで、一緒にビルドできる- propsの定義さえ一致していれば、tsxからVueを呼べるので、既存のコンポーネントをよびだせる
- アーキテクチャは共通してる
- vuex, reduxの共存も、(冗長になるが)できる
PanResponderを振り返る
www.slideshare.net
発表者
@14__oz さん 株式会社オープンエイトのAndroid(Kotlin)/RNエンジニア。
PanRespnderとは
フリック入力をつくる
- x軸, y軸にどのくらい動いたかを判定する機能を使う
- タップ判定を定義する
- x軸/y軸方向への動きの量が基準値より小さかったらタップと認識する
- フリック判定を定義する
- x軸/y軸方向への動きの量が基準値より大きかったらフリックと認識する
- フリックの方向は移動量の差分の正負で判定できる
JavaScript製npmパッケージをTypeScriptで書き直した話
発表者
@hmktsu さん 株式会社g&hのエンジニア。 実践Expo の著者で、先日の技術書展で#1人チーム本を出版している。
自前のJSライブラリをRNでリライト
- react-native-simple-twitter
- react-native-store-version
- ストアに公開されているバージョンとインストールされているバージョンを比較してくれる
やる作業
- jsx記述があるjsを.tsxに変更
- jsx記述があるjsを.tsに変更
- d.ts(型定義ファイル)に型を記述する
- パッケージにどんな型の関数があるかを教えてくれる
- 型がわからないとき、悩んだときはanyつかえばいい(any容認派)
所感
- eslintがTSに対応したのでとても楽
- npmで公開する場合と、通常のアプリ制作ではConfigファイル(tsconfig.json)に設定する内容が違う気がする
- d.tsを自動でひとつにまとめることはできない
- 現状では、中規模以上のライブラリだと複数d.tsがあることを容認する必要がありそう
Flutterはなぜ楽しいのか
発表者
@eyasuyuki さん フリーランスのAndroid/iOSエンジニア。
Flutterのいいところ
- 環境構築が楽
- デフォルトで入ってるLintが便利
- Firebaseとの連携も楽
- Dartの言語仕様がシンプル
- Javaにけっこう似てる
- ホットリロードはやい
- UI構築が楽
- すべてが
Widget
という概念
- すべてが
- Android StudioにFlutterのプラグインを入れるだけで書き始められる
- ゆくゆくはmacOS, Windowsアプリ, Webアプリの開発もできるようになる構想がある
Debugging React-Native
発表者
@natural_clar さん
デバッグツールの使い分け
- 以前はreact-native-debuggerを使っていたが、やめた
- 動きが重くなった
- Hooksとの互換性がない
- 以下の2つを用途によって使い分けている
- debugger-ui(デフォルトのデバッグツール)
- なんだかんだで機能が揃っている
- react-devtools (おすすめ)
- state変更の速度を計測できる
- inspectorでスタイルの調整とかもできる
- debugger-ui(デフォルトのデバッグツール)
【第3回】ReactNativeにゆかりのあるスタートアップが集う会 参加レポート
はじめに
React Nativeの勉強会にブログ枠で参加した。 r-n.connpass.com
シャンパン枠なる謎の参加枠があり、LT開始時にシャンパンが開けられて終始テンションの高い感じだった。 一瞬戸惑ったけど、振り返ってみると懇親会の時の人にいつもの勉強会よりかなり人に話しかけやすい雰囲気ができていたし、そういう盛り上げ方大事だな〜と思った。
Twitterのハッシュタグもけっこう盛り上がっていた。 https://twitter.com/hashtag/rnstartup?vertical=default&src=hash
自分はReact Native始めたばかりで、わからないことが多くて悔しかったので、どんどん吸収していきたい。
以下にLTとパネルディスカッションの内容をまとめてみた。
tl;dr
- みんなの関心は ネイティブ or Expo と テスト
- 次点でNative Module, ツール周り, 開発工数/速度
- Expo使ってる/使ってないはちょうど半々くらいだった(Expo意外に多い)
- テスト書いてるのは少数派だった😢
- RNあるある: 必要な情報が探しにくい
- 公式とライブラリのドキュメントで情報が分散してるケース
- そもそもライブラリのドキュメントが見づらかったり書いてなかったり
- よってかなりハマるケースもある、生の知見がだいじ👀
- 案件の見極め大事
- RNコミュニティの層の厚さ
- ゴリゴリに新しい技術を追っているところ
- 少ないリソースで開発してるところ
React製WebサービスをReactNativeでアプリ化した話
発表者
@t0m0210s さん
工数
- 約4ヶ月でリリース
- 11月〜2月で開発
- 1月にNativeModuleとデザインのブラッシュアップ
- 2月末〜 課金、Apple審査
- 3月テスト
開発
- 1, 2週間に一回、リリースビルドしたアプリを触る会をやった
- 機能追加や改善含めブレストする
- WebViewをどんどん使う
- グラフや課金モーダルはWebViewで実装した
- 変更の多いところ、複雑なところはWebViewを使う
- 開発は iOS のみに注力
リリース時にやっておいてよかったこと
- Sentryによるエラー検知(一番やっておいてよかったこと)
- Bitriseによる自動リリース
- AppsFlyer, FirebaseAnalyticsなどのアナリティクス周り
- AppFollowなどのAppStoreレビューやアナリティクス通知
RNの良い点・辛い点
良い点
- WebのReact資産があれば、爆速で開発ができる
- Reduxなどは、ほぼそのままWebのものを持ってこれた
- インターン生などの開発経験が浅い人との役割分担ができた
- 途中で大幅なデザインブラッシュアップがありつつも、爆走で開発できた
- もし資産がなくても、フロントエンドエンジニアがいればけっこういける
- いいパッケージがあればコピペでNativeが動く
- WebのReact資産があれば、爆速で開発ができる
つらかった点
react-native-firebaseのあるある早く言いたい
www.slideshare.net
発表者
@tkow39 さん
- ReactNativeにゆかりのあるスタートアップが集う会 LT皆勤賞
- Leverages 新規事業開発所属、元teratail開発メンバー
- terascout をiOS版のみリリース(β版)
react-native-firebase
- Firebaseを使うなら、firebase-web-sdkよりもreact-native-firebaseのほうが高機能
- Expo の eject推奨
- 自分が使いたい機能だけ使うことができる
Authentication
以下のような機能が一瞬で実装できる
あるある: 同じメールアドレスで違うSNSアカウントを登録できないことにハマる
- できなくはないがバグが多い
- Firebaseの設定でdisableにするのを推奨
DeepLink認証
- リンクを開いたデバイスの種類によって挙動を変えられる
直接アプリに遷移もできる
あるある: ドキュメントがいろんなところに分散している故に初期設定が超めんどくさい
- RN公式
- Firebase公式
- react-native-firebase
handleCodeInApp
をtrueにするとappに直接飛べるになる
(FireStoreについては発表時間切れになってしまったので、スライドを参照。)
React Native アプリをどうテストしてますか
発表者
@L_e_k_o さん
- CureAppのチーフエンジニア
- Javascript(Node, TypeScript, React Native)
前提
- E2Eテストじゃないとテストできないことを、単体テストに切り出していく
- Universal Javascript(ふつうのJS)はテストできるので、それ以外の箇所
ミドルウェアのモック
import
した外部ライブラリを直接使うとモックしづらい- 高階関数から渡してあげるようにするとモックしやすい(
interface injection
) - jest.mockでも可
テスト断面
- 複数の条件が必要なテストはめんどくさい
- テストはめんどくさいとどんどん書かれなくなっていく悪循環
- 事前条件をゆるくしてあげる(= テスト断面を増やしてあげる)
Node.jsのテスト
- supertestというライブラリが便利
- Cookieの引き継ぎとかもできる
- supertestは実質E2E
- HTTP層とロジックを分離してあげれば普通にかける
コンポーネントのテスト
- storybook/storyshots
- Storybook使っていれば && コンポーネント自体が複雑なロジックを持っていなければ使える
- storiesを定義しておくだけでスナップショットテストができる
- 少なくともエラーが起きないかどうかをテストできる
- propsのパターンを網羅するのだけがめんどくさい
ネイティブモジュールのテスト
- 一部のネイティブモジュールはSimulatorではテストできない
- ex: Bluetooth, Push通知
- 現状は実機でまごころこめて動作確認しかない...?
RN の Upgrade に近道なんてねぇんだよ
発表者
@natural_clar さん
RNをアップグレードしたい理由
- 0.56: Babel 6 から Babel 7 に移行した
- 0.57: TypeScript の導入が容易に
- 0.59: React Hooks が使用可能になる
RNをアップグレードせざるを得ない理由
- 0.55.4: 日本語、中国語の変換が確定されてしまうバグ
- 0.57.2: (monorepo の場合)他の Package にある Assets から画像が読み込めないバグ発生
- 0.57.5: XCode 10の新ビルドシステム対応
アップグレードでやらなきゃいけないこと
- Dependency対応
- build.gradle, .pbxproj ファイルの変更
- Native知識がないとツラい
- Babelのライブラリ(0.56での鬼門)
- rn-cli.configの変更(0.57での鬼門)
- バージョンアップは0.56と0.57が鬼門で、それ以降は辛くない
バージョンアップツール
- RNのバージョンアップツールはワークしなかった
- (旧)react-native upgrade
- react-native-git-upgrade
- 動かなくなって、Killされてしまった
rn-diff-purge
で差分を見て粛々とDiffを見ていくのが一番の近道- 0.59 以降ならこれを用いた新react-native upgradeが使用できる
React Native×GraphQLで開発したら便利だったお話
発表者
@mediaboxe さん
- ORSO テクニカルリレーションマネージャー
- 最近はReactNative, LineClova, IoTをやっている
GraphQLとは
- Web APIの規格のひとつ
- queryリクエストとmutationリクエストの2つでできている
- RESTでいうとqueryはGET、mutationはPOST, PUT, DELETEにあたる
- queryはクライアント側で欲しいパラメータを指定できる
- mutationは戻り値で欲しいパラメータを指定できる
- React NativeだとApollo Clientというモジュールがデファクトスタンダード
Apollo Client
- キャッシュの自動更新が便利
- キャッシュの更新が簡単
- API数が減らせる!
- 取得パラメータを改修しやすい
- デメリットもある
- キャッシュの追加と削除は大変
- 通信のエラー制御が大変
- アラートだらけになってしまう
E2EテストライブラリDetoxの導入でハマった話
発表者
@ariiyu さん
- ウォズ株式会社 代表兼エンジニア
- RN歴1年半、iOS歴4年以上
- キッチハイクの開発を手伝ってくれてる
Detox
Detoxの仕組み
- テスト層とアプリ層をDetox serverが仲介する
- テストは非同期
- Detoxは自動的にテストとアプリを同期する
- sleepを書かなくてすむのでテストが安定する
テストがコケる
- テストがハングしてタイムアウト
- 非同期オペレーションを待機し続けてしまう
- 要素が見つけられない
- 待機が十分でない
発生したバグ
- 無限ループのアニメーションでハングアウト
- デフォルトでアニメーションが終わるのを待機する
- 対象の要素が出現前にテストが失敗する
- Push 通知許可のアラートを押せない
- あらかじめ設定しておく
- Androidで要素が検出されない
地道なデバッグ
- エラーログをみる
- 待機が長い処理を調べる
detox test --debug-synchronization 10000
- Xcodeの
Debug View Hierarchy
でビューの階層をみる - コンポーネントごとにコメントアウトしていく
Detoxどう?
- テスト自動化できそう!
- ドキュメント、issueはまとまっている
- 自動同期はいつもうまくいくとは限らない
- 現状はワークアラウンド必須?
- テストのときだけファイルの差し替えなど
- そもそもアプリの実装、テストコードの見直しも必要
WebエンジニアのReactNativeでの戦い方
www.slideshare.net
発表者
@NaoshiHoshi さん
現状
- iOSのアプリの開発継続が困難だった
- 実装者は退職済み、仕様を知っている人が非エンジニアしかいない
- エンジニアは自分と学生バイトのみ
- ネイティブアプリの開発知識はなし
- ネイティブアプリエンジニアの採用も困難
RNに踏み切った背景
- PMFを目指して高速で開発したい
- 限られたリソースのなかで効率よく開発したい
- PWAと悩んだが結局RNにした
- メインのユーザー層が若いのでアプリの方が使われそう
- PWAだとデザイナーの採用難易度が高くなる
Webエンジニアの戦い方
- JavaScriptの世界で戦う
- expo detachは絶対しない
- ビジネスサイドとの期待値調整をやる
- ReactNative + Expoでできないことはやらない
パネルディスカッション(抜粋)
パネラー
@t0m0120, @natural_clar, @mediaboxes, @ariiyu
Push通知/ネイティブ機能が不要なアプリを作りたいとき、PWAとRNどっちでつくる?
- 機能要件だけじゃなく、ユーザ層も含めて検討する
- RNにするなら
- ストアからの流入を見込みたい場合
- いずれPush通知/ネイティブ機能が必要になりそうな感じがする場合
- 対象のユーザ層が若い場合
- PWAにするなら
- 更新が早い場合
- 複雑さや自由度を求められる場合
業務委託のエンジニアって採用している?
採用している。 主にUI系のタスクや、Storybookのコンポーネントを作ってもらうなどの疎なタスクを渡している
Pushのテスト気になる、社内の端末かきあつめている
Push通知のテストはまだ知見がなく、どこも自動化はできていない。
ejectの是非とタイミングについて
- 要件に依存する部分が大きい
- Bluetooth を使う機能などは、Expoでは実現できない
(Expoを使っている人に)Expoを使っているなかで、Expoが理由で泣く泣く諦めた機能とかある?
- 要件を全く満たせないことは少ないが、細かい仕様が満たせなくて歯がゆい時は多い
- 例1: スワイプ機能の細かい処理(
react-native-swiper
) - 例2: Facebookなどのシェア機能
- 例1: スワイプ機能の細かい処理(
ゆるゆるRSA暗号 その1 - なんちゃって実装編
RSA暗号を自前で実装してみた。 現状いくつか問題があるが、公開鍵/秘密鍵の生成, 数値の暗号化/解読ができる。
使い方
[narukami894] ruby $ irb irb(main):001:0> require "./rsa" => true irb(main):002:0> RSA.generate Public Key: '291311:290231' Secret Key: '290231' => nil irb(main):003:0> RSA.encrypt(42, '291311:290231') Code: '6936' => nil irb(main):004:0> RSA.decrypt(6936, '291311:290231', 290231) Message: '42' => nil
モチベーション
ブログのネタが欲しかった
セキュリティマネジメント試験の勉強をしている時に、そういえばRSA暗号ってどういう仕組みなんだろう?ってふと思い。
所感
RSA暗号についてのWikipediaや他のブログ記事をみながら作ったもので、 数学を高校の数IIBで投げ出した自分には公式の定義をみた時に多少アレルギー反応が出たが、いざ書いてみるとたった60行程度で実装できて、驚いた。
あらゆる場所で使われている強固な暗号の原理がこんなシンプルなものっていうのに単純に関心する。やはりシンプルなものは強くて美しいのだ。 ただ現状だと、桁数が大きい時にエラーが出てしまうので生成する素数の桁をかなり小さくしている。たぶん速攻で解読されてしまうと思う。
前述したが数学の知識が皆無なので、乱数の生成はprime
ライブラリに頼り、
秘密鍵の生成は素のrubyだと遅かったので、techrachoに出てきたインラインC拡張ライブラリを使うなどした。
(正直RubyInline
を使ってみたかっただけで、実際に速度を測ったわけではない。次回測るか)
おわりに
車輪の再発明(と言えるのかも怪しいくらい)ではあるが、他の実装をカンニングしなかったことは自分を褒めたい。 一応その1と銘打っていて、次回は答え合わせとしてRubyの標準ライブラリのOpenSSLを見たり、他の人のブログのRSA暗号の実装を見てみることとする。 docs.ruby-lang.org
Metabase 0.30のリリースノートを翻訳したものが出てきたので貼る
過去に会社のTech BlogでMetabaseの記事を書くときに、0.30のリリースノートを翻訳したものを使おうと思っていたのだけど結局使わなかった。 さっきノートを整理していたら出てきたので、かなり今更だが貼っておくとする。 ブログを書いたのが去年の8月で、Metabaseの最新版は0.31.2になっているのかと思うと時の流れは早すぎる...。
Metabase 0.30 - 成長のタイミング
最初にMetabaseのライセンスをオープンソースにしてから二年半近くが経ちましたが、私たちチームのほとんど誰もが、このプロジェクトがどこに向かうのかを予測できませんでした。 はじめMetabaseは、小さなスタートアップや非営利団体が、膨大かつ混沌としたデータの海に浮かぶ確かな情報という名の島にたどり着けるような牽引力を与えられるようなツールだと思っていました。 しかし今や、何千もの大小の革新的企業が、彼らのビジネスのためにMetabaseをデプロイしているなんて、我々は予想していませんでした。 ご存知の通り、Metabaseはより小さな規模のチームのためにデザインされたと感じますし、実際そうでした。 そもそもMetabaseは我々のような、小さくてまとまりがなく、データ権限についてあまり心配しなくてもいいようなチームに向けて作ったからです。 Metabaseをどのように使用しているかを多くのチームと話し合った結果、そろそろMetabaseも少しだけ大きくしなければならない時が来たようです(安心してください、やりすぎませんよ)。私たちはMetabase 0.30を、どんなサイズのチームでもよりよく使えるように再編成してリリースしました。
コレクション
もっとも多かった要望を叶えるために、ダッシュボードをコレクション内で管理するようにしました。 Metabase 0.30 では、コレクションが最上級市民になりました。 ダッシュボード、クエスチョン、パルスが(いずれはメトリクスやセグメントも)コレクションの下で管理できるようになり、必要なデータがすぐ見つけられるようになりました。 コレクションはネストすることができ、データを内部的にどのように扱うかに合わせて設定することができます。 注意: もし過去のバージョンから0.30にMetabaseをアップグレードする場合、ダッシュボード・パルス・その他のクエスチョンは新しい場所に移動します。詳しくはこちら。
ピン機能
たくさんのデータ群のなかから重要なものを見つけ出すのはちょっと難しいですよね。 コレクション内のアイテムを見つけやすくするために、重要なデータをページの先頭にピン留めできるようになりました。 重要なデータを速く簡単に手に入れられるように、"Our analytics"にピンしたデータはMetabaseのホーム画面にも表示されます。なので、やることはログインしてアイテムをクリックするだけです。
権限管理
データを扱う作業は、データを触る権限のある人のみがダッシュボードやクエスチョンにアクセスでき、逆に触ってはいけない人間が触れてはいけないものです。 ユーザが見ることのできるダッシュボードやパルスを、コレクション単位で簡単にコントロールできるようになりました。また、グループの権限もすぐに変えられます。
個人のためのコレクション
Metabaseのすべてのユーザは自分のコレクションを持てるようになりました。個々人の必要なクエスチョンやダッシュボードを作成できます。 これによって、全体のスペースをきれいに保てるだけでなく、個々人がよりデータの探索をしやすくなります。
アプリ内横断検索
昨年第3期のマーケティングの数値を、他のコレクションの中から見つけ出す必要があるのですね? 横断検索機能がナビゲーションバーに実装され、どこにいても欲しいデータを見つけ出すことができるようになります。 また、コレクション内や検索結果のなかでアイテムのタイプ(ダッシュボード、クエスチョン、パルス...)をフィルタリングできます。
データブラウジング
私たちの核となる考えのうちのひとつは、データを人に近づけると、いいことが起こるということです。 メインページから直接データを参照できるようになり、作業をするために必要な生のデータに簡単にアクセスできます。
比較
例えばあなたがGizWidget社で働いていて、ウィジェット類の売上が機械類に対してどのくらいなのか、興味ありますよね? 棒グラフや折れ線グラフをクリックすることで、そのデータと他のすべてのデータとを比較することができます。 もしx-rayを表示しているのなら、そのセグメントと他のセグメント、もしくはテーブル全体と比較するオプションも閲覧できます。
データ比較
テーブルオタクたち大歓喜! テーブルで条件付き書式の追加ができるようになり、データの大小・増減を強調できるようになりました。 この設定はパルスにも反映されます。
リレーションのあるテーブルのカラム参照
もうひとつテーブル大好きなみなさんのために。表示したテーブルのリレーション先からカラムを追加して、好きなように並べ替えができるようになりました。
スペイン語版が公開されました
また、Metabaseの最初の翻訳版として、スペイン語版をリリースしたことを大変嬉しく思います! Github上の友人であり、難しい仕事を成し遂げてくれたJoe Bordesに多大なる感謝を送ります。 この件については近々投稿するので、乞うご期待!
バグ修正
50以上のバグ修正・改善もさながらジャムのパックのように詰め込まれています。こちらから修正の一覧を確認してみてください。
バージョン 0.30 にするには
このリンクからMetabaseの最新版を常にダウンロードできます。 www.metabase.com/start/
アップグレードする場合、大きなリリースで多くの変更点があるため、まずこちらの「0.30にアップグレードする前に確認しておくことのリスト」をチェックしてください。また、こちらのプラットフォームに合わせた説明を読んでください。 毎回のことですが、データベースのバックアップをとることを強く推奨します。
フィードバック募集
このクールな変更を楽しんでもらえたなら、皆さんがどう思ったかをぜひ聞かせてほしいです。 以下の簡単な調査フォームから、みなさんの考えをシェアしてください!
いつもMetabaseを使っていただきありがとうございます。また次の機会にお会いしましょう!
【メモ】React Native iosのbuild時にerror: bundling failed: Error: ENOENT: no such file or directory, uv_cwd at Object.resolve が出るとき
Buildは成功するけど、エミュレータで上記のエラーが出て怒られてしまうとき。
https://github.com/facebook/react-native/issues/21038#issuecomment-420193598 を参考に、
いったん killall node
と rm -rf ios/build/
をしてから、
再度 react-native run-ios
を実行すると起動できた。
他のnodeのプロセスもkillしちゃうから、本当はちゃんと ps aux | grep node
とかで調べてやらないといけないのだけど、現状これで良しとする。