2007-03-03

日経ビジネス編集長の終わらない話 2.0が終わった

人気のポッドキャスト日経ビジネスオンライン『日経ビジネス編集長の終わらない話 2.0』が終わりました。このポッドキャストは日経ビジネスの井上裕編集長が、毎週金曜日に(週刊)日経ビジネス最新号の読みどころを中心に40分から一時間近くフリートークするという内容です。

一年以上の続いていたこのポットキャストが突然終わってしまった理由、それは、井上裕編集長が日経BP社から日本経済新聞社へ転勤(もともと出向していたのかも?)するからです。

このポッドキャスト、最終回で編集長が語っていたように、最初は日経ビジネスの販促のために記事の概要を紹介していたのですが、回を重ねるうちに読者との双方向コミュニケーションが始まり、ビジネスの話題を中心にしたコミュニティのように変化してきました。

このブログサイトも双方向コミュニケーションにしたかったのですが、なかなか難しいものです。日経ビジネス編集長の終わらない話がこれだけ盛り上がった理由は以下のような要因があるのではないかと思います。

  1. ネタもとになっている日経ビジネスの記事自体が話題性・先見性がある。(非常に優秀な記者たちを抱えていると思います)
  2. 週刊誌なのでポッドキャストも毎週金曜日に定期的に更新される。(定期更新)
  3. 井上裕編集長が親分肌で人間的に好感が持てるし、話自体がおもしろい。
  4. ラジオ日経のアナウンサーなど少ないながらプロのスタッフが番組を作っている。
  5. ポッドキャストはどこでもダウンロードできるので海外でも聞けるため、自称海外特派員から便りがとどき、それを紹介することで空間の壁を越えたコミュニティの感覚が生まれる
  6. おそらく変なメールもたくさん届いていると思うが、励ましやおしかりのメールをディレクターがうまく選択することで、結束を高めるような演出をしていた。
この中で一番の重要な要素が、3の井上裕編集長の人柄という部分で、悲しいかなサラリーマンの宿命である転勤が、簡単に代替えが効かないことにつながり、このポッドキャストを終わらせてしまったのです。

新しい日経ビジネスの編集長が引き継げばいいとも考えられますが、もの書きは必ずしもしゃべりが上手いということはなく、一時間近く台本なしのアドリブでしゃべるのは難しいでしょう。

ただ、このポッドキャストによって、日経ビジネスの読者は間違いなく増えており、この一年で読者の平均年齢層が一年から二年若返ったそうです。

自分自身、週刊誌を定期購読などしたら読まないでゴミになることが分かり切っていたので、定期購読はしないと決めていましたが、このポッドキャストを聞くようになってかなり気持ちがグラグラしました。(会社で購読しているので必要な記事は読めていました)

週刊誌の記事をネタにしてポッドキャストで情報を配信し、読者やリスナーを中心に双方向コミュニケーションを作り、それを聞いたリスナーが日経ビジネスの読者になるといういいサイクルが生まれていたと思います。

でも、このようなコミュニティの有効性に企業の上位層は気がつかないものです。

コミュニティの解散は数字的な影響よりも、参加していたものに対して心理的な影響を与えます。

日経ビジネスオンライン『日経ビジネス編集長の終わらない話 2.0』が終わってしまったのは残念ですが、この終わり方の理不尽さが日本の組織の考え方を象徴しているようで印象的でした。

※コミュニティの重要性を理解できないお偉いさんってエンジニアの世界にもいますよね。

P.S.

上記のポッドキャストが盛り上がった要因の6番はかなり効いていると思います。2ちゃんねるのように投稿されきた内容を全部さらけ出してしまうとどうしても番組のポリシーが汚されます。ねつ造ではなく、本当に投稿されてきたもののなかからきれいな賛成意見、反対意見を選択することで番組のイメージを保持することができます。ドキュメンタリーにも演出の要素があるのはこれと同じです。
 

※その後 3月5日から「 新編集長のここだけの話」が始まったようです。(もうやめられなくなったみたいです)
 

2007-02-12

組込みソフトの作り方[3]

マイコンがシーケンス処理からリアルタイム制御のコントローラにステップアップしたころ、割り込みを使うことで今までやっていた処理を横に置いて、急いでやらなければいけない処理に対応できるようになった。

ただ、割り込みに使える要因は4つとか7つとか数に限りがあったため、メインループでグルグル回る処理と割り込み処理だけでは、複雑なリアルタイム制御のプログラムをスッキリと書くことはできなかった。

そうこうするうちに、マイコンは進化を遂げて、割り込みコントローラ、拡張ポート、タイマー、A/D変換器、D/A変換器など、リアルタイム制御に使いそうな周辺デバイスとCPUをパッケージにしたワンチップマイコンが登場してきた。

ワンチップマイコンが現れる前は モトローラの 68000 や ザイログの Z80 などの汎用のCPUに周辺デバイスを配線して使っていた。

ワンチップマイコンのおかげで、このような周辺デバイスを配置することなく、ワンチップマイコンの中だけで多くのことができるようになった。

ただ、そのせいでワンチップマイコンの取り扱いは複雑になり、ワンチップマイコンの取扱説明書は分厚いもにになってきた。(ハードウェアデバイスの資料はデータブックと呼ばれるが、ワンチップマイコンの場合、データブックというよりは取扱説明書といった方が近い)

このことから、主にワンチップマイコンを専門に扱うエンジニア=組込みソフトエンジニアという構図が生まれてきたように思う。リアルタイムシステムにおいてワンチップマイコンを使いこなすには、ワンチップマイコンの取扱説明書を熟読する必要がある。

なぜなら、取扱説明書にはCPUのレジスタ構成やアセンブラの命令の説明だけでなく、割り込みコントローラやA/D変換器、タイマー設定など数多くの周辺デバイスの初期設定の方法や起動や停止の仕方について事細かに書かれているからである。

これらの設定を間違うと、思った通りに動かないため、最初にうちは周辺デバイスの設定をマニュアル読みながら、少しずつ習熟していく。

このようなワンチップマイコンとの格闘が一通り終わると、リアルタイムシステムをこのマイコンでどうやって実現しようかと考えることになる。

一番簡単な方法は、各種割り込み処理に、10msとか100msなどの一定間隔でタイマー割り込みを追加する方法だ。割り込みコントローラに登録しておくのは、非常に早い応答が要求される処理で、ハードウェアリアルタイムと呼ばれる。それ以外のもうちょっと対応が遅れてもよいソフトウェアリアルタイムの処理は、前述の定時割り込み処理でイベントが発生したかどうかを巡回しておけばよい。

たとえば、キーが押されたかどうかを察知し、割り当てられた処理を起動するまでの許容時間は数百msである。500ms以上かかると遅いと感じるが、200ms以内にレスポンスを返すことができればサクサク動くと評価されるだろう。

そう考えると、10msの定時割り込みでキーが押されたかどうかをチャタリング取りながら80msくらいかけて調べ、起動をかければ十分に間に合う。

定時割り込みでイベントをウォッチし、イベントが発生したら該当する処理を行うようにする。該当する処理に長い時間がかかるようなら、各イベントに割り当てたフラグを立てておき、時間に余裕のあるときにこの処理を実施しておく。

この続きはまた今度。

2007-01-27

組込みソフトの作り方[2]

組込みソフトの作り方[1] で、マイコンが登場したとき(1980年代前半)マイコンはハードウェアデバイスのシーケンスをトレースするために使われていたと書いた。マイコンはトレースする順番が変わってもROM上のプログラムを書き換えることで対応できるので重宝された。

マイコンに求められたシーケンス制御の次のステップは、リアルタイム性の実現だった。

リアルタイム制御システムで必ず必要になるのが“割り込み”の機能だ。

組込み機器の多くは、外界の状況変化にともなって制御シーケンスの流れを変える必要がある。いつも同じ処理をぐるぐる回していればいいような機器はあまりない。

このような外部状況の変化を察知して、制御シーケンスの流れを変える場合の一番簡単な方法はポーリングである。

外部状況をセンシングしその様子をマイコンの入力ポートで見られるようにし、このポートの状態をウォッチし続ける。そして状態が変化したら、これまでやっていた制御シーケンスの流れを変える。

ここで大事なのは、一般的なマイコンはコアとなるプロセッサはひとつであり、同時に2つのことはできないということだ。同時に2つのことはできないから、外部状況の変化を知るためには、たまに今やっている仕事を中断して外部の様子を見に行かなければいけない。

割り込みの機能を使わない場合、組込みソフトエンジニアはよく簡易モニタというしくみを使っていた。簡易モニタとは定常的にぐるぐる回るループを用意しておき、このループの中で外部状況の変化をウォッチしておき、外部状況の変化を察知したら制御シーケンスが書かれたサブルーチンに飛び、その処理が終わったらまたループに戻るというしくみだ。

外部状況が変化したときに、サブルーチンに飛ばさずにフラグを立てておいて、ループの切りの良いところで処理を行うという方法もあった。このやり方を新人のときに覚えてベテランになった組込みソフトエンジニアはグローバル変数を使ってフラグ処理を多用する者が多い。このグローバル変数を使ったフラグ処理を多用すると、フラグを通じて関数と関数の結合度が強くなってしまうためキレの悪いソフトウェアシステムができあがってしまう。

最初からオブジェクト指向言語でプログラムを書き始めたソフトウェアエンジニアがこのようなプログラムを見ると仰天するかもしれないが、この風習は組込みソフトの歴史がそうさせたともいえる。

さて、ループ処理で外部の変化を察知するやり方はリアルタイム性が強く求められるシステムには向かない。この問題を解決するためには、割り込みの機能が必要になる。

だから、初期のマイコンでは何はなくとも割り込みコントローラは付いていた。割り込みが発生したときに、今行っている処理を横に置いておいて、割り込み専用の処理を走らせることができる。(もちろん、それまで使っていたレジスタはスタックに退避しておく)

割り込みが使えるようになると、リアルタイム性をそれほど必要としない、ぐるぐる回る定常処理+割り込み処理という組み合わせで、ほとんどのことができるようになる。

これが、マイコンがシーケンス処理からリアルタイム制御のコントローラにステップアップした瞬間だ。

この後のマイコンの変遷は 組込みソフトの作り方[3]で紹介する。