2年以内でエンジニア社内トップ10入りを目指すブログ

報酬制
・プログラミングや技術についての勉強をする
・新しい技術や知らない技術に触れる
・何かゲーム開発をする
・業界に関するニュース等を調べ、考察する

上記のいずれかを達成した日のみ、以下のことをしてもよい。
・ゲーム
・アニメ鑑賞
・飲酒

今回はアジャイル開発について学んだ。
アジャイル開発ってよく聞くことはあるけど、なんなのかよくわかってなかったから良い機会だった。

まずウォーターフォール型の開発について。
要求定義、設計、プログラミング、テストの作業を一回ずつ行う開発プロセス。
昔はプログラム一行変更するだけでどんな影響が出るかわからないという時代があり、そのリスクとかを回避するために最初っから仕様を固めてその通りに作ろうって考え方らしい。
うん、C言語とかアセンブラ言語とかの時代を知った上だと、すごく納得できる開発プロセスだね。

ただ、開発途中の仕様変更とか開発環境を更新したいとかの要求って絶対付きもので、この開発プロセスだと途中での臨機応変な対応ができず、もしそれが発生した時に大幅なインパクトを受けることになる。

そこで新しく考えられたプロセスが、反復開発手法らしい。
シンプルに言うと、要求定義からテストまでのサイクルを何度か行う開発手法で、要求の変化を受け入れやすくすることや大きな問題の早期発見と対策を行えるようにするのが狙い。
その中でも、RUPとXPと呼ばれるプロセスが有名らしい。
RUPはサイクルを3回回すやり方。最初の一回でプロトタイプを作り、次に全体開発を行い、最後に総合テストを行う。
XPは反復開発は反復開発なんだけど、メンバーのコミュニケーションやモチベーションなどの開発のしやすさに重点を置いた、従来の開発手法のアンチテーゼみたいな開発プロセスらしい。
そんで、このXPが開発者の間で話題になり、以降に似たようなプロセスが色々考案されたらしく、それらをまとめてアジャイル開発というらしい。

アジャイル開発は最初から最終品コードを作り始めることになるみたいで、その対策の手法としてTDDやリファクタリングがある。
TDDは、従来の設計から入るプログラミングではなく、先にコードを書いて動かしてみて、そのあとちゃんと整えるという流れを数分単位で繰り返すことで、確実に動くコードを素早く作れるというメリットがあるとのこと。
リファクタリングは一旦完成したプログラムの外部仕様を変えずに内部構造を安全にすることらしい。
びっくりしたのが、リファクタリングという言葉は辞書に載ってなくて造語だという点。
従来は一旦動いているコードはもう触るなっていう考えがあったらしく、この考えも昔からしたら斬新だったみたい。

いやーこの変の考え方の変遷って面白いね。昔は決められたことは絶対であり、プログラマはその通りに作ればいいっていう考え方から、最近はプログラマに最大限に働いてもらうために、その環境を準備することが大切だっていう考え方に変わったんだね。(まぁ会社とかにもよるだろうけど)
うちの会社は、完全にアジャイル開発でやってきた会社ですっていうイメージだなぁ。
入社した時すごく感動したし、働きやすいとも思ったなぁ。
ただ、最近はそのアジャイルアジャイルした開発だとうまくいかない(働きやすさも重要だけど、ちゃんと期間や目標を達成できなきゃ意味がない)と会社的に感じてきたらしく、アジャイル要素を残しつつのRUPに移行していってる雰囲気を感じる。
この辺は自分も思ってたことだし、正しい判断をしているなぁとは思う。
まぁ、どの開発プロセスも一長一短あるから、会社やチームに合わせたものを取り入れるのが大事ってことやね。

オブジェクト指向に関することだけの本なのにやたら長いなぁと思いつつ、読み進めた。
今回はモデリングについてと、ソフトウェアの擬人化について。

今回のモデリングってのは、開発するソフトウェアが現実世界の何を肩代わりするのかを具体的にすることを指すよ。
モデリングは、まず現実世界の仕事の進め方を整理し(業務分析)、コンピュータに任せる仕事の範囲を決め(要求定義)、ソフトウェアをどう作るかを決める(設計)。
これって要するに、作る前にちゃんとこれから作ろうとしてるものが何か知ってから取り掛かろうねっていう話で、現状あまりできてないと自分でも思う部分だから、UMLとか書きつつ改善していこうと思った。

ソフトウェアの擬人化について、確かに自分もクラスに関して説明する時に「こいつ(このクラス)はこういう立ち位置だから、この処理は別のクラスに書くべきだ」とか、言われてみれば擬人化してるなぁって思った。
ここで重要なのって、口で簡単に説明できているってことだよね。要するにその方がシンプルでわかりやすい設計になっているはずだから、できるだけ現実に置き換えて分かりやすい設計にしておいた方がいいよねっていうお話。

オンラインゲームの技術に対するビジネス周りの要求についてを読み進めた。

中国って1分で1円とかのオンラインゲームがあるんだね。びっくりした。
その辺の文化って国によって違うみたいだから、世界向けのゲーム出すときはちゃんと認識した上で出さないとなぁと思った。

オンラインゲームは「1回サービスを停止すると、1%のユーザーを失う」と言われているらしい。
確かにゲームって生活必需品じゃないから、一度失望しちゃうとそれ以降やる気が失せるよね。
これはすごく分かる。
だからそれを緩和するために毎週何曜日の何時からメンテナンスみたいなことをしてるんだね。
作る側としては、それらを意識しながら作ってかないといけないなぁ。基本的に緊急メンテナンスは無し。

このページのトップヘ