よしたく blog

ほぼ週刊で記事を書いています

MOBILITY:dev に参加してきた!

10/31に渋谷で開催された 「MOBILITY:dev」 に参加した。MOBILITY:devは、最近盛り上がりを見せているMaaS(Mobility as a Service)についてのカンファレンスだ。当日は交通系データのフォーマットであったり、データが整えられていない企業に対する取り組みが話されていた。また実際に自動運転の技術に対する取り組みや、そのバックエンドではどういうシステム構成が取られているかが語られた。このカンファレンスに参加するまでMaaSという言葉を初めて聞いたようなレベルの知識であった自分だったが、基本的なことが多くのことを知れるいい機会だった。

MaaSとは?

そもそもMaaSとは何なのかについて説明する。国土交通省が提示しているものを引用する。

MaaS は、ICT を活用して交通をクラウド化し、公共交通か否か、またその運営主体にかかわらず、マイ カー以外のすべての交通手段によるモビリティ(移動)を1つのサービスとしてとらえ、シームレスにつなぐ 新たな「移動」の概念である。

具体的にどのようなサービスがあるのか

カンファレンスの中では、「移動が所有から利用になる世界」「移動のサービス化」といった言葉が使われていた。具体的にどのようなサービスが展開されているのかといえば、フィンランドの企業「whim」が紹介されていた。「whim」は世界初のMaaSを展開する企業であり、鉄道バス・タクシー・自転車を検索しきっぷなどを購入できるサービスを展開している。イメージとしてはGoogleマップで検索した経路で利用する交通機関を一括で予約してくれるサービスという印象だった。こちらも総務省にてまとまった説明の文章があったので引用する。

MaaSを世界で初めて都市交通において実現した事例として注目されているのは、フィンランドヘルシンキベンチャー企業「MaaSグローバル」が提供するサービス「Whim(ウィム)」です。Whimは2016年にヘルシンキの交通当局と行った実証実験のあと、正式にサービス開始されました5。利用者は各自の利用形態に応じて、毎月49ユーロ(約6,300円)、毎月499ユーロ(約64,000円)、あるいは1回ごとの決済の3つの料金プランを選択し、それによって得られるポイントで、Whimが提示するいくつかの交通経路から最適なものを選択し、予約、乗車、決済まで一括して利用することができます。Whimが提示する交通手段には電車やバスなどの交通機関のほか、民間タクシーやバイクシェア、個人の徒歩や自転車などもあり、スマートフォン等のアプリ画面を提示するだけで、指定した交通手段を利用できます。

自動車の配車アプリを提供しているUberも「Express Pool」という新しいサービスを展開し始めている。数名のユーザに配車地点へ集合してもらい、そこから全員で目的地周辺まで運ばれる相乗りサービスもある。日本でも次のようなものがいくつか出始めている。 - My Route - Izuko - WILLER - EMot

キーノートの資料はこちら

www.slideshare.net

カンファレンス内容

カンファレンスはメインホールとサブホールの2トラックで開催されていた。自分が参加したものは下記である。

  • 「ITエンジニアこそ実現できるモビリティのサービス化」
    • 伊藤 昌毅
  • 「GTFSオープンデータで公共交通をアップデート」
    • 伊藤 昌毅
  • 「Webエンジニアが自動運転企業でやっていること」
    • 森本 潤一
  • 「アプリケーション エンジニアのための Cloud Spanner Deep dive と BigQuery GIS
    • 高田 泰志
  • 「自動運転車を動かすサーバレスシステムの中身」
    • 須山 温人

connpassのページに行くとすべての登壇タイトルが見れるので、他の発表が気になる人はこちらを見てほしい。

mobility-dev.connpass.com

GTFSオープンデータで公共交通をアップデート

一番印象に残っているこちらの発表について感想を述べる。GTFSと呼ばれるオープンデータのフォーマットについての話が多かった。GTFSはGeneral Transit Feed Specificationの略で世界中で地理データのフォーマットとして扱われている。国内ではGTFS-jpで「標準的なバス情報フォーマット」と呼ばれるフォーマットが作られている。

www.gtfs.jp

GTFS形式のデータを作るにはいくつかやり方がある。発表中に紹介されていたものは次の3つだ。

またデータの作り方に関連して、データの精度についての説明もあった。今記事を読んでいる人も経験があると思うが、Googleマップなどを使っているときに「バス停位置が不正確」「乗り場がわからない」ということがなかっただろうか。これはGTFS形式のデータが不正確であることに原因がある。企業からデータが提供されていることが非常に嬉しいが、不慣れな土地に行ったときにこまることも多いので正確であってほしい。実際に、とある地方では、バス停の位置が200mずれていたそうである。個人が作成するときにも事業者が必要と思うレベルでの情報精度が必要である。発表の中では佐賀県青森県が丁寧に作ってることが言及されていた。

公共交通のデータ流通の現状や、公共交通データのグループについても説明がされていた。Googleマップジョルダンからデータをもらっていることがわかった。

GTFSの中は次のようになっている。

f:id:yoshitaku_jp:20191103163435p:plain
http://www.mlit.go.jp/common/001283244.pdf 5ページ目

データはPostgreSQL拡張機能PostGISを使うのがOSS RDBを使う選択肢とするのであれば第一候補となるようだ。

スライドが非常に多かったため、発表中の説明としては以上になる。今回説明に使われたスライドがアップロードされているのでURLを貼っておく。

www.slideshare.net

おわりに

いくつか発表を見てきたが、発表資料も見つかりメモも多くとっていたものについてブログにまとめた。 今回が第一回と言うことで今後も継続的に開催されることを願いつつ、自分自身としてもMaaSについて学びを深めていきたい。

じぶん Release Notes 0.29.6

f:id:yoshitaku_jp:20191101154200p:plain

10月1日〜31日のあいだの出来事がリリースされました。

技術・開発関連

技術面での取り組みは以下の通りです。

  • Hololensを使ったソリューションの開発をしました
  • Azure上での機械学習を学びました

イベント

参加したイベントは以下の通りです。

  • 豊川へ出張をしました
  • 長野へ出張をしました
  • SPARK+AI Summit in Europe に参加しました
  • 機械学習のハンズオンに参加しました
  • プロジェクトマネジメント研修に参加しました
  • 沼津へ出張をしました
  • MOBILITY:dev 2019に参加しました

読んだ

  • データ志向アプリケーションデザイン
    • 5-9章を読みました

買ったもの

主要な買い物は下記の通りです。

  • New Balance 1500.9
    • ソールが990v3なので最高
  • SuperDryの洋服
    • もう少し後の季節に役立ちそう

ブログ

リリースノートを除き、次のエントリを書きました。

ブログのPV数

10月は3612でした

f:id:yoshitaku_jp:20191101154442p:plain

10月の目標

11月の目標

「Otter」を使って海外カンファレンスを有意義に過ごす

先週のブログで海外カンファレンスに参加したことは記述したが、英語を聞き取ることが得意とは言えない自分はとても苦労した。自分のように海外のカンファレンスに参加する場合に役立つアプリ「Otter」を紹介する。海外カンファレンスをストリーミングで見るような場合にも使えるので参考にしていただけたら。

otter.ai

yoshitaku-jp.hatenablog.com

Otterとは?

Otterは一言で言ってしまえばボイスレコーダーだ。iOSAndroidでアプリケーションが提供され、iPadでもアプリケーションをダウンロードし利用することができた。またPCからWebブラウザ経由でもアクセスし、録音内容を確認できる。利用料金は無料枠で600分まで録音できるが、それ以上使う際は月額プランを契約し利用することになる。料金は9$ほどかかる。

何がすごかったか

単純なボイスレコーダーとしてなら、各デバイスに基本機能としてついていたり無料のアプリケーションを利用している人がいると思う。Otterのすごいところは、ボイスレコーダーとして録音しているのとほぼ同時に文字起こしをおこなってくれるところだ。発言している人の話している内容をどんどん文字起こししてくれる。まだ英語にしか対応しておらず、今後増えていくのかも不明だが英語を聞き取ることが得意とは言えない自分にとってはテキストで確認できるだけで大変ストレスが減ることになった。

また、Otterは録音後にも強力な機能がついており、録音した会話を全て再確認する処理が走り、前後の文脈に注意をしながら書き起こした内容を修正してくれる。もちろん録音中も文字起こしをしながら適宜修正をしてくれているが、録音後に全体の文脈を見て再度修正してくれるのはありがたい機能だと思った。技術的な専門用語も多く対応しており、聞き取るのはもちろんのこと書き起こしのタイミングで正しい表現で書き起こしてくれる。今回の例で言えば、「RESTful API」「Pandas」などがあった。

注意点

実験としてデバイスのネットワークを切った状態で録音してみたが、リアルタイムでの書き起こしはおこなわれなかった。おそらく解析はクラウド上でおこなっているようなのでリアルタイムでおこないたい場合はネットワークが安定した状態で実施する必要がある。カンファレンス会場では書き起こしがすぐに反映されないこともあり、実験を通してネットワークが必須であることを再確認できた。書き起こしがおこなわれなかった場合は、音声が小さいかネットワークを確認しよう。

さらに活用

ここまで「ボイスレコーダー」「自動文字起こし」といったことを全面に押し出してきた。Google翻訳と組み合わせることでもっと便利になる。最初の方に「PCからWebブラウザ経由でもアクセス」ができることを書いたが、スマホから録音している内容をリアルタイムでWebブラウザから見ることができる。そこで、Webブラウザで書き起こされた内容を表示し、その内容をGoogle翻訳にかけることでリアルタイム翻訳が実現する。

ここでも1つ注意点だがアプリケーション同士が公式的に連携されているわけではない。その中でリアルタイムで書き起こされたものをリアルタイムで翻訳するので、若干の誤作動が起きたりする。この手の誤作動はブラウザを更新すれば直る。

おわり

英語がそこまで得意な人に向けて「Otter」を紹介した。エンジニアが覚えるべき言語は英語と言われたりもするが、業務と並行して勉強することはなかなか難しい。もちろん自分自身の力で解決できるのが望ましいが時間も有限なので、Otterのような便利なツールを利用して乗り切っていきたい。

参考情報

japanese.engadget.com

k-tai.watch.impress.co.jp

japan.zdnet.com

www.itmedia.co.jp

Spark+AI Summit in Europe に行ってきた! -1日目-

Spark+AI Summit in Europeに行ってきました。Spark+AI SummitはSparkを開発した人が在籍しているDatabricks社が主催しているカンファレンスです。扱われるテーマは、SparkやDatabricksがあり、他にも機械学習やデータの前処理についても扱われていました。今回はin Europeということで、オランダのアムステルダムで開かれ、2000人以上が参加しました。自分は1日目のトレーニング・デイと2,3日目の通常カンファレンス・デイに参加しました。今回は1日目の様子をブログに書き起こそうと思います。

yoshitaku-jp.hatenablog.com

会場の様子

1日目の内容に行く前に…初めての海外カンファレンスということもありたくさん写真を撮ってきました。

会場のRAI Amsterdam Convention Centreです。

入り口

遠目から全体

会場の全体図

入場者全員にリュックがもらえました!

入場を済ませたあとの広場にて、各国のエンジニアが集っていました

どこから来たのかピンを刺す地図があり、写真は日本から来た人の旗が刺してあります。3日目には5本刺さっていました。

1日目

3日間開催の1日目はトレーニング・デイです。カンファレンス料金とは別に追加料金を支払うと、次の内容から1つ選び約1日かけて学ぶことができました。

  • Data Science with Apache Spark
  • Hands on Deep Learning with Keras, TensorFlow & Apache Spark
  • Apache Spark Tuning and Best Practices
  • Apache Spark Programming
  • Building Data Pipelines for Apache Spark™ With Delta
  • Machine Learning in Production: MLflow and Model Deployment

自分が選んだものは上記のようなトレーニングではなく、Apache Sparkの認定試験対策講座でした。

  • Half-day Prep course + Apache Spark Certification Exam

Apache Sparkの認定試験を受けるための準備講座です。試験内容の範囲から始まり、会場試験とオンライン試験の違いや試験で問われやすいポイントなど、試験中に見てもいいAPIドキュメントなどを解説してもらいました。試験の代金も講座料金に入っているようで後日バウチャーが届くことを言われました。全て英語なので難しそうですが、いつか試験を受けてみようと思います。

レーニング・デイはカンファレンス料金とは別で追加料金を払うので、展開された資料のシェアは省きます。カンファレンス内での発表資料は10/30までにアップロードすると係りの人が言っていたので、そのタイミングで公開されていればこのブログにも貼り付けようと思います。

遊んで CSS Grid Layoutを覚える / Grid Garden をやってみた

f:id:yoshitaku_jp:20191009145113p:plain

CSS Grid Layoutが学べるGrid Garden をやってみた。以前、「遊んでCSS Flexboxを覚える / Flexbox Froggy をやってみた」を紹介したが、同じ作者が作ったものになる。今回はGrid Gardenの紹介とそこから学んだことを紹介する。

cssgridgarden.com

Grid Gardenとは?

Grid Gardenはブラウザ上でCSS Grid Layoutが学べる学習サイトである。ブラウザの左半分にCSSのコードが、そして右半分にイラストがあり、CSSのコードを書いていくことでイラストを変化させクリアを目指すものになっている。

f:id:yoshitaku_jp:20191009144458p:plain
Grid Gardenの画面

f:id:yoshitaku_jp:20191009144533p:plain
人参には水を置き、雑草には毒を置く

Flexbox Froggyと同様にサイトにアクセスするとすぐに学習することができる。登録をする必要がないのが嬉しい。問題数は28問あり、30分かからず一周できた。どうしてもわからないものがあれば、答えを公開してくれている人がいるので参考にするといいかと。自分も後半の2,3問は解けず勉強させてもらった。

github.com

学んだこと

display: grid

Grid Gardenを遊んでいるときには触る部分ではないのだが、解説をしておく。display: gridを指定することで、指定された要素がCSS Grid Layoutのコンテナとして機能する。まずさいしょにこの記述をしなければならない。Grid Gardenの中ではグレーで記述されていて見にくいが、畑全体を囲っているものである。

grid-template-columns,grid-template-rows

grid-template-columnsgrid-template-rowsの要素をいじるのは後半にあるのだが、説明としては先におこなったほうが良いと思うので説明する。Grid Layoutとして機能することを指定された要素を、どう分けるかを指定する部分である。前半ではgrid-template-columns: 20% 20% 20% 20% 20%; grid-template-rows: 20% 20% 20% 20% 20%;となっており全体を5×5のマス分割して表現されている。後半では、人参や毒を動かすだけではなく5×5のマスを変化させてクリアを目指していく。グリッドの線自体を変化させれば様々な形に適応できると思った。

f:id:yoshitaku_jp:20191009144624p:plain
%を使い畑を分ける

%以外にもpxやemでも分けることができる。これらは混ぜて使ってもよい。さらに、分数を意味するfractionalを略したfrという単位がCSSグリッドには存在する。1つのfrには損z内しているスペースの1つが割り当てられる。grid-template-columns:1fr 4fr;だとすると、1/5と4/5のスペースに分割される。

また、grid-template-にはrepeat関数があり、grid-template-columns: 20% 20% 20% 20% 20%;grid-template-columns: repeat(5,20%)と書ける。この場合は、20%の幅で5つに分割するという意味である。実務の段階でここまで分割したいケースが有るかどうかはわからないが、分割したいものが増えそうだったらrepeat関数を使うほうが良さそう。

いくつかの項目をまとめると、同じ意味でも様々な書き方ができる。

  • grid-template-columns: 20% 20% 20% 20% 20%;
  • grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
  • grid-template-columns: repeat(5,20%)

grid-column,grid-row

grid-columngrid-rowを使えば、grid-template-columnsgrid-template-rowsで分けた部分に対象の物を置くことができる。Grid Gardenでは、分けられた畑に水と毒を置くことで使った。

たとえば、grid-column: 2 / 4; と書けば、2番目の縦のグリッドラインに始まり、4番目のグリッドラインで終わるようなグリッドアイテムを設定できます。

f:id:yoshitaku_jp:20191009144655p:plain

grid-area

grid-columngrid-rowで縦と横のラインを細かく制御できるが、grid-areaを使うと縦と横を一回で指定することができる。キャプチャの画面ではgrid-area : 1/2/4/6;と指定し、grid-area : 横の上段 / 縦の左 / 横の下段 / 縦の右; を指定している。

f:id:yoshitaku_jp:20191009144800p:plain

おわり

  • Grid Gardenを紹介した!
  • 難易度と問題数がちょうどよく、初級者に良さそう
  • Flexbox Froggyと合わせてCSSマスターの一歩目にしたい!

参考情報

遊んでCSS Flexboxを覚える / Flexbox Froggy をやってみたはこちら。

yoshitaku-jp.hatenablog.com

flexboxfroggy.com

初心者からちゃんとしたプロになる Webデザイン基礎入門 を読んだ

プログラミングやWebに興味を持ち始めてから自分の中で長年の悩みだったWebデザインを改善したかったので本書を手にとった。自分の今までの悩みとしては、検索しても複数サイトで書き方が違ったり、新しい情報なのか古い情報なのか判断ができないことが合った。この本は現時点でのWeb制作に関わる知識がまとまっており、自分と同じような知識が点在していて線になっていない人は読む価値があると思う。

books.mdn.co.jp

目次

  1. Lesson1 Webサイトの成り立ち
  2. Lesson2 Webサイトの枠組みを知る
  3. Lesson3 Webデザインに必要な素材
  4. Lesson4 HTMLをマスターする
  5. Lesson5 CSSをマスターする
  6. Lesson6 シングルページのサイトを作る
  7. Lesson7 レスポンシブ対応サイトを作る
  8. Lesson8 Webサイトを公開してみよう
  9. Lesson9 SNS連携とWebサイトの運用

Webサイト制作のワークフローを知ろう

Webサイトの制作には「戦略フェーズ」「設計フェーズ」「制作フェーズ」「保守・運用フェーズ」の4フェーズがある。言葉は違うが、お客様が何をしたいのか調査したり、実際に要件を定義したり、実際に手を動かして制作したりとSIerなどと大きく変わらないことがわかった。オモシロイと思ったのが設計フェーズでの情報設計で、ワイヤーフレームというWebサイトの設計図を書く段階だった。ユーザがどのような順序でWebサイトを閲覧するのか考えながら落とし込む作業を手書きでやるのだが、当たり前にはなってきているがwebサイトは動的でリッチになってきているので最近はプロトタイピングツールを使うことが多くなってきているようだ。ワイヤーフレームのサイトと呼んでいいかわからないが、自分が以前使った事があるものは「Figma」で個人的には使いやすかった。代表的なものは「Cacoo」「Wireframe.cc」のようで自分は知らなかった。

cacoo.com

wireframe.cc

www.figma.com

また、ワイヤーフレームの参考になるサイトの「Wireframe Showcase」が例として上がっていて、デザインのプロトタイピングとしては「Prott」も紹介されていた。

www.wireframeshowcase.com

prottapp.com

bodyタグの構造

bodyタグの中については「ブロックレベル」と「インラインレベル」があることは知っていた。しかしHTML5においては「コンテンツモデル」という考え方に変わったようで、ブロックレベルとインラインに限らずタグの性質に応じて「入れ子にできるものと・できないもの」に区別される。 コンテンツモデルは7つのカテゴリに分かれており次のものが存在している。

sectionとdivとspan

sectionは文章のまとまりで表現されるためのもので、例えばこのブログ記事でいうと#####で段落を一つ下げて文章のまとまりを表現するときに使うのがベストであると理解した。

divの役割としては「情報整理、レイアウトのブロック分け」と書かれており、文章に意味付けをするものではない。本に書かれていたがsectionタグやheaderタグが生まれるまえはすべてdivタグを使ってレイアウトをしていたようで、自分にとってはこのあたりが正しく整理されず個人開発で上手く扱えなかったのだと感じた。 spanの役割としては「部分的にCSSを当てたい箇所を囲む」と書かれておりdivタグとの使い方がはっきりと理解できた。spanはインライン要素の性質があるため文章の中で使われる。

冒頭に書いた「検索しても複数サイトで書き方が違ったり、新しい情報なのか古い情報なのか判断ができないことが合った」は、自分としてはsectionとdivとspanが当てはまり、体系的に知識が整理されてよかった。divタグとspanタグのどちらにも言えることだが多用するとそこらじゅうに記述されることになり、文章全体が見えにくくなるため注意が必要だと書かれていた。

CSS

divでレイアウトのブロック分けをおこなうが、分けられたブロックは何もしなければ縦に積み上がっていくことになる。横に並べたり、一部を固定化したり、要素を重ねることでリッチな表現となっていく。CSS3以前では横に並べる場合floatを使っていたが、CSS3以降はdisplay:inline-blockが簡単かつ便利のようだ。

flexboxを使えば1行書くだけで要素を横並びにでき非常に便利。flexboxについては以前勉強のサイトを紹介したこともあるので貼っておく。また更に最新の方法はCSS Gridと呼ばれる方法があり、簡単にグリッドレイアウトが可能である。CSS Gridについては名前は聞いたことがあったレベルなので、今回知ることができてよかった。

yoshitaku-jp.hatenablog.com

おわり

  • 初学者にとっては現時点でのWebデザインの知識が体系的にまとまっていて読む価値あり!
  • 図や写真がふんだんに使われていてわかりやすい
  • シングルページとレスポンシブ対応サイトを作る章もあるので手を動かしながら学べた

books.mdn.co.jp

じぶん Release Notes 0.29.5

f:id:yoshitaku_jp:20191001120757p:plain

9月1日〜30日のあいだの出来事がリリースされました。

技術・開発関連

技術面での取り組みは以下の通りです。

  • MySQLの移行検証
  • DWHの性能検証

出張での打ち合わせとプレゼン準備が多かったのでもう少し技術的な取り組みを増やしたいです。

イベント

参加したイベントは以下の通りです。

  • 新日本プロレスを見に行きました
  • 澤井酒造に酒蔵見学に行きました
  • 自作キーボードを作りました

夏休みの期間に、やりたかったことをまとめてすすめました。

読んだ

  • マイクロソフト伝説マネジャーの 世界№1プレゼン術
  • Webデザイン基礎入門
  • 数学文章作法 基礎編

買ったもの

主要な買い物は下記の通りです。

  • パスポート
  • 自作キーボード

ブログ

リリースノートを除き、次のエントリを書きました。

PV数

9月は2614でした

f:id:yoshitaku_jp:20191001120738p:plain

データ指向アプリケーションデザイン の第I部を読んだ

「データ指向アプリケーションデザイン」 の第I部を読み終えた。 この部はタイトルにもあるように、データを扱うためのシステムについて全般的に述べられている。

第I部データシステムの基礎

  • 1章 信頼性、スケーラビリティ、メンテナンス性に優れたアプリケーション
    • 1.1 データシステムに関する考察
    • 1.2 信頼性
      • 1.2.1 ハードウェアの障害
      • 1.2.2 ソフトウェアのエラー
      • 1.2.3 ヒューマンエラー
      • 1.2.4 信頼性の重要度
    • 1.3 スケーラビリティ
      • 1.3.1 負荷の表現
      • 1.3.2 パフォーマンスの表現
      • 1.3.3 負荷への対処のアプローチ
    • 1.4 メンテナンス性
      • 1.4.1 運用性:運用担当者への配慮
      • 1.4.2 単純さ:複雑さの管理
      • 1.4.3 進化性:変更への配慮
    • まとめ 
  • 2章 データモデルとクエリ言語
    • 2.1 リレーショナルモデルとドキュメントモデル
      • 2.1.1 NoSQLの誕生
      • 2.1.2 オブジェクトとリレーショナルのミスマッチ
      • 2.1.3 多対一と多対多の関係
      • 2.1.4 ドキュメントデータベースは歴史を繰り返すのか?
      • 2.1.5 今日のリレーショナルデータベースとドキュメントデータベース
    • 2.2 データのためのクエリ言語
      • 2.2.1 Web上での宣言的クエリ
      • 2.2.2 MapReduceでのクエリ
    • 2.3 グラフ型のデータモデル
      • 2.3.1 プロパティグラフ
      • 2.3.2 Cypherクエリ言語
      • 2.3.3 SQLでのグラフクエリ
      • 2.3.4 トリプルストアとSPARQL
      • 2.3.5 礎となったもの:Datalog
    • まとめ 
  • 3章 ストレージと抽出
    • 3.1 データベースを駆動するデータ構造
      • 3.1.1 ハッシュインデックス
      • 3.1.2 SSTableとLSMツリー
      • 3.1.3 Bツリー
      • 3.1.4 BツリーとLSMツリーの比較
      • 3.1.5 その他のインデックス構造
    • 3.2 トランザクション処理か、分析処理か?
    • 3.3 列指向ストレージ
      • 3.3.1 列の圧縮
      • 3.3.2 列ストレージにおけるソート順序
      • 3.3.3 列指向ストレージへの書き込み
      • 3.3.4 集計:データキューブとマテリアライズドビュー
    • まとめ 
  • 4章 エンコーディングと進化
    • 4.1 データエンコードのフォーマット
      • 4.1.1 言語固有のフォーマット
      • 4.1.2 JSONXML、様々なバイナリフォーマット
      • 4.1.3 ThriftとProtocol Buffers
      • 4.1.4 Avro
      • 4.1.5 スキーマのメリット
    • 4.2 データフローの形態
      • 4.2.1 データベース経由でのデータフロー
      • 4.2.2 サービス経由でのデータフロー:RESTとRPC
      • 4.2.3 メッセージパッシングによるデータフロー
    • まとめ 

非機能要件

信頼性、スケーラビリティ、メンテナンス性といった「非機能要件」についてまとめられた章だった。個人が使うような小規模なプロジェクトであれば、非機能要件については深く考える必要はないかもしれないが、今日のデータ社会においてはとても大切なことだと書かれている。自分もユーザに対してクラウドの導入提案や、導入後の運用相談を受ける場に立ち会うことが多く納得しながら読み進めることができた。

非機能要件についてはマイクロソフトのドキュメントがよくまとまっているのでリンクを貼っておく。

docs.microsoft.com

データモデルとクエリモデルの種類

リレーショナルデータベースとNoSQLのデータモデルについて書かれている章だった。筆者としてはNoSQLのグラフ型データモデルを一般的と書いていたが個人的にはイメージがつかなかった。FacebookのようなSNS系のサービスや道路や鉄道の路線を示すのに使われることが多いようだ。また、知人に質問したところ、システムのネットワークの設定を表す際に使われるケースもあるようだ。グラフデータベースとしてはNeo4jがある

neo4j.com

クエリに関してもまとめられていた章だった。しかしクエリと言われるとSQLしかイメージできなかったためCSSが「Webにおける宣言的クエリ」と紹介されていたのは新鮮だった。

データベースの内部

データベースの内部について書かれている章だった。 一番最初に書かれていたが、世界で最も単純なデータベースが印象的だった。これはgetとsetの2つのBash関数で実装されたものだった。自分もリッチなデータベースを使うほどではないが、データをスタックとして保存したいときがあり似たような実装をしたことを思い出した。

OLTP(オンライン・トランザクション・プロセッシング)とOLAP(オンライン・アナリティク・プロセッシング)についてもまとめられていた。

業務ではBIツールなど分析に関係するものが中心なのでOLAPは親しみがあったが、文章にも「データウェアハウスやそれに分類する分析システムは、エンドユーザではなく主にビジネスアナリストが使用するものなので、それほど知られてはいません。」と書いてありあらためて自分がニッチな業務に携わっているんだなと自覚できた。

普段触らないOLTP側の話では、「log-structured」と「インプレース」の考え方があることを学べた。

まとめ

  • データ指向アプリケーションデザイン の第I部を読んだ
  • 第I部データシステムの基礎と題されている通り、分野的に広く書かれていた
  • 自分が知っていることと知らないことの再確認が出来た

参考文献

データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理

データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理

学び効率が最大化するインプット大全 を読んだ!

「学び効率が最大化するインプット大全」 を読んだ。昨年発売された 「学びを結果に変えるアウトプット大全」 のインプット版となっている。読むこと、聞くこと、見ることに関する効率のいいインプットの仕方や現代に即したインターネットを使ったインプットの方法などが書いてある。一回読んで終わりの本ではなく、成長が伸びていないときに何度も読み直すような本であると感じた。また、様々なTipxが書いてあるが一度に全部やるのも難しいので、コツコツ取り入れていくと良さそう。

目次

  1. インプットの基本法則―RULES
  2. 科学的に記憶に残る本の読み方―READ
  3. 学びの理解が深まる話の聞き方―LISTEN
  4. すべてを自己成長に変えるものの見方―WATCH
  5. 最短で最大効率のインターネット活用術―INTERNET
  6. あらゆる能力を引き出す最強の学び方―LEARN
  7. インプット力を飛躍させる方法“応用編”―ADVANCED

インプットの基本法則―RULES

「インプット」と「目標設定」は必ずペアで行ってください と書いてあった。核心を突かれたように「そうだよなぁ」と落ち込んでしまった。自分のアウトプットは面白そうなことに飛びついてそれをさらっと書く傾向にある。これは本で指摘のあるような、インプットとそれに対する目標設定が出来ていないからだと自覚できた。

6月までの部署では自分の興味あるところをつまみ食いしていた。これはWeb系に興味があった時期でもあり、Vue.jsやFirebaseなどの新しく出てきたサービスを触っていた。7月に部署が変わったこともあり、Azureを触ることになった。広く見ればクラウドであり、インフラ環境を整えるためのサーバやネットワークの知識が足りていないことが自覚できている。また、PaaS知らないものが多いので覚えていかなければならないと考えている。

科学的に記憶に残る本の読み方―READ

情報の偏りをなくす「3点読み」 が感銘を受けた。本を読むことは時間もかかればお金もかかるので1冊でもとを取ろうとしがちだと思う。メリットを述べている本、デメリットを述べている本、中立の立場で書かれている本の3冊を読むことがバランスをとったインプットができると書いてあった。忙しい人はメリットデメリットの2点だけでもやってみたほうが良さそう!自分はWebで情報を検索する際にGoogleのトップに出てくる10ページをすべて開くようにしている。本に書いてあったのと同じようにバランスよくインプットができると思ってやっていたし、やたらめったら読むのではなく表示された10ページは必ず読もうと決心できるのでおすすめ!

学びの理解が深まる話の聞き方―LISTEN

この本は研究結果も広く載っている。この章では、 「「勉強をするときに音楽をかけると、著しく効率が下がる」 と書いてあった。やはり人間はマルチタスクが出来ないようで、「勉強する」ことと「音楽を聞くこと」は交互に処理をしています。その結果、頭の中ですごい負荷化がかかり勉強の効率が落ちるそうです。勉強の前にテンポの速い曲を聞くと効率は上がるそうです。自分はプロレスが好きなのですが入場曲のように聞いて勉強の開始タイミングまでに聞こうと思う。

勉強のときに音に関して言えば、勉強中は無音やカフェぐらいの雑音が良いそうです。自分は作業中に最近買ったSONY ワイヤレスノイズキャンセリングイヤホン WF-1000XM3を使っている。移動のときでも雑音を切ってくれるので非常におすすめ。

すべてを自己成長に変えるものの見方―WATCH

観察力の見方を鍛える方法ということで、 「アウトプットを前提にする」 ということが書いてあった。なんとなくの流し見をすると自分自身がインプットしている情報しか目に入らなくなるので、アウトプットの形にするためには何が足りていないかを目を凝らして読むといいことを感じた。何事も自分の現状との比較から自分の知らない世界を広げていき、成長の伸びしろとなっていくように感じる。

最短で最大効率のインターネット活用術―INTERNET

インターネットで情報を効率よく取るということは書いるが、スマホの利用を1日1時間にするということも書いていた。朝起きてから寝るまで常にともにするようになったスマホだが、使いすぎもよくない。これを読んだときに業務中もちょこちょこいじったりしている自分を思い出した。今後を考えて、スマホの制限や通知のカスタマイズ、さらにはデジタル断捨離を行うことも検討する。

おわり

アウトプット大全に続き、インプット大全も読了した。むやみやたらに手を付けてインプットしていることを反省したが、インプットした内容は10年後に活きてくると書いてもあった。ポジティブに捉えれば意欲が落ちているわけではないので、冷静に分析し正しいベクトルにインプットを向けていきたい。

  • インプットを効率よくおこなうためのTipsが多く学べた
  • この本を読むだけでなく、自分の学びや生活に取り入れていきたい
  • まずはできることからコツコツと…

RaspbianにDockerをインストール

RaspbianではDockerをインストールする際は手順が少し違うのでメモをしておく。 注意が必要だが、Raspberry piUbuntuなどをインストールしている場合は正規の手順でインストールが可能である。

Rasbianではテスト開発環境用のシェルスクリプトをダウンロードし、それを実行することでDockerをインストールすることができる。 少し使ってみた感想だがMacWindowsで使っているものとコマンドでは大差はなさそうであった。 しかし、公式サイトでは「Raspbianは通常のインストールが出来ないこと」を念押しのように記述されているので、細かい挙動は少し違うのかもしれない。 実稼働でも適さないことが書いてあるので、本番環境では使わないほうが良い。

下記のURLにアクセスすると、実行するシェルスクリプトを確認することができる。2019/09/15現在の物を文末に貼り付けておく。

https://get.docker.com

update & upgrade

sudo apt-get update && sudo apt-get upgrade

Docker

シェルスクリプトをダウンロードし実行するだけである。 コマンドの結果にも出てくるが、ルートユーザ以外で実行する場合はDockerグループに該当のユーザを登録する。

curl -sSL https://get.docker.com | sh

sudo usermod -aG docker pi

ソースコード