トレタ開発者ブログスマートフォン用の表示で見るトレタ開発者ブログ飲食店向け予約/顧客台帳サービス「トレタ」、超直前予約アプリ「トレタnow」を開発・提供するスタートアップ企業です。2016-04-28テストデータ生成に欠かせない便利な◯◯kitの勧めiOSを担当している高です。開発しているとそれっぽいテストデータが欲しいってことが結構あります。今までは各々がローカルで都度スクリプト書いてるような状態で、僕の場合はトレタアプリの中に直接書いて都度書き捨ててる感じでした。これは相当効率が悪いですし、自分用に書いたものは人にも共有しづらいという問題があったのでこれを機にツールを作ってみることにしました。開発上の課題iOS開発をする上でこの様な課題がありました。パフォーマンス確認のために大量データが欲しいテーブル数などの設定をかんたんに変えたい外部連携が必要なテストデータが欲しい。大量データは文字のごとくです。通信時間やアプリ上での描画パフォーマンスを確認するために想定される最大のデータを用意したい。データ作成が1回だけで良ければ手で作ってもいいのですが、トレタの場合日付が軸になるので次の日には過去データになってしまいます。ならないように未来データとして作ると今度は毎回そこまで行くのが面倒という本末転倒なことになります。テーブル数も現状アプリからは1テーブルずつでしか追加と削除が出来ません。これはユーザが使う分には問題無いのですが、テストで多様なデータを用意する場合には結構手間な作業になります。外部連携が必要なテストデータに関してはアプリ上ではまずは表示の確認がしたいだけのことが多いです。charlesでレスポンスを書き換えたりしていたのですが、結構手間なこともあり、あまり実用的ではありませんでした。octokit言わずと知れたGitHubのAPIツールです。https://octokit.github.ioコマンドラインからちょっとしたことをやりたい時なんかにoctokit.rbを使ったりしますよね。こんな感じでトレタのAPIも触れるといいなぁと思いました。octokitを作ってみました。octokit.rbと同じようにgemとして作っています。予約データを作るトレタで予約を作るために必要な最低限の情報はこれらになります。電話番号にはfakerというgemを使いました。有名なgemなのでご存じの方も多いと思います。氏名に関してはfakerはふりがなに対応していないので、gimeiというgemを使いました。gimeiの説明をREADMEから引用します。日本人の名前や、日本の住所をランダムに返すライブラリです。テストの時などに使います。似たようなライブラリにfakerがあります。fakerはとても優れたライブラリで、多言語対応もしていますが、ふりがな(フリガナ)は流石に対応していません。ふりがな(及びフリガナ)に対応しています。出現率の異なるランダム値が欲しいテストデータを作るときに同じデータばかり作ってもしかたがないのである程度ランダムで作りたいことがあります。トレタの場合だと予約するときの人数はランダムで決めたい、みたいな感じです。この時に本当に単純なランダムにしてしまうと2人の予約と10人の予約が同じ回数だけ出てくるという現実離れしたデータになってしまいます。実際のデータではところどころ山があると思いますが、そこまで忠実に再現するのは既存データを洗ったりしないといけなくてちょっと大変なので簡単に大きい数字の方が出にくいようにしたいと思いました。なんか良いアルゴリズムが無いかなと探したのですが見つからず、とりいそぎベタにこんな感じで対応してみました。数字の間隔はなんとなくです。endend何か良いアルゴリズムがあったら是非教えてほしいです!どんなことが出来るようになったかこんな感じでテーブル数が100の設定で、2回転しているデータ(かなりの繁盛店!)をそれっぽく作る、みたいなことが簡単にできるようになりました。(人数が固定になってますが、先ほどのランダムロジックはここではまだ使ってなくて他のところで使ってます)また、他のPJでも使ってもらえるようになりました。現状toretakitはAPI通信とデータ生成が一緒くたになっているのでのちのち別gemとして切り出したいなと思ってます。将来的には複数店舗さんのシミュレーションデータ生成ロジックを用意して、コマンド一発でそれっぽいデータが用意できるようにしたいなと思っています。まとめ僕は普段はSwift、たまにObjective-C(既存コード)という生活を送ってるのですが、こういったツール系で普段と違う言語・環境で開発するのも楽しいものですね。pushでサーバを構築する2018年あけましておめでとうございます。2017に参加してきましたiOSエンジニアの高です。去年に引き続き、今年もiOSDCに参加し...2017-05-30トレタにおけるBigQueryの活用法についてサーバーサイドエンジニアの芹沢です。Tokyo20...2017-01-20トレタのRailsを4.2にアップグレードしましたサーバサイドエンジニアの中村です。»トレタ開発者ブログ飲食店向け予約/顧客台帳サービス「トレタ」、超直前予約アプリ「トレタnow」の開発メンバーによるブログです。Blogスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。