僕のシステム開発における技術選定についての考えをまとめてみました。
「顧客要望やサービスの要件にその技術を選択して本当に合っているのか?」と多々思うことがあるのです。
今回は僕の技術選定についての考えをまとめてみました。
技術選定ってなに?
簡単に言うと顧客の要望やサービスの要件を満たすための技術を選ぶことです。
例えば、WebでECサイトを作りたいとくればWeb開発言語で開発をすることが選択肢に挙がります。
技術選定の基準
技術選定を以下のような項目で分けて判断しています。
- 要件との合致
- 情報
- 将来性
- 開発効率
- 費用対効果
要件との合致
顧客とサービスの要件と技術が合致するのかを調べる必要があります。
要件が実現出来る技術を選ばないと後々発覚した時点で全てをやり直すか無理やり実現するしかないのです。
情報
該当の技術の情報がどれほど存在するかを調べます。
最低限、公式サイトなど信頼が置ける情報がないと開発時効率も左右されますし、バグリリースなどの情報が見つからないとセキュリティにも響きます。
将来性
どんな技術にも流行りや廃りが存在します。
「今流行っているから」と最新技術を取り入れても競合技術の方がデファクト・スタンダード(事実上の標準)になる可能性があります。
使用した技術がタイミング悪くすぐに廃れてセキュリティホールが閉ざされるず放置されることもありえます。
作ったシステムのプログラムやフレームワークに公式からのセキュリティパッチ・バグ改修がなくなった場合、自分たちで対応することもあるのです。
開発効率
開発するにあたって開発期間が決まっています。
そうなると、開発効率が遅い技術を選定して「納期に間に合いませんでした」では許されません。
出来るだけ開発効率が良い技術を選定すべきです。
また、開発効率の中にはプログラミング技術などの学習効率を含めます。
プロジェクトに参加する人数が多くなると全員が玄人で何も教わらず、覚える必要もないということはないのです。
会社の新人や、その技術の未経験者に教えて開発できるようになるまで1年かかる技術と1週間かかる技術では最終的な工数も大幅に変わります。
費用対効果
費用と効果を考えてみてください。
ライセンスの関係で無料や低価、高価の技術を選ぶことがありますが、お客様の要求を満たせれば無料・低価でもいいはずです。
稀に高価な技術にしておいて「オーバースペックで使いこなせない」ということがあります。
「お金をかける=良いシステムが出来る」と思っている方が居ますが、絶対にそんなことはありません。
技術選定を考えてみましょう
「ECサイトを作って欲しい」の要望に必要な技術を選んでみてください。
選ぶものは以下のような感じです。
- 開発言語
- フレームワーク
- インフラ(オンプレミス or クラウド)
- Webサーバー
- DB
開発期間や要件にもよるかも知れませんが開発者の知見の多い開発言語などになりがちです。
全てを新しいことにすると知見がないので出来る人間を入れる必要があったりして中々難しくなります。
例えばWebサーバーは今までApacheを使用していたが、今現在何が出ているか、各Webサーバーの機能や費用などをまとめて知見・要件・スケジュールと相談してサーバーを選ぶのです。
技術選定の考えはキャリアにも使える
例えば資格を取りたいと漠然と考えます。
こういった場合、まず「◯◯の資格を取ろう!」と考えるのもいいですが、僕は「取得したいスキルと資格が一致しているか?」や「資格取得費用と有用性はどれくらいなのか?」と考えます。
たまにあるのですが、資格を取得しても知名度が低かったり、取得費用が高い割には有用度が低いものがあったりするのです。
まずはどんな資格があり、どんな効果を得られるかを考えてみましょう。
余談:プログラミングスクールがRubyを選択している理由
某スクールに通った経験がある方と話してて僕が気づいた余談です。
その方が通ったプログラミングスクールもですが、プログラミングスクールではRubyが選択されていることが多いイメージなのでRubyが選択されている理由を考えてみました。
- 開発者が日本人のため日本語のドキュメントが豊富
- フレームワークはRailsほぼ一択しかないので、RubyとRailsを覚えればいい
- 動的型付けなので、型の意識をしなくても良い
大まかな印象ですが、こんなところです。
Javaなどの静的型付けなものだと、まず型の考えから教えないといけませんし、フレームワークが色々あるものですと、そのフレームワークを教えたところで実務で使わない可能性があります。
なので日本語のドキュメントも多く、型も動的でフレームワークはRailsの案件が多いRubyが選択されているのだと思考えられます。
最初に入るにはとても良いとは思いますが、何故その言語を学ぶかということを知らずに、考えずに学ぶことは危険だと思っています。
まとめ
長年同じ構成のシステムを使うのは知見があり、開発効率が良いと思いますが技術選定を行わないと使用している技術が本当に作るものとあっているかとの相違に気づけないことがあります。
調べたらもっと合うものがあったり、使用しているフレームワークの更新が止まってたりすることもあるのです。
IT業界では凄い速度で新しい技術が出ていますが、新しい技術に飛びついて失敗することも多々あります。
個人の趣味なら新しい技術を学ぶことは僕は構わないと思いますが、仕事で新しい技術を取り入れてその技術が廃れたことが何度もあるので、信頼と実績も重要になります。
0 件のコメント :
コメントを投稿