IT資格取得~受験料の節約~

ITに関する資格についてのブログ

イテレーション開発とインクリメンタル開発の違い〜劣化版ウォーターフォールに気をつけろ〜

みんな大好きアジャイル開発。アジャイルに対する考え方は、十人十色。理解度も違えば認識も違う。一つだけ、共通認識があるとすれば、ウォータフォールが嫌い。ただ、嫌いな割には、離れられない不思議。蓋を開けてみると、アジャイルといいつつ、劣化版ウォーターフォールになっていること数知れず。

PMBOK第7版を読んで気づいたことがある。

アジャイルを試みる人たちが、そもそも、”イテレーション開発”と”インクリメンタル開発”の違いがわかっておらず、最終的には劣化版ウォーターフォールになってしまっているのではないかと?

私が今まで携わった多くの”アジャイルと称された開発”のほとんどが、”インクリメンタル開発”であった。

そもそもインクリメンタル開発とは何か?

インクリメンタルは、日本語では”増加の、徐々に増加する”である。要は、徐々に開発していくって意味である。インクリメンタル開発の例としてよくあがるのが家の建設である。

  1. 予算と欲しい家の具体化
  2. 設計
  3. 基礎構築
  4. 外枠作り
  5. 内装
  6. 完成

これをシステム開発に照らし合わせて考える。

旧来のウォーターフォールだと、、、

①の段階で、⑥の完成の姿を決め、あとは黙々開発していくイメージである。①以降の変更は、いわゆる変更管理、仕様変更と言われるもので、手戻りやコスト増につながる。SIerが大好きな”これ仕様変更ですよ?”である。水戸黄門の印籠並みに効力がある言葉である。

インクリメンタル開発だと、、、

工程ごとに再検討の余地がるので、多少の設計変更が許容される。しかし、結局のところ”作るもの、欲しいもの”が決まっているので、変更できるといっても壁紙の色や、部屋の仕切り程度であり、微々たるものである。やっぱ、竪穴式住居がいいよね?とかいったところで、”そんな初めから言えや”ってくだりになり、却下される。

この手の方法だと、請負契約にしづらく、結果的にコスト増につながるケースが多い。壁紙の色を変えたところで、元々の構想がいけてなかったら元も子もない。上述した”劣化版ウォーターフォール”とはまさにこのことである。請負を避けたい人売りSIerにしかメリットがない。ユーザー企業の皆様、ぜひ騙されないでいただきたい。

イテレーション開発とは?

よく例示されるがのが、

  1. スケボーを作る
  2. 自転車を作る
  3. バイクを作る
  4. 自動車を作る

である。要は、動くもの、評価できるものをしっかり作成し、次に繋げていく開発である。私の経験則では、このイテレーション開発ができている現場はほとんど見たことがない。

なぜなら、イテレーション開発を実践するためには、”その場でソースコードを書いたり、修正したりする人”が必須であるからだ。

大手SIerに頼むと何故かインクリメンタル開発になってしまう。それは何故か?

答えはシンプル。客先に出てくる社員がソースコードをかけず、結局子会社や下請け会社に依頼しなければならないからである。スクラムを組んだところで、何故か開発チームが、”設計する人とソースコード書く人”に別れ、体制図や指揮命令系統がウォータフォールっぽくなってしまうのである。

しかも、設計する人とソースコード書く人が全くの別会社だともう末期。無駄な優先度の調整が始まり、工数がどんどん消費されていく。しかも請負でないので、完成責任もない。かけるコストの割に、できた成果物がしょぼくなる。

 

ノーコード開発が流行っている今日このごろ。高い投資をして、失敗するぐらいなら、いったん誰でもプログラムが書ける、PowerAutomateとか使ってアジャイルお試しするのはいかが?多分そしたら、”アジャイルやるなら、チームにソースコード書ける人必要じゃなね?”って気が付けると思う。

 

PMBOK 第7版がリリース〜PMI Membershipに少しお得に入会する〜

PMPの更新に向けて、PDU稼ぎが必要になった。しばらく、PMBOKから離れていたが、最近、第7版がリリースされたようだ。日本語版も11月にはPMIのホームページからダウンロードできるようになるとの情報あり。

今回の改訂は、大幅に内容が変わるとのこと。PMP受験者にとっては地獄かもしれない・・・

今後の仕事のネタにもなるし、PMPの更新も必要なので、一度退会していた、PMIのMembershipに改めて入会することに。

PMI Membershipになるメリットのおさらい

その①:PMBOKのPDF版が無料でダウンロードできる

書籍で買うと結構高いPMBOK。PMI会員ならPDF版が無料でダウンロードできる。再入会を決めたのは、これが一番の理由。

その②:PMPの更新料が少しだけ安くなる

数十ドル安くなる。ただし、そもそもの会員費がそこそこ高く、トータルでは高くなるので、更新費用を下げるためだけに会員になるメリットはない。

その③:projectmanagement.comのプレミアムコンテンツが見放題

On-Demand Webinarsでの視聴制限がなくなる。ただし、全部英語なので英語がわからない人にはメリットはない。試聴すればPDU稼げるの、流しっぱにするのはあり。ただし、FreeコンテンツでもPDUは稼げるので、PDU目的だったら会員になる必要はない。無料でPDUを稼ぐ方法は、以下参照。

高い会員費を少しでも抑えたい場合

PMI会員になる際に、”promo code”の入力欄がある。Googleで、”pmi promo code”と検索してみたら、入力すべきコードが紹介されているサイトがいくつか表示された。試しに、テキトーに開いて、コードを入手し、入力してみると10ドルほど安くなった。試しにやってみるものだなと。ランチ一回分得した気分。

 

PMI会員についてまとめると、個人的には、PMBOKが欲しいか、プレミアムコンテンツみたい人ぐらいにしかメリットはないと考えている。前者は一度ダウンロードすれば、手元にずっと持っていられるので、継続的に会員になる必要はない。

年会費がお高いので、サクッとやめてしまうのが吉。ガサツな人は、登録後アカウントの設定で、”Membership Automatic Renewal”をOFFにしておけば、勝手に更新される心配もない。

 

PMP取得に向けて、勉強している人は、第6版のうちにとることをお勧めする。試験時間長いし、何より受験料が高い。落ちた時のダメージは、計り知れない・・・・

 

ソースコードの行数をカウントするVBAマクロ

前回に続きVBAに関する記事。

いきなり巨大なZIPファイルを渡され、ソースコードの行数をカウントしてほしいとのオーダーがあった。

いやいやちょっと待て。VS Code Counter使えば一瞬だろと突っ込んだが、何故かやってくれない。ベンダーに聞けばいいじゃんっていえば、ごにょごにょいって対応してくれない。

  • 全てベンダーに丸投げで何もできない
  • ちょっと調べればできることをやらない

こんな社員ばかりだから、DXがいつになっても成功しないのでは!?

コスト感覚も狂っていて、こんなどうでもいいソースコードのカウントをお高いお高いコンサルにお願いしようとする。こりゃコンサルが儲かるわけだわ。その依頼されたコンサルもソースコード書いたことないし、VSCode触ったこともないような人なので、時間がかかる。ソースコードをカウントするだけで、数十万円のコストがチャリーン。

現場では1円、1銭のコストを切り詰めているのに、少し離れたオシャレなオフィスでは、DXの名のもとに

数十万円どーん、数百万円どかーん、数千万円?意外に安いじゃーん

と湯水のようにお金が流れていく。実に不思議なことだ。

って前置きはおいといて、何故かネットにもつながらない、かつ、VSCodeがインストールされていない端末でソースコードをカウントするはめに。(お安い便利屋の宿命)

困ったときはVBAということで、スマホでググりながらソースコードを書くことに。

世の中にジャストフィットするサンプルがなかったので、このブログで紹介することにしました。(必要性があまりないので、当然といえば当然ですが、、、)

 

★注意点★

コメントとか空行とかは1行としてカウントします。真剣にやればできたかもしれませんが、正直めんどくさかったので、何もこだわっていないです。

[ソースコードをカウントするマクロ]

<準備①>

B2にカウントしたい対象の親フォルダのパスを入力。

B4~F4にラベルを入力。以下イメージ。

f:id:mylives2010:20210510141152p:plain

<準備②>

 Alt+F11でマクロの編集画面を開き、ツール→参照設定で、”Microsoft Scripting Runtime"にチェックを入れる。

f:id:mylives2010:20210510141426p:plain

<準備③>

以下のコードを標準モジュールに貼り付ける。

Sub getFileList(searchPath)

Dim fso As New FileSystemObject
Dim objFiles As File
Dim objFolders As Folder
Dim separateNum As Integer
'サブフォルダの取得
For Each objFolders In fso.GetFolder(searchPath).SubFolders
Call getFileList(objFolders.Path)
Next
'ファイル名の取得
For Each objFiles In fso.GetFolder(searchPath).Files
separateNum = InStrRev(objFiles.Path, "\")
'ファイルの情報を書き込む
ActiveCell.Value = Left(objFiles.Path, separateNum - 1)
ActiveCell.Offset(0, 1).Value = Right(objFiles.Path, Len(objFiles.Path) - separateNum)
ActiveCell.Offset(0, 2).Value = FileDateTime(objFiles)
ActiveCell.Offset(0, 3).Value = Format((FileLen(objFiles) / 1024), "#.0") 書式崩れるのでカッコ大文字にしています。ご注意 
'ファイルの行数をカウントする
Dim F_PATH As String
F_PATH = objFiles.Path
Dim fso1 As Scripting.FileSystemObject
Set fso1 = New Scripting.FileSystemObject
Dim ts As Scripting.TextStream
Set ts = fso1.OpenTextFile(Filename:=F_PATH, IOMode:=ForAppending)
ActiveCell.Offset(0, 4) = ts.Line
ts.Close
ActiveCell.Offset(1, 0).Select
Next
End Sub

Sub setFileList(searchPath)
Dim startCell As Range
Dim maxRow As Integer
Dim maxCol As Integer
Set startCell = Cells(5, 2) 'この位置から出力し始める
'シートをいったんクリア
startCell.Select
maxRow = startCell.SpecialCells(xlLastCell).Row
maxCol = startCell.SpecialCells(xlLastCell).Column
Range(startCell, Cells(maxRow, maxCol)).ClearContents
Call getFileList(searchPath)
startCell.Select

End Sub

Sub CommandButton_Click()

Call setFileList(Cells(2, 2))

End Sub

 

 

上記で準備完了。後は、 CommandButton_Clickを実行するだけ。実行結果のイメージは以下。

f:id:mylives2010:20210510142058p:plain

 

彼らはこの実行結果を何に使うのだろうか。。。(´・ω・`)

 

VBAエキスパート公式テキスト Excel VBAベーシック

VBAエキスパート公式テキスト Excel VBAベーシック

  • 作者:田中 亨
  • 発売日: 2019/05/30
  • メディア: 単行本(ソフトカバー)