IT系ニュース(2024年11月)
この記事では「データサイエンス系」や「プログラミング系」などの分野について、最近のニュースや気になったことなどをご紹介します。
ベルーフでは就労移行支援事業として、IT系分野の基本的なスキルが身に付く研修を提供しています。他にもビジネス系、セルフコントロール系の研修も体系的に提供しております。研修方針などをご紹介していますのでぜひご覧ください。
データサイエンス系の話題
生成系AIとAIが社会に与える影響について、2つの話題をご紹介します。
SearchGPT
少し前の話題になりますが、2024年7月にOpenAI社から「SearchGPT」が発表されました。名前の通り、検索AIのサービスです。
検索系のAIはそれほど新しいものではなく、Perplexityや、最近ではGoogleで検索をすると先頭にAIの要約結果が表示されるようになりました。
でも今回のSearchGPTの登場により、Google検索が不要、と言われ始めています。
SearchGPTが「ググる」常識を変えるかもしれない(東洋経済オンライン)
私はプライベートでも仕事でも、最近はPerplexityで検索する癖がついてしまっています。
従来のGoogle検索のように、キーワードを入れて、必要な情報が書かれているページを上から探して、そのページから欲しい情報を取り出す、という作業は意外に大変ですよね。また、キーワードが不適切な場合はそもそも良い結果が表示されません。
その点、Perpelxityなどのような検索AIは、今まで人がやっていた作業を代行してくれますのでとても便利です。
今回のSearchGPTは、Google検索は当然ながら、Perplexityなど既存の検索AIにも脅威になっているようです。
というのは、OpenAI社は今年6月に「Rockset」という会社を買収しています。Rockset社は、リアルタイムのデータベース解析技術を持っているとのことで、検索AIのキーになる技術と見られているようです。
Rockset社の技術により、ウェブデータのクローリングを行うときに、リアルタイムでインデックスできる、つまり最新情報をリアルタイムでSearchGPTの知識に落とし込むことができるようです。
OpenAI社はGPTの技術をベースにこのような技術を組み合わせることにより、他社より一歩リードするのではないかと感じてしまいます。
あと1〜2年、あるいはもっと早くかもしれませんが、ネット検索の環境はかなり変わってくるかもしれませんね。
ただ、ここまで面倒を見てくれるようになると、人間の脳はどんどん退化しそうな気もします。
脳トレが必須という気もしますが、その脳トレもAIに頼るようになるんでしょうかね。
AIに奪われる職業
現在の職業はAIに奪われる、と言われ始めて久しいです。
今までの職業の多くがAIに置き換えられてしまう、という意見が一般的になりつつありますが、一方で最近、米MITの経済学者の方が「AIに奪われる職、あるいは少なくともAIに大いに依存する職は向こう10年で5%に過ぎない」と話していたニュースがありました。
AIに奪われる職はわずか5%(Bloomberg)
このニュースによると、「大規模言語モデルには、多くの点で感心させられる。だから多くの職業でAIが人に取って代わるという疑問が浮上するが、信頼性の問題と、人間レベルの英知もしくは判断力の欠如があることを指摘し、ホワイトカラー職をAIに奪われる可能性は低い」と論じられています。
私はAIについて何か見解を出すような立ち位置ではありませんが、個人的に生成系AIを使用していると、やはり限界を感じてしまいます。生成系AIを使うと生産性は爆上りしますが、最後の仕上げはやはり自分の知見が必要なことがとても多いです。完全にAIに置き換えるのは無理なのでは‥と感じてしまいます。
上の記事にある「5%」は比喩だと思いますが、実際にはAIに「完全に」置き換えられる職業はかなり限定されるのではないかと思いました。
同氏は「AIはまた、建設や清掃作業などの肉体労働を自動化することもできないだろう」と述べていますが、最近の人型ロボットの性能はかなり向上しているので、状況によっては肉体労働は置き換えられてしまうのではないかとも思っています。
皆さんも、ご自身の進みたい方向がAIによってどのような影響があるのか、いろいろ想像してみてください。
プログラミング系の話題
プログラミング系の話題を2つご紹介します。
Python 3.13
2024年10月7日に、Python Version 3.13がリリースされましたね。
主な変更点は次のような内容です。
Python 3.13の主な変更点
- インタープリタの改良
- ジャストインタイムコンパイラの試験的なサポート
- グローバルインタープリタロック(GIL)の廃止
最初の2項目はいずれも使い勝手やパフォーマンスの改善といった内容ですが、最後の「GILの廃止」については影響がかなり大きく、いろいろな懸念が指摘されています。
GILとは?
GIL(Global Interpreter Lock)とは、Pythonインタープリタで使用される同期メカニズムです。GILは、一度に1つのスレッドのみがPythonバイトコードを実行されるように制御します。これにより、メモリ管理やスレッドの安全性が確保されます。GILにより、シングルスレッドのパフォーマンス向上やC言語ライブラリとの統合が容易になっています。
一方で、マルチコアプロセッサ上でもPythonプログラムの並列処理が制限され、CPU集約型のマルチスレッドプログラムのパフォーマンスが低下することもあります。
GILの廃止は、Pythonの並列処理能力を大幅に向上させる可能性がありますが、既存のC拡張機能との互換性維持が課題となっています。
GILの廃止については影響が大きいため、Python 3.13では標準的なPython 3.13とは別に、「Python 3.13t」というバージョンに実装されています。(さらにこのバージョンでは実行時の引数を指定するとGILが無効になるようです)
このようにGIL廃止の影響は大きいため、是非を問う記事が多くありますが、特に以下に詳しい記事がありましたので参考にご紹介します。
PythonからGILを取り除く是非【前編】(ITmedia / TechTarget)
PythonからGILを取り除く是非【後編】(ITmedia / TechTarget)
一方でGIL廃止によりマルチコアマルチスレッドのプログラムのパフォーマンスはどの程度向上するか、という検証の記事もありますので、こちらもご紹介します。
GIL廃止は特に既存ライブラリなどに影響が大きいので、しばらくは標準ビルドとは別にリリースされると思いますが、いずれ標準リリースでもGIL廃止になるんでしょうかね。そうなると例えばデータサイエンスなどの画像処理など、並列処理に適しているプログラのパフォーマンスが向上するかもしれませんね。
Zig
「Zig」というプログラミング言語を聞いたことはあるでしょうか?
C/C++の後継言語は過去にもいくつかありましたが、ZigもC/C++を意識しているようです。
公式ページにも特徴などか書かれていますが、結局C/C++と比較してどのような点が優れているのか、AIに聞いてみましたので共有します。
Zigの特徴
- シンプルな文法
ZigはC言語の良い部分を引き継ぎつつ、より一貫性のある直感的な文法を持っています。 - コンパイル時の安全性
Rustと同様に、多くのエラーをコンパイル時に検出します。しかし、RustのようなLifetime systemは採用せず、より理解しやすい方法で安全性を確保しています。 - 優れたC言語との相互運用性
CのABIと完全に互換性があり、既存のCライブラリを容易に利用できます。 - マルチプラットフォーム対応
多くのプラットフォームやアーキテクチャに対応しており、クロスコンパイルが容易です。 - ビルドシステムの統合
言語自体に優れたビルドシステムが組み込まれており、別途ビルドツールを用意する必要がありません。 - メモリ管理の柔軟性
手動メモリ管理とコンパイラ支援のメモリ管理の両方をサポートしています。 - コンパイル時計算
多くの処理をコンパイル時に行うことができ、実行時のパフォーマンスを向上させます。
このようにモダンな言語設計を導入しているので、C/C++の後継となる可能性も十分に秘めている印象があります。
Zigについては次のような記事もありました。
C、C++でもRustでもなく「Zig」に期待できるのはなぜか(ITmedia / TechTarget)
シンプルで現代的なZig言語、RustやC++が複雑すぎると嘆く人の福音となるか(マイナビニュース)
ところで、C/C++はハードウェアレイヤに近いレベルの制御を得意としますが、Zigのようにモダンな仕様を導入すると、そのような制御はできるのか、ちょっと疑問があります。そこで「Zigはシステムレベルのプログラミングは問題ないのか?」をAIに聞いてみました。
Zigの低レベルプログラミング特徴
- 直接的なメモリ操作
Zigでは、CやC++と同様に、ポインタを使用して直接メモリを操作できます。これにより、ハードウェアレベルでの細かい制御が可能です。 - インラインアセンブリ
Zigは、インラインアセンブリをサポートしています。これにより、必要に応じて特定のCPU命令を直接使用できます。 - ゼロコスト抽象化
Zigは、高レベルの抽象化を提供しつつも、それらが実行時のオーバーヘッドを引き起こさないよう設計されています。 - サイズ制御
構造体のパディングやアラインメントを細かく制御できるため、メモリレイアウトを最適化できます。 - ビットレベル操作
ビット演算子や固定幅整数型を提供し、ビットレベルでの操作が容易です。 - volatile修飾子
メモリマップドI/Oなどのハードウェア操作に必要なvolatile修飾子をサポートしています。 - コンパイラ最適化の制御
必要に応じて、特定のコードブロックに対するコンパイラ最適化を制御できます。 - 条件付きコンパイル
異なるターゲットプラットフォームに応じたコードの条件付きコンパイルが可能です。
ということで、Zigは組み込みシステム・OS・デバイスドライバ開発など、従来CやC++が使用されてきた領域でも十分に活用できそうな気がします。
いよいよC/C++の後継の本命登場なのでしょうか?