2017年4月30日日曜日

初めてのRuby 1章について

  • 「言語のしくみ」を読んで、MatzさんとRubyに改めて興味を持ったので、Rubyエンジニアの方に聞いたら「Rubyは作りたいものを作りやすい」とのことでした。
  • 「初めてのRuby」を以前買っていたので読み直しました。
  • 他の言語経験者向けの入門書で、他の言語や一般的な言語の作りと比較してRubyの基本を説明しています。リファレンスを読みながら進められるところまで。
  • 「1章 ようこそ、Rubyのある生活へ」で気になったところをまとめました。
  • コラムでは、「文字列の変更可能性」や「型変換」など、簡潔に他言語との比較で、はまりそうなポイントを説明していて気に入ってます。
  • バージョンが1.8, 1.9対応だったのが難ですが、それ以外はおすすめです。

1章 ようこそ、Rubyのある生活へ

  • Rubyの主要概念が書いてある。
  • バージョンナンバーの振り方や、開発環境/実行環境など一通り書いてある。
  • Rubyの文脈を理解してRubyらしいコードを書くとよい。

Rubyの特徴的な部分で気になったところ

  • 動く擬似コード
    • ほぼ擬似コードのまま動く
    • 処理の本質的な記述に集中できる。
  • 高階関数
    • コードブロックというオブジェクトをやりとりすることができる。無名関数のように使える。
    • コードブロックを受け取るメソッド(=高階関数的に動く) => ブロック付きメソッド
    • コードブロックはクロージャとして機能するが、メソッドはそうではない。
  • DSL
    • 言語内DSL
    • カスタム言語を追加する => それを使ってソフトを作る。
    • このスタイルがRubyでは一般的になっている。
  • 動的
    • 実行時にクラス定義を処理する。
    • メリットはクラス定義まで通常の制御で管理できる。
    • デメリットはクラス名がずれたりしても、実行時エラーにしかならない。
    • どちらにしろ単体テストかくのだから、そのあたりは問題ないという考え方も。
  • メタプログラミング
    • DSL/動的な機能を使って、かなりの部分をパラメータ化できる。
    • それをしようとしたときに、特別な宣言等をする必要なく、シームレスに言語を拡張できる。
    • クラス定義が実行時に行われるため。

機能探索順

  1. 専用の文法
  2. 組み込み関数
  3. 組み込みクラス
  4. 標準ライブラリ
  5. 外部ライブラリ
  6. 自作

構成

  • 言語本体
  • 組み込みライブラリ
    • 組み込み定数
    • 組み込み変数
    • 組み込み関数
    • 組み込みクラス
  • 標準添付ライブラリ

外部ライブラリ

  • 標準添付ライブラリ
    • 追加インストール不要。
    • ユーザプログラムからインクルード必要。
  • 外部ライブラリ
    • 基本はRubyで書かれている
    • 拡張ライブラリ(C言語等で書かれたネイティブライブラリ)

実行環境

  • 対話

    irb
  • スクリプト実行

    ruby hello.rb
  • デバッガ

    ruby -rdebug hello.rb
  • リファレンス
    • コマンドライン

      ri String
    • irb

      irb help

あると便利

2017年4月25日火曜日

リーン・スタートアップを改めて

  • 改めてリーンスタートアップを読みました。
  • 起業やベンチャーにいる方以外のビジネスマンにもぜひおすすめしたい本です。
  • 最初期の検証をどうやって行ったかの事例も豊富でどのような行動が検証といえるかのイメージができます。
  • 気になったポイントをまとめました。

スタートアップの事業運営を検証による学びのプロセスととらえる

  • スタートアップの最大の課題は、事業が成立する(顧客がいる)ことが「仮説」に過ぎないこと。
  • 「仮説」といえば、大層に聞こえるが、程度の差はあれ思い込みにすぎない。
  • この「仮説」を最も低コストかつ、最も確実に検証し、そのフィードバックを得ること、また、その一連のプロセスを最短にすることを目標とする。
  • 「仮説」の元とした事実が間違っている場合など、考察によって見つけることは現実的にかなりの困難を伴う。
  • そのため、実験(検証したいことにあった最小のビジネス活動)を行って定量・定性的にフィードバックを集める。
  • スタートアップにとっては、価値仮説と成長仮説が重要。

「とにかくやってみよう」では、すぐに手詰まりになる

  • 計画と遂行を基礎とする一般的なプロジェクトマネジメント(総括マネジメントと呼んでいる)は、新製品を開発するのには向かないが、無計画も同様に成果を出しにくい。
  • 行動力は重要だが、それだけでは失敗する。
  • 体系的で適切な仮説と検証をすることは難しいが、それをやらずに、全ての仮説に基づいて商品を作って試していたら、それをうまくやる競合に必ず負ける。
  • 先にものを作ってしまうと、コストがかかりすぎる。
  • 検証という視点がないと、「製品」を作ろうとしてしまう。

MVPや、スモールスタートなどとリーンスタートアップ

  • MVPなど、聞いたことがない人の方が少ないかもしれませんが、リーンスタートアップでは、明確に定義しています。
  • MVPは最低限使える機能を持った製品ではなく、仮説の検証が可能な最小の製品。
  • リーンスタートアップを「小さく始める手法」と紹介されることがあるが、解決しようとする課題によっては、「仮説」の検証にかなりの品質が必要となる場合がある。
  • デザイン思考やA/Bテストなどの手法は以前からあった。リーンスタートアップはこれらの手法を、製品開発に活用するのが違い。
2017年4月24日月曜日

IoTを調べた情報ソース

  • IoTについてキャッチアップしたときの情報源です(2017年4月)。

入門

  • 技術・ビジネス両面を解説している。
  • 最初に概要をつかむにはよい。

図解でわかるIoTビジネス いちばん最初に読む本

  • IoTの活用事例が載っていて、イメージがつかみやすい。
  • 技術解説を含めて初心者向けでわかりやすい。
  • https://www.amazon.co.jp/gp/product/4897951976/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1

IoTとは何か 技術革新から社会革新へ (角川新書)

  • TRONの坂村氏によるIoT入門本。
  • 早期から研究してきた立場から書いている。
  • https://www.amazon.co.jp/IoT%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B-%E6%8A%80%E8%A1%93%E9%9D%A9%E6%96%B0%E3%81%8B%E3%82%89%E7%A4%BE%E4%BC%9A%E9%9D%A9%E6%96%B0%E3%81%B8-%E8%A7%92%E5%B7%9D%E6%96%B0%E6%9B%B8-%E5%9D%82%E6%9D%91-%E5%81%A5/dp/4040820584/ref=asap_bc?ie=UTF8

インターネット白書2017 IoTが生み出す新たなリアル市場

  • 定番だが、一通り押さえられる。
  • IoTの他にもAI、ブロックチェーンなどこの1年話題になった技術に触れている。
  • https://www.amazon.co.jp/gp/product/B01MYDIDWW/ref=oh_aui_d_detailpage_o04_?ie=UTF8&psc=1

技術入門

IoTエンジニア養成読本

  • IoTを使ったサービスを作る際に必要な技術を一通り押さえている。
  • ハンズオンがある。
  • https://www.amazon.co.jp/gp/product/4774188654/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1

雑誌

  • トランジスタ技術
  • Interface
  • ラズパイマガジン

ネットニュース

  • IoTNews
  • https://iotnews.jp/
  • Make:
  • http://makezine.jp/
  • カメリオ IoTタグ
  • https://lp.kamel.io/

IoTプラットフォーム

  • サービス名 - プロバイダー
  • 大手はたいていサービスを提供している
    • AWSIoT - Amazon
    • Azure - Microsoft
    • Watson IoT Platform - IBM
  • SORACOM - SORACOM
  • Kii - Kii
  • さくらのIoT Platform - さくらインターネット
  • Predix - GE
  • Lumada - 日立
  • ABEJA Platform Open - ABEJA

勉強会

  • IoT縛りの勉強会
  • https://iotlt.connpass.com/

事例

  • クラウドファンディング(特に海外)はIoTプロダクトの宝庫
  • https://www.kickstarter.com/