はじめてのMbed OS 5【前編】: Mbed OS 5で始めるIoTプロトタイピングの紹介と書いたワケ

最近になってセルフでKindleの本を出版しました。

「[はじめてのMbed OS 5【前編】: Mbed OS 5で始めるIoTプロトタイピング](http://amzn.to/2hiVpMh)」
[![Top_logo.jpg](https://qiita-image-store.s3.amazonaws.com/0/109992/8a9a9741-cb91-f5a5-714f-10ecbd3cf781.jpeg)](http://amzn.to/2hiVpMh)

#Kindle本を書いた経緯

今まで、mbedに関する紙の本を数冊（[Amazon著者ページ](http://amzn.to/2zleNim)）書いてきましたが、Webに絡むサービスは更新が頻繁でどうしても数か月で内容が古くなってしまいます。下手をすれば本が出るころにはWebページのデザインが変わっていて、本に書いた内容と合わないこともありました。それと合わせて出版社経由で出版するとどうしても出版や増版で更新するまでに時間がかかってしまうので、変わりゆくWebサービスを扱うのは難しいものとなっています。（出版社を否定しているわけではありません）
もちろん出版社経由で出版することは著者にとって日本語の間違えを直してくれたり、販促してくれたり、世の中の需要に合うように内容をレビューしてくれたり、挿絵等も絵師さんに頼んで用意してくれたりと良いことがたくさんあります。

**だがしかし**

どうしても動的に更新に追いつけないのです・・。

いまだに2011年に初めて[出版した本](http://amzn.to/2zl0Alu)がAmazonのカテゴリ別ランキングで１位になるのが不思議です・・。
（内容的には数世代前のWebページのイメージで解説されています。そこらへん、買ってくれた方にはもうしわけなく・・。）

ということで1日あればに出版ができる且つ電子書籍で更新もすぐできるAmazonのKindleでの出版をすることになりました。

#Kindle本の出版の仕方
出版の仕方はWebにたくさん情報が出ているので多くは語りません。
とにかく簡単です。執筆が済んでいれば、出版の準備に半日かからず、[Amazon KDP](https://kdp.amazon.co.jp/ja_JP/)の審査が通るまでに1日ぐらい。すぐに出版することができます。
執筆の方法はいくつかありますが、Amazon KDPの場合はさまざまなフォーマットで記事をアップロードすることができます。その結果、Kindleで読める形に自動変換してくれます。
私の場合は、まずMarkdownでテキストファイルに書いてそれをMS Wordに変換し、体裁を整えてからAmazon KDPにアップロードしました。そうするとWordからKindle形式に変換してくれます。若干フォームが変わってしまうので、プレビューを見ながら微調整しました。

#価格の根拠
一番悩ましいのが本の価格です。セルフ出版なので価格を決めるのは自分次第です。
0～100円とかかなり価格を低くしても良いですが、さまざまな資料を見つつ、実験しながら自分の時間を使って書いているので、そこを付加価値として加えるのは当然です。とはいえ高すぎてもだれも買ってくれないので、それなりの価格にする必要があると思います。
今回書いた本の価格は本を書くために使った工数と予測販売数から1000円と決めました。
セルフで出版されているKindle本の中では高価な方に入ります。ただ、本の内容からそれなりの数は出ると思ったからです。ある一定以上売れれば元は回収できますし、それ以上売れれば儲けとなります。
（出版してから一か月、予測販売数には達していないため、販促のためこの記事を書いてますｗ）

#本の内容
本の題材はMbed OS 5です。
そもそもMbedとはマイコン向けのプログラミングがブラウザ上で行えるサービスで、開発環境がオンラインでも用意されています。導入が簡単なオンライン開発からデバッグも行えるオフライン環境、本格的な開発が行える製品版の開発環境まで、プロトタイピングから製品開発まで用途に応じてシームレスに移行できるようになっている仕組みです。
Mbed OS 5とはarm社のマイクロコントローラ向けのアーキテクチャを使用したマイコン上で動作するコンパクトなOSで、IoTを意識して作られてます。
WindowsやmacOS、Linux等のOSとはかなり違うイメージのOSです。標準ではGUIやCUI等もありません。OSと言ってもリアルタイムスレッドや通信、IO等APIを集合したフレームワークに近いです。
使い方も一般的なOSと異なるので、解説が必要だと思い、執筆しました。
ただの解説本ではつまらないので、初めて扱う方でも簡単に導入することができる且つIoTに向けたプロトタイピング⇒製品化が行えるように意識して書きました。
コンパクトなOSと言えど、一般的では無い知識が必要となるため、前編後編に分けて出版することにしました。

#前編の目次
前編の目次は次のようになっています。

**〇はじめに**
　導入部分です。
**〇Mbedとは**
　そもそもMbedとはを書いてます。
**〇Mbed OSとは**
　Mbedを知ったうえで、Mbed OSの立ち位置を書いてます。
**〇Mbedプラットフォームを使ったオンライン開発手順**
　オンライン開発環境の扱い方を解説しています。
**〇リポジトリを理解する**
　オンライン開発環境におけるリポジトリについて解説しています。
**〇プログラム(リポジトリ)をパブリッシュする**
　ソースコードを全世界に公開する方法を解説しています。
**〇C++の話**
　Mbedの開発言語であるC++について、クラス等の機能の解説をしています。
**〇オフライン開発手順**
　オフライン開発環境の扱い方を解説しています。
**〇オフライン開発環境でプログラムをテストする**
　オフライン開発環境に置いて、プログラムの自動テスト方法について解説しています。
**〇エディタの話**
　ソースコードを書くためのエディタの紹介をしています。
**〇マイコンプログラミングの予備知識**
　マイコンプログラミングなりの予備知識を紹介しています。
**〇セクションの話**
　マイコンプログラミングにおけるセクションについて解説しています。
**〇Mbed OS 5 タスクマネージメントAPIを使用する**
　Mbed OS 5のタスクマネージメントAPIの使用方法を解説しています。
**〇デバッグ方法**
　マイコンのデバッグ方法について紹介しています。
**〇Mbed OS5 IoTエッジデバイスのプロトタイピング**
　Mbedを使ったプロトタイピングの実例の手順を紹介しています。
**〇部品の入手先**
　プロトタイピングに使う部品の入手先について紹介しています。


#後編の目次
後編は2017年11月中の出版を目指して執筆中です。
![Top_logo.jpg](https://qiita-image-store.s3.amazonaws.com/0/109992/008fc013-3765-698f-9020-1c23253d9a7e.jpeg)

まだ確定ではありませんが、目次は次の予定です。

**IoTエッジデバイスプロトタイピング**
　**アップロードしたデータの取り扱い方法**
　　**enebularの紹介**
　　**Infomorsionの紹介**
　**センサー追加**
　**製品化への対応方法**
　**異常処理の追加**
　**デバック環境を整える**
　**MDK ARMに移行**
**Mbed OS 5の詳細**
　**フォルダ構成**
　**ブートストラップシーケンス**
**Mbed OS 5 APIリファレンス**
**Mbed コミュニティの紹介**

#最後に
Mbed OS 5の後編が書き終わったら、近々一般公開される予定のIoT向けサービスであるMbed Cloudについての本を執筆したいと思います。
ご興味あれば、まずは[はじめてのMbed OS 5【前編】: Mbed OS 5で始めるIoTプロトタイピング](http://amzn.to/2hiVpMh)」をよろしくお願いします。