ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

プログラミングのどの分野に興味があるか?

2011-10-29 17:18:29 | プログラミング

ある人に「プログラミングのどの分野に興味があるか?」と聞かれ、とっさに「プログラミング全般」と答えたけれども、あまりにも漠然としているorz (頭が悪いので臨機応変なやりとりって苦手でして…)
ので、もうちょっと詳しく考えてみた。


そもそも自分は物を作るのが好き。

小学生時代はずっとレゴブロックで遊んでいたし、プラモデルやタミヤの模型に手を出していた時期もある。
そうこうしている内にファミコンが出てゲームにハマったが、ナッツ&ミルクロードランナーの自作ステージを作るのも好きだった。(ファミコンじゃないけど、アクションパズルΦ自作ステージを一番多く作ったのも自分だなw)

そして友人がパソコンを買って 見せてもらったのをきっかけにプログラミングを知り、それ以来ずっとプログラムを作ってきた。


プログラムを作るのが楽しいというのは、
(1)出来たプログラムを実行して使うのが楽しい、あるいは便利(例えばゲームとか業務システムとか)
(2)プログラムを作ること自体が楽しい(パズルを解くのと似ている)
という2つの面があるのではないかと思う。

(1)の「プログラムの目的」については、当初はゲームを作ることだった。
そしてプログラムを作っている内に「いかに綺麗に書くか」といったプログラムの作り方そのもの(つまり上記の(2))にも興味が出てきた。


仕事のプログラムの場合は、当然(1)「プログラムの目的」が重視される。「動けばいい」と言う人は、(1)しか考えていないのだろう。
実際には仕事のプログラムこそ品質(バグの少なさやメンテナンスの容易さ(後から他の人が見ても分かるようにする))、つまり(2)「プログラムの作り」が重要なんだけど。

自分の場合は、自分が関わるプロジェクト(仕事)のプログラムの品質は良くしたいと思っている。
仕事では自分一人でプログラムを全部作るなんて事は無くてチームメンバーが居るから、全員のプログラムの品質が良くないといけない。
だから(少なくとも自分程度の技術力でも分かるような)変なプログラムを作らせない為にどうすればいいかといった事を考えることもある。
(自分がウェブページで色々技術的な事を書いているのは、主要な目的は自分の記憶力が悪いのでメモしておくことだけど、メンバーに「これを見れ」と伝える目的もある。いちいち説明するの面倒だからね(爆))
スケジュール管理だのリスク管理だのも、良い仕事の為には必要だろうとは思う。

もっと言うと、SIの仕事はお客さんの問題を解決することであって、既存パッケージを組み合わせるとかコンピューターシステムを作らないとかって事もアリ。
お客さんと直接話して問題を解決する(いわゆる上流工程)のが面白いという人も居るだろう。それは分かる。人の役に立つのは嬉しいからね^^
あるいはプロジェクトをとりまとめて成功させるのが好きだという人も居るだろう。

でも僕はやっぱりプログラムを作らない仕事には意欲が湧かないなぁ…。少なくとも自分が目指したい場所ではない。
時間が経てば興味が移り変わることも自然だと思うけれど、自分は変わらなかった。


ところで、プログラミングの「分野」ってどういう分け方があるだろう?

組み込み系・業務(サービス)系・ゲーム系とか、バッチ系・ウェブ系・リアルタイム系とか、あとは理論派・実践派とか?

そういう意味だと、自分が主にやってきた分野というのは当然あるとして、他の分野にも興味自体はある。だから「興味があるのは全般」という考えになっちゃうのかな。
でも理論とか組み込みとかになると、たぶん付いていけないけど(苦笑)


では自分が一番何をしてきたか(興味がある事をやってきたはず)と考えると、プログラムの改造・改良かもしれない。

例えばM.T.GODDESSの改造は神懸かっていたし(公開してないので誰も知らないが(爆))、大学の卒業研究ではC言語の改良版を作りたかったし(さすがに無謀だったので、作ったのはLispをC言語に変換するツール)、MSXエミュレーターの拡張をしようとしていた時期もあったな(汗)

例えばHadoopに興味を持ったのは自分のプロジェクト(お客さん)の抱えている問題が「夜間バッチが遅い」なのでそれを解決できるかもと思ったからだが、Hadoopそのもののプログラミングは面倒なのでPigHiveAsakusaFWといったアプリが作られていて、そちらにもすごく興味を引かれる(笑)
(今作っているshrも、使っていると色々機能追加したくなってきて面白いw)

つまりは、「面白いソフトがある」→「使っていると改造したくなる」というのが自分の行動原理なのかも。
改めて自分が今までに作ったツールを見てみると、既存アプリを便利に使う為のものが多い。(しかもエンドユーザーをターゲットにしたものがほとんど無い^^;)


もうひとつ興味があることとして思い浮かぶのが、「良いプログラムを作りたい」ということ。

「良いプログラムって何?」って言うと、開発効率が良い(短時間で作れた)・ソースの見た目が分かりやすい(美しい)・実行効率が良い・バグが無い・使う人から喜ばれるもの、かな。
ここまで揃ったら、もはや「芸術品」だね(笑)
(たとえ綺麗に作れても、使われないシステムだったら作った意味が無いので、芸術品とは思えない)
プログラマーなら誰でも目指している物だろうから、特に自分だけが興味を持っている分野というわけでもないと思うけど。

自分が新しいプログラミング言語を勉強したいと思うのも「良いプログラム」の一環かな?
新しい考え方っていうのも興味深いし。


ここまで考えてきて気付いたけど、やっぱり自分は「何を作るか(新しいサービスを作ること)」は眼中に無い(爆)
というか、「発想する力が無いので、出来ない」っていうのが正しいのだが。

世間では“誰も作っていないサービスを発明する”ことが評価される(それは当然だと思う)けど、みんながみんなそれを出来なきゃいけないって訳でもないし、実際できないし。
発想する人と作る人と改造する人、適材適所で分担してやればいいじゃん!

(とは思うが、他人が作ったものを改造するなんて事は誰でも出来るので、自分の得意分野とか言うのは憚られる…)

あるいは、SIの仕事ならお客さんの役に立つシステムを作るのが当然だが、その為の業務分析だのなんだの…には興味は無いんだよなー。
分析された結果を、コンピューターシステム上に上手く・素早く実現(作成)させることには興味がある。


うーん。

一言で答えられるような上手い答えは出せなかったけど、色々考えを整理するきっかけになった素晴らしい質問でした。ありがとうございました。


最新の画像もっと見る

コメントを投稿