Hatena::ブログ(Diary)

TECH-moratorium : テクモラトリアム このページをアンテナに追加 RSSフィード

2011-01-18

[]『ファミコンの驚くべき発想力』〜制限から生まれる工夫

ここ最近では一番面白かった。

僕はファミコン世代の人間だけど、実はゲームはするより、作るほうがおもしろかった。小学校当時PC6001で一番最初に作ったのは確かじゃんけんゲーム。その後数年かけてアドベンチャーゲームとか、RPGとか、シューティングとか対戦格闘とか一通り作った(全部BASICだったけど)。

ファミコンの驚くべき発想力 ?限界を突破する技術に学べ? (PCポケットカルチャー)

ファミコンの驚くべき発想力 ?限界を突破する技術に学べ? (PCポケットカルチャー)

この本の良いところは、古き良きファミコン時代のノスタルジーを喚起するだけでなく、コンピュータの基礎が学べるところ。CPUとかメモリとか、レジスタとか。シフト演算で乗算と除算を行うと軽い、など組込み開発でも通じるテクニックとか。

ファミコンというハードのすごいところは、本書にもある通り「遊べる性能」とコストとのバランスだと思う。あと、ROMカートリッジを採用したことによる拡張性の高さ。だからあれほど長い間遊ばれることになった。(そういえば、当時のコナミのゲームの拡張音源は素晴らしかった!)

そして、制限の中で闘ったプログラマの工夫の一部が技術的に垣間見れるのも面白い。ドルアーガの塔の迷路は実はランダム(ステージ数をランダムのシードにしている)で、容量圧縮のためだったとか、最終フロアは偶然あの形になったとか、ドラクエのストーリー進行は7ビットで復活の呪文に保存されている、とか。オールドゲーマーの自分にとっても新鮮な情報も。

気楽によめつつ技術的な内容も充実しているので、ゲームマニアじゃなくても読む価値あり。ファミコン時代の古い話だけでなく、オブジェクト指向やガーベージコレクションなど、「現代プログラミング」の功罪についても若干触れており、フレームワークや用意されたAPIなどのプラットフォーム前提で開発することが現代の開発者にとっては考えさせられる。

2010-06-30

[][]制御の世界

私は業務システムの開発を中心にキャリアを積んできました。UNIXでのクラサバからVisualBasic、WebではJavaが多かったです。アーキテクチャや業務内容に多少の違いはあれ、いずれもソフトウェアだけで完結する世界でした。

この「業務の世界」にすっかり慣れ親しんだ自分にとって、組込み、特に制御の世界はまったくの未知数の分野です。ソフトウェアは制御にとって道具に過ぎず、「実際に動くモノの挙動」に心血を注ぐ世界だと雰囲気ではわかっているつもりですが、具体的にどのような仕事が必要で、何が課題になっているのか、もっと具体的に理解する必要があると感じています。

そんなとき、次の連載を読むことで随分理解が助けられました。

体験! MBD&MDDによる組み込みシステム開発(4)制御の世界のモデルベース開発とは?

※ちなみに記事中にも触れられているPID制御については、こちらを併せて読むとさらに面白いです。

制御モデルとはつまり業務知識そのもので、モデルベース開発をすることで、業務知識をそのまま動くソフトに変えることができる。これが組込み制御系の世界では実際に起きていることです。

業務系・ビジネス系ではなかなかこうはいかないことは肌身で分かっています。ただ、制御の世界から何かヒントが得られるかもしれません。普段とは違う刺激を求める業務系のソフト開発者の方にもお勧めできる内容です。ご一読ください。

2008-10-14

[][]小さくても成功しているソフトウェア企業

『Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方』が面白いです。まだ全部読み終わってませんが感想を書き始めたいくらい。

Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方

Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方

『Eric Sink・・・』は受託でない「ソフトウェア企業」がテーマです。つまり自分の会社でソフトウェア製品を開発し売っている企業が舞台であり、そこで働くエンジニアが主役のお話です。

私が洋書(特にコンサルタントが書いている、軍のシステムがよく例示されているもの)を読んでいつも感じるのは日米のソフトウェアビジネス環境の違いからくる違和感です。洋書の場合、暗黙的にソフトウェア製品開発現場が舞台になることが多いのですが、私が受託開発に携わっているせいか、正直ピンと来ない部分もありました。*1

しかしこの本にはその違和感はありません。帯にも「小さくても成功しているソフトウェア企業の マーケティング/マネジメント/セールスのすべて」とあるとおり、扱うテーマが比較的小さく設定されてあるせいかリアルです。受託開発を生業としながらも、裏テーマが「脱受託」である私にはジャストフィット。ちょうど読みたかった本です。

特に(今のところ)面白かったり共感できたり役に立った章を気に入った文章とともにメモしておきます。

  • 第7章 もっと失敗しよう

私はセミコロンに対する宗教的な信奉は捨て、VisualBasicで作るべきだったのだ。

1998年にGUIアプリをJavaで書くことに掛けたことについて。私も似たような経験をしたもので。。

プログラマ”(コードを書くのに特化した人)ではなく、必要なのは”開発者”(製品の成功のためにたくさんの面で貢献する人)なのだ。

これはスモール受託開発をやっている会社でも同様ですね。

  • 第11章 すごいハッカー != すごい社員

しかし私はISVで働いている。ソフトウェアを作るのは好きだが、SourceGearは趣味でやっているわけではない。それは仕事なのだ。私たちは顧客に製品を売っている。ここではユーザーより重要なものはない。何も。

この文は何回も繰り返し出てきます。「ユーザーより重要なものはない」は、当たり前だけど大事です。

  • 第13章 キャリア計算

学習を一度限りの出来事ではなく、継続的なプロセスにしたいのだ。一次導関数を常に正にしておくというのは、公式の教育だけの話ではない。日々仕事に取り組む姿勢もそうあるべきなのだ。学び続ける姿勢を持ち、いつでも喜んで学ぶということだ。

今日はここまで。

*1:だから『受託開発の極意』では「日本といえば受託開発」という「ご当地感」を狙って書いている部分はあります。

2007-03-30

[][]プログラミングは楽しい

↓天野さんもそうだったように、僕も小さいころはプログラミングが好きだった。

* ベーマガ

* はじめてのマイコン(ゲームセンター嵐)

* パピコン(PC-6001)

* N88 BASIC

* フロッピー20枚分、大容量ハードディスクの衝撃

↑全部私も経験済み。そういえば楽しかったなぁ、プログラミング。

TECH-moratorium : テクモラトリアム

初めてうちにパソコン(PC-6001)が来たのは確か小学校4年生。親父がマニアだったせいか、うちにはいろんなコンピュータがあって、今思えばオフコンみたいなたたみ一畳はあろうかというジャンク(紙テープで動く)や、基盤むき出しのコンピュータみたいなやつがあった。

ベーマガのソースコード打ち込んでゲームを動かしたり、tinyゼビウスにはまったりしていた。

よくいるパソコン少年の例に漏れず、僕も自分でゲームを作りたいがためにプログラミングを覚えた。BASICからスタートしたけど、結局「マシン語」には到達できなくて、それが今でもなにか負い目になってるかも。あのころから理系チックなことはダメだったなぁ。

それでも、その後PC-98やX68kでいろんなジャンルのゲームをプログラミングしてた、アドベンチャー・RPGシューティング・格闘と、一通りのものは作った気がする。しかも全部BASIC。構造化なんて最後までできなかった。でも、楽しくて夢中になってた。(今でもだからプログラミングには自信がない。でも、ドット絵書くのは得意だったよ。)

つい先日、我が家の倉庫に眠っていたX68kをついに棄てることにした。あのハードディスクには、今でも僕が最後に作った2D格闘ゲームが入ってるんだなぁ。昇竜コマンドも全部IF文べた書きだったよ。。ロジックは確か以下のような感じだった気がする。

  1. FOR
  2. キー入力受付
  3. IF 自分が相手より左の位置 & キーが右に入力 THEN 昇竜フラグ = 1
  4. IF 昇竜フラグ = 1 & キーが下入力 THEN 昇竜フラグ = 2
  5. IF 昇竜フラグ = 2 & キーが右下入力 THEN 昇竜フラグ = 3
  6. IF 昇竜フラグ = 3 THEN GOTO 必殺技発動
  7. 以下、技の数だけ。。。
  8. NEXT

まあ、こんな程度でした。結局会社入ってからです。プログラミングの基礎を勉強したのは。

あれからもう15年。プログラミングはしなくなっちゃったけど、今はもっと楽しいことを見つけた。プログラミングが今でも大好きな人達といっしょに、ソフトウエアを創造する仕事です。

2007-03-28

[]ソフトウエア開発と天野

第1回天野カンファレンスに参加中。

天野勝さん。

  • ベーマガ
  • はじめてのマイコン(ゲームセンター嵐)
  • パピコン(PC-6001)
  • N88 BASIC
  • フロッピー20枚分、大容量ハードディスクの衝撃

↑全部私も経験済み。そういえば楽しかったなぁ、プログラミング。

以下、天野トリビア
  • 学生時代にプログラミングのバイトをしていた
以下、いいこと言った。
  • 特別意識と常識人意識と、大企業病と、変わること。

あまのりょーさん。

  • アナロジの天才。呑み会マッシュアッパー
  • 2%くらいは、きょうのイベント自体がどっきりだと思っていた。
  • LT(ライトニングトークス)脳の恐怖。なんでも、トークスネタにしたくなる時期があった。
以下、いいこと言った。
  • 人の悪口を言わない
  • 良いと思ったら素直にほめる
  • 社交辞令は言わない
  • オトナの約束はしない(飲もうと言ったら「絶対に」行く)
  • 首を鳴らす癖は危険。脳梗塞のリスクあり。
  • モチベーションの波は、チームとして安定させれば良い
  • 特定のプロジェクトにとっての特定の良い法則を導くのが大事

↑同感

以下、天野トリビア
  • 熱気球のパイロットライセンスを持っている

id:amachangさん。

数年ぶりに会ったら、すっかりすごいJSな人になってた。

  • 職業プログラマ
  • IT戦士
  • 最近、Apolloに興味がある。クロスドメイン通信ができるのが良い。
以下、いいこと言った。
  • 「青春を取り戻す」という目標がある
  • 自分を窮地に追い込んで、突き進んできた
  • ブログ大事
  • 失敗はブログの基ネタ、逆に喜ぶ
  • 知ったかぶりをすればいい。どんどん知ったかぶろう

↑なかなかまねできないなぁ。

  • 情報は整理しない。散らかしておけば良い。
  • 変数の個数は節約すべき
以下、天野トリビア
  • 「勉強ができない」で検索すると、最初にヒットする