notebookのすゝめ会員事業部の有賀(id:chezou)です。notebookの普及活動を展開してきました。notebookとは?ひとことで言うとブラウザで動くすごい便利なREPL*1です。百聞は一見にしかず、見てみましょう。このように、Rubyの対話環境であるpryを触っているようにインタラクティブにコードを書くことができます。notebookは記録・共有・再現がとても得意です。図表があるときにその効果を発揮します。過去のコードを改変、再実行できるセルと呼ばれる入力部分にはMarkdownやコードが記述できます。ここのコードはShift+Enterで実行可能なのですが、何度も修正して再実行することができます。パラメータを少しずつ変えて再実行したりすることがとても容易です。保存をしたければそれをCtrl+Sで保存すれば良いので*2、たんなるconsoleよりもコードと実行結果を後に残すことが容易です。私も自分の主催する勉強会(kawasaki.rb)のパーフェクトRuby読書会で1年以上使っていますが、いちいちhistoryを記録に残したりする面倒がないのでとても重宝しています。notebookでは書いたコードの描画結果を埋め込むことができます。棒グラフ、折れ線グラフ、箱ひげ図など大抵のグラフが描けます。encodeされて保存されるので、notebookの中に保存することができます。グラフ付きのnotebookを簡単に共有できる保存したnotebookは簡単に共有することができます。notebook自体はjson形式で保存されるのですが、Githubのレポジトリやgistに置けばグラフなどの画像とともにそのままレンダーされます。Enterpriseをお使いの場合もnbviewerを使えばURLを使ったnotebookの共有ができます。3.0でカーネルを分離し名前も変わりました。Sparkなど様々な言語が動きます。notebookサービスの改善や新機能をリリースした時には、ダッシュボードをつくる前に、TreasureDataやRedshift、BigQueryに蓄積されたログに対してSQLでアドホックに分析しますよね。クックパッドの場合、TDとRedshiftを利用しているのですが、以前は以下の様な手順でアドホック分析をしていました。spreadsheetに貼り付けてグラフ化するダメだったら1に戻る良いグラフが得られたら共有するなんどもなんども2と3を往復するのが結構面倒です。notebookでクエリを実行しグラフを描き試行錯誤する良い結果が得られたらnotebookを共有するというように1ストップでできるようになります。これは、pandasというライブラリの恩恵がとても大きいです。pandasは、表形式のデータ構造DataFrameとグラフ描画をシームレスに扱えるライブラリです。R言語でDataFrameが生まれましたが、pandasでより便利に進化しています。pandas-tdやredshift-sqlalchemyを使うと、TDやRedshiftなどの接続も簡単にできます。実験的にBigQueryもサポートされているようです。*5さきほどのアニメーションgifでもお見せした、Redshiftのデータを扱ったものがこちらです。RepositoryからBankデータを利用しています。結婚しているかどうかという属性ごとの預金を描画した箱ひげ図や、学歴毎による年齢と預金の散布図などが描画されています。Tips環境構築Pythonに慣れていない方は、Minicondaを使って環境構築をするのが簡単なのでおすすめです。*6私はpyenvとminicondaで環境を作るのを好んでいます。Data社のブログが導入方法としてわかりやすいです。慣れている方はお好きな方法で環境構築していただければと思いますが、社内で聞くとPythonに強い人はpyenvとpyenv-virtualenvwrapperを組み合わせている人が多いようです。Redshift/TDは以下のパッケージを追加すると便利に使えます。BigQueryはpandas自身が実験的にサポートしています。consoleのURLと実行状況が出てきてとても便利です。requestを送ったら1時間チョットで対応してくれたなど、TreasureData社が手厚くサポートしてくれています。このリクエストのおかげで、jobの実行結果を後から取ることができるようになりました。パスワード周りDBに接続するためのパスワードなどは、環境変数に指定するなどして、notebookに直接埋め込まないようにしましょう。これは、notebookを共有した時にうっかりパスワードも共有してしまうのを防ぐためです弊社では、環境変数で管理するためにenvchainを使っています。notebookを起動しgitで管理することです。することで、自分用のメモを貯めては定期的にrepositoryをpushし、いい結果が見つかればそれを簡単に共有できます。notebookはPythonistaの間だけで使われているのはもったいない!と思って紹介しました。pandasはあまりPythonっぽい記法ではなく、Rubyistな方々も是非一度試してみていただければと思います。Rubyではnyaplotやdaruなどを使えばnotebookでグラフ描画もできますが、pandasに比べるとまだまだ改善の余地は大きそうです。したグラフ描画周りや行列計算が充実していき、Rubyでも科学技術計算が盛んになることを期待しています。コスト最適化についてご紹...2019-06-17レシピ検索を支えるレガシーでクリティカルな大規模バッチを刷新した話こんにちは、会員事業部の新井です。インタプリタの開発をしている笹田です。使ったセキュリティログ検索基盤の構築サービス特性にあった検索システムの設計戦略クックパッド採用説明会「クックパッドはサービスの作り手を採用したいんです。/*}*/スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。