2022年1月2日日曜日

頻繁なアップデートの功罪

今年から「AI・データサイエンス:ツール科目II」という科目を担当している.題材は「RubyとRuby on Rails」である.なぜデータサイエンスのツール科目でRailsなのかというと,データ取得のプラットフォームとしてWebアプリを作れるようになろう,その具体的な例としてRails入門を,という立て付けである.

ところで,暮れに某SIerの方と話をしていて,「うちではRailsは使いませんねー」という話題になった.なぜですか?と問うと「バージョンアップで仕様がコロコロと変わるので,危なっかしくて使えない」と仰る.

かと思うと,先日のRuby World Conference 2021では,Railsバージョン3で稼働していたシステムを,Railsバージョン6に,一気にバージョンアップした話題を提供されていた方がいらっしゃった.まあ,バージョン7が出ようかという時代にバージョン3固定で使い続けていたということからも,安定稼働させるためにバージョンを固定せざるをえなかった台所事情も透けてみえる.

頻繁なバージョンアップが引き起こす問題

Railsはよくできたフレームワークだと私も思うし,使いやすく,慣れるととても便利なので,その点では学生にもオススメしたいソフトウェアである.新しい技術をどんどんと取り入れていこうという志はよい.しかし,ころころ仕様が変わって技術がすぐに陳腐化してしまうのは,こちらとしては都合があまりよろしくない.せっかく作った講義用ビデオと講義資料を,毎年,作り直さねばならないからだ.かといって,バージョンを固定して古い情報を教えるというのも「違うよなあ」という気がする.

Webアプリ界隈は,バックワードコンパチビリティよりも最新情報を優先する文化があるのだろうか.昨年4月に技術評論社から出版した「最短距離でしっかり身に付く! Webアプリケーション開発の教科書」も,Bootstrapのバージョンが4から5に上がったせいで,内容と実情に齟齬が出るようになってしまった.これはタイミングが悪かった.出版の前後ですぐに問題が顕在化してしまったからだ.出版社からも正誤表を出し,補足情報を出したが,どうにも分が悪い.

最近も,学生から「講義動画のとおり作業しているのに,どうしてもエラーになります」と苦情を受けた.しかし,こちらの環境ではきちんと動作する.一つ一つ,手順を追って確かめてみよう,と検証していたら,どうも彼の環境ではRails 7.0.0が導入されている点だけが私の確認している環境違うということが判明した.

結論はどうだったかというと,Rails 7.0.0でdeviseというgem(ライブラリ)が正しく動かなくなったということによる問題だった.deviseはひろく使われているgemなので,いずれきちんと対応してもらえると期待はしているが,当面は Rails 6で作業せよと指示するか,deviseを使わないようにするしかない.

一方,Cは……

対して,Cはいわゆる「枯れた」プログラミング言語である.もちろんCも,C99 → C11 → C17 → C2xと進化し続けてはいる.しかし,バージョンアップしたら動かなくなった,ということはあまり聞かない.

たまたまだが,自著(Cの解説本)を誉めてくださっている記事を見つけた.昨年暮れのアドベントカレンダーで書かれたものである.10年も前の本なので,内容もずいぶん陳腐化してしまったかと思いきや,そうでもないらしい.プログラミングなんてお手軽にできたほうがよいのでCに拘るべきではないのは当然だが,PythonやRubyのライブラリだって中身はCで書かれてるものがあったりするんだぞ?いまだ存在感が失われていないのはすごいことではないのか.

スクリプト言語「しか」知らないのはいささか危険で,プロになるなら,下のレイヤからしっかりと勉強してほしいなというところ.頻繁なアップデートにもメリットとデメリットがあり,ソフトウェア工学ではそのあたりの議論も古くから行われている.そのへんもしっかりと勉強していただきたいものだ,などと,新年早々,余計なことを考えた.

0 件のコメント:

コメントを投稿