汎用性という技術力について考える

2021年1月7日

日記

eyecatch 技術スペシャリストの、弓削田です。 windowsやLinuxなどのOSがサポート期限が切れるという事で、世の中でまあまあ騒いでいる人がいます。 Microsoft製品サポートライフサイクル一覧(2020年9月1日更新) また、サーバーでこっそり使っているPHPなどにもサポート期限があり、その期限によってバージョンアップ対応を余儀なくされて仕事がふえているエンジニアもたくさんいます。 PHP のサポート期間について(バージョンごとの一覧表あり) こうした基盤システムのサポート切れで、アップデート対応をする場合、開発現場には大きな工数が発生し、企業の製品保守コストが非常に高くついてしまうことは容易に想像できます。 でも、こうした保守コストを抑えるためにどうすればいいか考えてみたいと思います。 企業のITサービス保守などで参考にしてもらえると幸いです。

1. 長続きしないライブラリなどは使わない。

Githubが当たり前のように広まってから、OSSの提供幅と、その種類は半端なく大きくなっています。 かゆいところに手が届くライブラリや、スニペットなど、検索すればかならず見つかると言ってもいいでしょう。 しかし、仕事で使っているサービスで、一部の機能でそうしたライブラリを使っていると、アップデートをする際にその互換性や、そのOSSの不具合などで 余分に時間が取られてしまったというエンジニアも少なくないでしょう。 これは、開発した後、しばらく運用をして保守をしながら、何かしらのアップデートを何度か行って初めて気が付くことから、 開発直後は初期開発を短縮できて、かつ仕上がりもいいと判断されることが多い事から、「ライブラリは使わないと損」という思考に陥りやすいのですが、 その後トラブルが発生して初めてしくじったことに気が付くということが多いようです。 もちろん、全てのライブラリ仕様が失敗という訳ではないのですが、 世の中のプラットフォームアップデートのタイミングにいち早く対応してもらえるライブラリなのかどうか、 その後のライブラリ自体のアップデートが体制化されているかどうか、 などの確認を事前にしておく必要がありますね。

2. 上位互換・下位互換を十分に意識する。

当たり前のようで、意外と難しい、互換性を担保する思考ですが、 iOSの開発をしていた時に、ある時突然、これまで使っていたObjective-Cの基本関数が「Discared」となって、 次のOSバージョンからは使えなくなるという事で、対応しなかったらappストアからバンされてしまうって、 なかなかの厳しい状況ですよね。 そして、ついには「Objective-Cがオワコン」として、swiftに書き換えなければいけなくなった時に、 泣きたくなったエンジニアも少なくないでしょう。 別にobjective-cを使い続けては行けないわけではなく、バンされるわけではないのですが、Appleはswift言語に 力を入れていることは目に見えて明らかなので、情報もそちらのほうが得やすい事を考えると、 選択しないわけにはいきませんよね。 まあこれは、プラットフォーム側での判断なので、互換性判断でどうにかなるものでもないのですが、 それらも含めて互換性を常に思考しておくことが重要という事です。

3. できるだけ基本機能で開発する事を基本とする。

最も重要な開発思考として、基本機能のみで開発するというような思考があります。 例えばPHPで開発する時に、数多くの便利ネイティブ関数が存在する事で、それらを使っていた時に、PHPバージョンがアップしたタイミングで 「Discared」となって、使えなくなってしまったり、仕様が変更されてしまったりして、トラブル事がたまにあります。 そんな時に、プログラムとしての基本関数だけで構築していると、そうしたトラブルには限りなく出会う可能性は低くなるでしょう。 ・・・でも、splitがexplodeに置き換わった時は、流石にやられましたけど・・・ if文とfor文だけで作ると、もはやdiscaredされるわけがないですからね。 便利関数を使わないという不便さも感じるかもしれませんが、こうした思考はライブラリに頼り切っているエンジニアかどうかの思考テストとしても 判定に使うことが可能です。 自分で簡単な処理の関数すら作れないエンジニアも中には存在するので、会社組織でプログラミングする時の判断基準にしてみてはいかがでしょうか? 安定したシステム構築は、エンジニアの基本思考に依存すると言っても良いかもしれませんね。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。