カテゴリー
ネットのサービス

Parsnip – 料理サイト+技術ツリー

Parsnip という料理アプリは、料理の作り方を「学習」できる点で他の料理レシピサービスと差別化している、と主張しています。

スマートフォンに入れて使ってみると、料理のレベルを訊かれ、作りたい料理を選ばさせられ、その料理の食材の店頭での選び方や部位の名前、生産方式や輸送方式、保管方法や評判の良い産地、切り方や捨て方、もちろん調理方法も、などなどについてクイズが始まりました。

Parsnipアプリでは食材に関する知識クイズなどを通して料理の学習ができる

料理に必要な知識をクイズに答えて確認しないと先に進めないようで、確かに学習アプリでありただのレシピサイトではありません。答えを間違えた時にも間違いに応じた説明文や写真が出てくるため、一つの料理、それに使われる材料や手法、に問題と解答、解説があるなら大量のコンテンツとなり、あらゆる料理のレシピではなくアプリが提示してきた料理から学びたいものを選ぶ方式だったのは、レシピの数が限定されているのかもしれません。

また、最終的な知りたい「レシピ」はクイズを全部解かないとロックされて出てこないようです。これレシピを見る前に小一時間クイズを解かないといけないのかしら。

料理の技術ツリー

その Parsnip が、まだ実装できてはいないけど現在開発中、と公式ブログで紹介しているのが、いわゆる「技術ツリー」を料理の世界に適用するというアイデア。

技術ツリーの元ネタは名作シミュレーションゲーム「シビライゼーション」ではないかと思われますが、このゲームでプレイヤーは文明を古代から現代・未来まで進化させていく中で、技術を獲得していきます。その時に、「内燃機関と鉄鋼の技術を持っていると自動車を発明できる」「神秘主義と数学を持っていると天文学を獲得できる」と言った風に、ある技術の実現のために必要な前提技術をすべて所有している必要があります。

この必要条件を矢印でつなげ合わせることで、高度で複雑な技術のために必要な前提技術が枝分かれしていき、多数の基本的な技術の組み合わせに分解できる、という図を作れます。これが技術ツリー。

シビライゼーションのオープンソース・クローン Freeciv の技術ツリー (GPL)

そして、ソフトウェアエンジニアが自分のキャリアプランを立てたり、「フルスタックエンジニアになりたい」など多数の分野を知っていないと成れない目標を立てたりする際に何をどういう順番に勉強していくと目標へたどり着けるか、という道程を示すものとして、技術や知識の依存関係が技術ツリーとしてまとめられ、いくつも公開されています。

たとえば、この手の技術ツリーをバックエンド開発者になるためのロードマップなどで見つけることができます。

roadmap.sh では様々なソフトウェア分野の技術ツリーが公開され、オープンソースで作者と貢献者たちによって更新されています。

Parsnip のアイデアはこの要素技術の依存関係のツリーを料理の学習に適用しようというもの。

Parsnip が開発中の料理の「技術ツリー」のグラフ

この例だと、スクランブルエッグを作るには「卵の知識」「コンロの知識」「食材の安全性」の知識が必要で、シュリンプ・タコスを作るには「エビの知識」「エビの調理法」「食材の安全性」の知識が必要。「食材の安全性」はどちらの料理にも必要。ということでしょう。

学びたい料理に対してそれに必要な要素技術が何かが分解されていて、ある技術や知識にはさらにそれらの前提となる技術や知識が必要というツリーになっていれば、目標となる料理に対して何をどんな順番で勉強していけばいいかがわかるわけですね。

あるいは、個別の要素技術をある程度学んだ状態で、「今の自分の調理技術の組み合わせで作れるレシピを検索」とかもできるようになりそうです。

また、現在の Parsnip は料理の種類がサービス提供のものに限定されていますが、料理と必要な技術のツリーが作れれば、自前でレシピデータを全部揃えなくても、外部のレシピに対して(自然言語の解析によって)必要な技術ツリーを作って提案することもできるだろう、と公式ブログでは述べています。

技術ツリーをIT技術の取得以外に使うというアイデアは外国語学習アプリの Duolingo を見て思いついたそうです。他にも技術ツリーの考えを持ち込めるサービスの分野があるかもしれないですね。

Show HN: Parsnip – Duolingo for Cooking | Hacker News

カテゴリー
データ可視化

KalkiCode – 基本的なデータ構造を各種言語でどう書くかや動く図で見せてくれるサイト

Kalkicode は、例示や図によるプログラミングサンプルを、プログラミング上の問題(基本的なアルゴリズムやウェブサービス技術)と複数の言語のそれぞれの切り口から並べて示そうとしている、教育サイトです。

配列・行列・リスト・ツリー・グラフ・再帰、などさまざまなデータ構造・アルゴリズム毎に分けられた章を開くと、

データ構造 and/or アルゴリズムの解説に、それを実装したコードサンプルが10前後のプログラミング言語で用意され、コードの実行結果、図、などが続きます。

ものによっては動的にデータ構造の変化を見せてくれたりもします。

こちらは平衡二分探索木にノードを追加したり削除したりする際の動きをアニメーションで表示しているところ。

双方向リンクリストへの追加や削除とか

環状単方向リストへの追加と削除とか

プログラミングの学習をする際に、理解を助けてくれそうなコンテンツがたくさんあります。

10前後のプログラミング言語で同じことを書く、というのもこれだけ多くの項目となると大変なことだと思います。見た感じ、ある程度自動で変換してるのかなとも思いましたが。

# 同じサイト内に Java-to-PHP converter なんてのもあったので、全部じゃないにしてもある程度横展開は自動なのかもしれません。

via Hacker News

カテゴリー
技術

Gently down the stream – Apache Kafka の動く絵本

Gently Down the Streamは、Apache Kafka がどういうものであるかを紹介する、動く電子絵本です。

Kafka は、大量のイベントストリームを処理するためのオープンソースのプラットフォームで、もともとは LinkedIn が大量のユーザーの行動データをリアルタイムに処理分析してニュース通知などに反映する目的で作られたものだそうです。メッセージキューと似てるように聞こえますが、処理量や処理速度に対応するために特化改良されているそう。

自分も一見では「メッセージキューのツール?」ぐらいにしか思っていなかったので、Kafka だからこそできること、みたいなのを説明するためにこの絵本が生まれたのかもしれません。

ストーリーは、森に住むカワウソたちがお互いの家族間でニュースを広めあい共有するという世界観の中で、家族が増えたり共有したい情報がどんどん増えていくことで様々な問題が起こるところから、

家族が直接ニュースを伝えに行き来するところから、ニュースを伝えるメッセンジャーの導入。そして森の中の大河である Kafka川を、支流ごとに Topic に分け、そこで Producer と Consumer に分かれてイベントの投入と受け取りを分離する、Topic に流れるイベントがさらに増大した際に Topic を分割する Partitions 、といった概念を、カワウソで説明してくれます。

「これで完全に解ったのか?」と言われるとそこまで自信はないのですが、Kafka で使われる概念や用語について、読む前よりは少し知ることができたように思います。

なお、Apache Kafka については以下の記事も参考にしました。