LoginSignup
36
27

More than 5 years have passed since last update.

技術選定の時に気を付けること

Posted at

新技術の話をしたときに、僕がいつも話すことをまとめてみました。気になるところとか、突っ込みどころがあれば、コメントいただきたいですm(_ _)m

技術選定時に気を付けること

  • 現場に残る人たちが使いこなせるのか?(選定した人が抜けても機能するか?)
  • ブラックボックス的に使うなら、十分に枯れているか?(10年以上が節目?
  • シンプルさや、使用感の統一性、既存技術との乖離性(手続き型と関数型など)などを考慮
  • 高負荷時の動作など大丈夫なものか?(高負荷になるとバグが出たりします。。。)
  • 既存技術と比べて大きな優位性があるのか?
  • 頑張って選んでも、数年後には古いと言われます。。。
  • 影響範囲が狭くて、修正頻度が極端に低いのであれば、とりあえずGoでもおkかと。
  • スケールアウト出来るとはいえ、実行速度が速い言語のほうが良いと思います。(プロトタイプ制作なら作りやすいものが良いかもですが。。。)

など、色々と考えたほうが良いかなぁと。

C言語は今でも価値のある言語か?

CouchDBでは当初Erlangを多用していたが,
"Erlang VMのクラッシュのせいで2人月以上を" 浪費した

など、言語そのものなど、ブラックボックス的に使う部分に不具合があると、マジ大変です(言語のコミッターが居るとかなら良いのでしょうが、そういうことは稀だと思います。。。)さらに、業務要件を実装するのも大変なのに、言語自体のバグにも悩まされるのは本質的では無い気もします。

新言語の導入失敗

担当者が新言語を導入したいと願って、導入したは良いが、その担当者が会社辞めてしまって、残ったエンジニアが、メンテ出来ないorしたくなくて、結局別言語でリプレイスされたというのはありました。(残された人たちの恨みが大きかったです。)

導入担当者への信頼

若い子に新技術を導入したいと言われたときに、不安な気分になったのですが、実績のあるベテランが導入したいと言った場合、特に何も感じませんでした。この違いは何かなぁと考えたときに、自分に影響があるのか無いのか?の違いだと思いました。現場のことも考えて普及活動も含めて、最後までケツ持てるのかどうか?という違いは大きいなぁと思います。(逆に言えば、そこまでやる気も無いのに導入されるとちょっと。。。)

型の無い言語のバージョンアップ

テストが無いと、どこで影響が出るのか分からず、バージョンアップがものすごく怖いです。Node.jsで実装していた時も、テスト必須だと思ってテスト駆動開発で実装していました。(Node.jsは、テスト駆動開発がしやすいので、テスト駆動開発おすすめです。)

まとめ

色々と書きましたが、新技術導入自体は良いと思っています。ですが、システムが動かなくなる危険があるので、リスク・リターンを見極めて、慎重に導入していってほしいと思います。(けっして流行っているからとか、今時のモダンスタイルがどうのとか、そんな軽いノリでやらないでほしいです。)

36
27
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
27