【ひすいしょう】

非推奨(デプリケーテッド) とは?

💡 「まだ使えるけど、そろそろ引退するよ」の予告状
📌 このページのポイント
機能のライフサイクル 有効 通常利用OK 非推奨 動くが移行推奨 削除 利用不可 安定稼働期間 移行猶予期間 // IDE上の表示 @deprecated oldMethod() // 推奨される対応 → newMethod() に 移行する
機能の非推奨ライフサイクル
ひよこ ひよこ

ペンギン先生、ドキュメントに「deprecated」って書いてあったんだけど、壊れてるの?

ペンギン先生 ペンギン先生

壊れてるわけじゃないよ。deprecatedは「非推奨」っていう意味で、「まだ動くけど、将来的に削除するから新しい方法に切り替えてね」っていうお知らせなんだ。

ひよこ ひよこ

まだ動くなら、そのまま使ってても大丈夫じゃない?

ペンギン先生 ペンギン先生

短期的には動くけど、次のメジャーバージョンアップで突然消えることがあるんだ。たとえばライブラリアップデートしたら、非推奨だったメソッドがなくなってて、アプリが起動しなくなった…なんてのはよくある話だよ。

ひよこ ひよこ

なんで一気に消さないで「非推奨」っていう中間の状態があるの?

ペンギン先生 ペンギン先生

いきなり消すと、使ってるプロジェクトが全部壊れちゃうからだよ。だから「次のバージョンで消しますよ」って予告して、移行期間を設けるんだ。これは破壊的変更を最小限にするための開発マナーみたいなものだね。

ひよこ ひよこ

非推奨ってどうやって気づくの?コードを見ただけじゃわからなくない?

ペンギン先生 ペンギン先生

多くの言語やフレームワークには仕組みがあるよ。Javaなら@DeprecatedアノテーションTypeScriptなら@deprecatedタグをつけると、IDEが打ち消し線で表示してくれる。コンパイル時に警告が出ることもあるし、実行時にコンソールに警告メッセージが出るケースもあるんだ。

ひよこ ひよこ

最近はAIモデルも「非推奨になった」って聞くけど、ソフトウェアと同じ意味?

ペンギン先生 ペンギン先生

基本的には同じだよ。新しいモデルが出ると旧モデルが非推奨になって、一定期間後にAPIから使えなくなる。ただAIモデルのライフサイクルは通常のソフトウェアより桁違いに速くて、数ヶ月で非推奨になることも珍しくないんだ。

ひよこ ひよこ

非推奨になったら、開発者はどう対応すればいいの?

ペンギン先生 ペンギン先生

まずリリースノートやマイグレーションガイドを読んで、代替となる新しいAPIメソッドを確認する。それから自分のコードで非推奨機能を使っている箇所を検索して、段階的に置き換えていく。CIパイプラインで非推奨警告を検出する仕組みを入れておくと、見落としを防げるよ。

ひよこ ひよこ

放置すると大変なことになるんだね…。

ペンギン先生 ペンギン先生

技術的負債の典型だよね。ベテランほど「非推奨警告を放置するな」って口を酸っぱくして言うんだ。警告が出てるうちは移行ガイドもサポートもあるけど、完全に削除されてからだと移行の手がかりすら減ってるからね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「deprecated」って出てきたら「まだ動くけど使わないで、新しい方法に切り替えてね」と思えればだいたいOK!
📖 おまけ:英語の意味
「Deprecated」 = 非推奨
💬 ラテン語のdeprecari(反対する、取り下げを願う)が由来。「もう使わないでほしい」っていうお願いのニュアンスがあるんだよ
← 用語集にもどる