電力需給の逼迫時に、オンライン発電所がオフライン発電所の代わりに出力制御を行う場合に、その対価として、オンライン発電事業者に支払われる「代理制御調整金」の制度が導入されています。しかし、現在の制度では、スマートグリッドの理念とはほど遠い、投機的開発事業者の救済制度になってしまっています。制度の見直しを求めます。

遠隔地のメガソーラーは電力不足の解消に貢献していない

代理制御調整金の対象となる発電所は、主に僻地に建設されたメガソーラーです。これらの発電所は、天候や時間帯によって発電量が大きく変動するため、電力需給のバランスを調整するために、出力制御の対象となることが多くなります。

しかし、実際には、これらの発電所は、日本の電力不足の解消にほとんど役立っていません。需要地(都市部)から遠く離れた僻地に建設されたメガソーラーは、送電網の容量を超えて発電しても、需要地に送電することができないからです。再生可能エネルギーの開発が推進された2012年頃には、安価に建設できる遠隔地へのメガソーラー建設が相次ぎ、多くの投機マネーが流入しました。

投機の失敗は自己責任

売電が行えていないメガソーラーで発生している損失は、需給バランスや広域送電能力の限界から建設時に十分予想されたものも多いのです。これは、安定供給のための買取抑制による損失とは本質的に異なるものです。

安定供給のための買取抑制は、電力需給のバランスを保つために、必要に応じてすべての発電所に対して行われるものです。ところが、現状で大規模な買取抑制が発生するケースは、本来売電できる電力が出力制御によって抑制されているわけではなく、そもそも需要地に送電できないため、損失が発生しているのです。

スマートグリッドを後退させる制度

遠隔地メガソーラーの抑制損失への穴埋めを、需給バランス内で売電してスマートグリッドに貢献している小規模発電者への売電料金のカットで賄うことは、とても不公平な制度になっています。

小規模発電者は、自宅や近隣で発電した電力を、自家消費や地域内で売電しています。これらの発電所は、送電ロスが少なく、安定供給にも貢献できます。

しかし、遠隔地メガソーラーの損失を穴埋めさせられる代理制御調整制度によって、小規模発電者の売電収入が減少しています。特に2023年の夏は大きな代理抑制が行われ、住宅ローンの返済計画が狂ってしまった方も多く居るでしょう。

さらに言えば、代理制御調整に使われているお金は、国民が電気代に乗せて支払っている再生可能エネルギー発電促進賦課金として支払っています。つまり、国民の負担によって、乱開発投機の損失が埋められているという問題があります。

結論

代理制御調整金制度は、国家の電力政策であるスマートグリッドの推進と、助成金投機ビジネスとをごちゃ混ぜにした乱暴な議論の上に成り立っており、その比率も月によっては3~4割に及ぶなど、無視できないどころか大きな割合を占めるようになり、スマートグリットやエネルギーミックスの推進を大きく後退させています。代理制御調整の対象となる発電所の選定基準を見直し、需給バランスや広域送電能力の限界を考慮する必要があります。

政府は、これらの対策を検討し、代理制御調整金制度の公平性を向上させ、電力需給の安定化を図っていく必要があるでしょう。


AIのめざましい進歩とその将来性

近年、AI技術は急速に進歩しており、さまざまな分野で活用されています。AIは、画像認識、自然言語処理、機械学習など、さまざまな技術を組み合わせることで、人間の知能を模倣するような機能を実現しています。

AIの進歩は、私たちの生活をより便利で豊かにしてくれる可能性を秘めています。例えば、AIを活用した自動運転車やロボット工学は、交通事故の削減や高齢者の介護など、さまざまな社会課題の解決に貢献する可能性があります。

しかし、AIを最大限に活用するためには、良質な一次情報が必要です。一次情報とは、直接観測や取材、実験や観測によって得られた情報であり、AIの学習や評価に不可欠なものであると共に、社会に必要不可欠なニュースや知識です。

一次情報の重要性

一次情報は、AIの学習や評価に不可欠ですが、その収益化が難しくなるという課題があります。そのため、多くの一次情報源は、広告収入に頼って運営されています。

しかし、広告収入は、ユーザーにとって必ずしも歓迎されるものではありません。広告は、ユーザーの時間を奪い、プライバシーを侵害する可能性があるからです。また、広告収入は、一次情報の価値を適切に反映していないという問題もあります。例えば、人気のある一次情報源は、広告収入が多くなる傾向がありますが、必ずしも質の高い一次情報源であるとは限りません。

さらに、今後AIによる回答の品質が向上し、AIへの質問と回答で知識を得るプロセスが完了することが一般化すれば、人々が一次情報源にアクセスする機会は大きく減ると思われます。閲覧者が直接アクセスしなくても、AIを経由して情報が提供されるとき、その情報源に適切に対価が支払われる仕組みが必要です。

一次情報に正しく還元することで、一般ユーザは無駄な広告から解放され

この課題を解決するために、私は、「情報料分配基金」の提案をします。情報料分配基金とは、ユーザーが携帯電話キャリアに支払う通信料を「情報通信料」とみなして、その一部を、一次情報源に還元する仕組みです。

この仕組みでは、ユーザーは、これまで同様、携帯電話キャリアにパケット料と共に、定額または従量制で情報料を支払います。情報料は、キャリアやプロバイダによって情報資産に変換(調達)され、従来の広告ネットワークを経由して、情報掲載者に分配されます。情報掲載者は、配分された情報資産を市場で換金し、循環します。

AIそのものの稼働にも、裏では莫大なコストがかかっていますが、現在では無料で使えています。ただし、無料で使えるのはマーケティングの一貫であったり、機能や性能が限定されたモデルであり、費用を負担することで最新の高性能AIが使えます。同じように、高品質の回答を得るために、追加の情報料を負担する必要が生じるのは、原理的には自然なことです。

この仕組みのメリットは、以下のとおりです。

  • 一次情報源の収益源が確保され、一次情報源の衰退を防ぐことができる。
  • ユーザーは、信頼できる情報を閲覧するために、わずかなコストを払うだけでよくなる。
  • 情報の価値が、適切に反映されるようになる。

情報料分配基金の参加には、実質的な追加コストはかかりません。なぜなら、ユーザーは、すでに携帯電話キャリアにパケット料と共に、定額の情報料を支払っており、この仕組みによって莫大な「広告のための通信料」が削減できます。これは、通信に伴うエネルギー資源の節約にもつながり、また、画面を占有する広告がなくなることで、画面も広く使えます。

もちろん、どうしても情報量を負担したくないユーザは、積極的に広告を観ることで、情報料をチャージすることもできるでしょう。

既存の広告ネットワークがそのまま転用できる

情報料分配基金のネットワークには、Google AdSense や Bing 広告など、既存の広告ネットワークがそのまま転用できます。Google AdSense や Bing 広告は、すでに世界中の多くの一次情報源を顧客としています。また、多くの閲覧者に広告を見せる顧客としています。

この仕組みは、既に稼働しています。それは YouTube Premium です。ユーザーが広告閲覧に代替するコストを支払うことで、広告から解放され、また、コンテンツ提供者にコンテンツ料金が還元されます。

このような背景から、情報料分配基金のネットワークは、世界規模ですぐにでも実用化できるはずです。

暗号資産技術の応用で、極めて少額の決済を極めて低いコストで行えるようになるかも

情報料分配基金では、高度に発達した暗号資産技術を活用することで、極めて少額の決済を極めて低いコストで行えるようになります。最新の暗号資産技術は、複数のレイヤーを組み合わせることでスケーラビリティやセキュリティの向上を実現しています。これらの技術を活用することで、情報料分配基金のネットワークのコストと効率を向上させることができます。

現在の暗号資産には、その価値の不安定さが目立ちますが、これらは実体経済に紐付かない投機的資産価値が乱高下しているものです。実際の情報への価値に連動した暗号資産ならば、その価値は実体の価値に基づいて決定されま、また、つねに情報提供者と情報閲覧者の間で大きな流動性があるため、市場での価値も安定します。投機マネーが流入しても、それは、世界中で発信される情報への正当な投資や投機になります。

情報の流れに価値(通貨)を乗せるには、必ずしも暗号資産の形でなければならない訳ではありません。どのような技術を使っても良いので、HTTP のなかで暗号鍵を交換するように価値のやりとりが行われるようになれば、それは Web3.0 (もしかすると Web 4.0)の本命技術になると思います。

まとめ

情報料分配基金は、AI時代における情報の流通を、より健全にする可能性を秘めた仕組みです。この仕組みが実現すれば、ユーザーは、信頼できる情報を閲覧するために、現在に比べて実質的に追加の出費を伴うことなく、一次情報源は、安定した収益源を確保することができます。

今後、情報料分配基金の具体的な実現に向けた議論が進んでいくことを期待します。


24fps のコンテンツを 4X 中間フレーム生成で 96fps にしたあと、生成したフレームだけを間引いて 60fps にするオプションのメモ。間引くフレームは線形に選択せず、キーフレーム周辺に少し寄せてある。かなり力業なので、もっとコンパクトに書けるなら教えてほしい

ffmpeg -i input.mp4 -vf "select='eq(mod(n\,24)\,0)+eq(mod(n\,24)\,1)+eq(mod(n\,24)\,3)+eq(mod(n\,24)\,5)+eq(mod(n\,24)\,7)+eq(mod(n\,24)\,8)+eq(mod(n\,24)\,9)+eq(mod(n\,24)\,11)+eq(mod(n\,24)\,13)+eq(mod(n\,24)\,15)+eq(mod(n\,24)\,16)+eq(mod(n\,24)\,17)+eq(mod(n\,24)\,19)+eq(mod(n\,24)\,21)+eq(mod(n\,24)\,23)',setpts=N/60/TB" -r 60000/1001 output.mp4

大きな話題となっているChatGPTや検索翻訳AIは、日本語の将来に大きな影響を与えます。今は、ChatGPTがつくる近未来に日本語が存在するか否かの重要な分岐点にあります。

CahtGPTは、OpenAI社が提供するチャットAIで、質問や指示などをテキストで入力すると、自然な会話の形で回答するシステムです。ChatGPTや、それをベースにしたMicrosoft Bing(検索AI)には、内部構造に言語を設定する項目がありません。日本語で会話を始めると日本語で応答しますし、また、日本語で質問して、フランス語の資料を検索し、ドイツ語で答えさせることもできます。

翻訳AIは、DeepL Translatorなどのサービスで、ウェブページや文章を日本語から他言語に、または他言語から日本語に翻訳できるシステムです。

望む望まざるに関係なく、ChatGPTで文章を書く時代がすぐそこまで来ています。いろんなソフトウェアのコミットログやフォーラムでの議論から、次のリリースでの大きな変更を検出して、リリースノートの下書きを書いてくれるようになります。それらのソフトウェアを集めたディストリビューションにおいても、新しいリリースの収録ソフトウェアのバージョンから、そのバージョンのリリースノートを参照して、自動的にディストリビューションのリリースノートの下書きを書いてくれるようになります。

ChatGPTのような大規模言語AIモデルは多くの側面において大発明です。そして、「文章を理解できる検索AI」としての側面は、ハイパーリンク2.0と言える大転換だと思います。URLを用いたタグで、文章から文章へとひとつひとつ繋がっていたハイパーリンクは画期的な発明でした。今後は、大まかな繋がりを元に、個別の繋がりは検索AIが繋げてくれるようになります。

そして、その検索AIは、こうしたリリースノートを元に、ソフトウェアのドキュメントも改定の下書きも担うようになります。

こうしたとき、とりわけ重要になってくるのが日本語翻訳のユーザーグループの貢献だと思います。というのは、日本語のドキュメントが改訂される方向は二つありうるからです。

– 英語のリリースノートから日本語のリリースノートを生成し、そこから日本語のドキュメントを改訂する
– 英語のリリースノートから英語のドキュメントを改定し、それを翻訳して日本語のドキュメントを改定する

この2つの方法で改訂される2つの日本語のドキュメントは、理想的には同じになるはずです。こうした比較が可能なものは、AIが自分で切磋琢磨して、どんどん賢くなります。将棋のAIが繰り返しAI同士で対戦して強くなった歴史を辿ります。

チャットGPTのような大規模モデルでは、さまざまな言語を同一の学習で同一のパラメーターでカバーします。しかしながら、もちろん世界の全ての言語をカバーするわけではありません。大規模言語モデルの中に日本語のウエイトがどれだけあるかによって、今後、CHatGPTがつくる世界の中で日本語が標準的に使われる言語になるか、それとも進化から切り離された辺境言語になるかの、重大な分岐点にあると思っています。

こうした研究の最前線に日本語話者が加わることも極めて重要ですし、メンテナンスされた日本語のドキュメントがAIの学習用のデータとして存在するということも極めて重要になってきます。

日本語ドキュメントの整備に携わる能力のある方は、自分では英語のドキュメントがあれば十分な方ばかりです。それでも、ほかの日本語話者のために膨大な労力を割いて日本語ドキュメントのメンテナンスをして下さっています。こうした作業が今後ある程度自動化され、持続可能になるために、いま、日本語ユーザグループの活動が、今まで以上に重要になっていると思います。

2050年頃、日本語のドキュメントはAIを中心として維持管理されているか、それとも、誰もメンテナンスしなくなって、英語からの翻訳を読んでいるか、表面的には同じような未来かも知れませんが、私は、この2つは大きく異なる別の未来だと思います。そして、今がその分岐点なのです。


Pythonでできる!株価データ分析 – 森北出版

「Pythonでできる! 株価データ分析」という本を読んだので、ここでレビューする。私自身、Pythonと株価データ解析については初歩的な知識を持っていたため、この本は私にとってはサクサクと読み進めることができた。ただ、未経験者向けのPythonの入門書ではなく、Pythonの基本的な知識は省かれているため、Pythonが初めての方には入りにくいかもしれない。プログラミングが初めてという方は、不厚くない入門書か入門サイトを読んだ方が良いかもしれないが、Pythonは公式サイトが充実しているので、別の言語の経験があれば、公式サイトを都度引きながら本書を読み進めることもできると思う。

本書は、特に、株価データ解析に関するテクニカル指標やグラフの描画方法などをわかりやすく解説している。実際に株価データを使って解析するプログラムのサンプルコードも豊富に掲載されているため、自分でコードを書いて実践的な学びができる。株価の読み解き方は基礎から紹介してあるため、株価のテクニカル分析についての知識がなくても、本書で学びながら読み進めることができる。また、株価に関する知識が豊富な方にとっても、テクニカル分析の用語の厳密な意味や定義を、コンピュータが理解できるプログラミングコードで書くことができるようになり、より高度なデータ解析にも応用できる内容となっている。逆に、Pythonができてデータ解析を学びたい人にもオススメできる。

総じて、Pythonと株価データ解析に興味がある方には、初歩的な知識があれば理解できる内容であり、高度なデータ解析を目指す方にも応用できる本だと思う。

この本は「Pythonで株価データ解析をするための実践的な手法」というテーマで書かれた本で、株価のテクニカル解析についても詳しく解説されている。そのため、プログラミング初心者でも株式投資初心者でも、両方の分野に興味がある方には特に役立つ内容になっている。株式投資の基本を学び、Pythonを使って株価データを収集して、分析して、可視化するまでの手順が紹介されている。特に、株価のテクニカル指標をPythonで計算する方法については、かなり詳しく説明されているので、株式投資初心者でも理解しやすい。

本書では、プログラミングをGoogle Colaboratory上で実行している。Google Colaboratoryを使うことで、プログラミングの初心者でも簡単に始めることができ、同時に最新のサービスを学ぶことができる。Google Colaboratoryを使用すると、ブラウザ上で簡単にPythonを動かすことができる。その上、Colaboratoryの実行環境では、GPUを用いた高速演算を行う事もできる。これが無料で使えるのはとてもお得だ。

本書では「売買シミュレーション」までしか紹介されていないが、GPUを用いた高速演算の話が出たので脱線させて貰うと、この書籍で紹介されているテクニカル分析と売買シミュレーションの延長線上には、アルゴリズム自動売買が念頭にあるように思う。特に、Pythonは、最近注目されているAI(深層学習)技術との相性が抜群に良い。私の理解では、AI技術単独では、テクニカル分析から株価の予想を行うよりも、多くの指標と組み合わせることによりファンダメンタルズ分析を可能にし、複雑な戦略を学習から導く手法だと思う。脱線が続くが、私が考える自動売買の利点には、次の3つがある。

1番目に、自動売買による戦略のパフォーマンスは、過去のデータを使ってシミュレーションで評価できる。この方法により、将来的に実際に取引を行った場合のリスクやリターンを予測することができる。また、過去のデータを使ってシミュレーションを行うため、人間の感情や誤った判断によるトレードのミスを避けることができる。

2番目については、自動売買システムはプログラムに従って取引を行うため、人間の感情的な判断やトレードのミスを回避することができる。また、プログラムが失敗した場合にも、その原因を特定し改善することで、自分の戦略を系統的に強化し続ける事ができる。

3番目については、含み益を得ることよりも含み益を確定することが難しいという問題に対して、自動売買システムは機械的に売買判断を行うため、含み益を確定するタイミングを逃さない。

これらの利点は、もちろん本書で紹介されている「アルゴリズム売買のシミュレーション」にも共通する。そして、このような利点があるため、自動売買は現在、投資家やトレーダーの間で広く使用されている。

言うまでもなく、自動売買にはリスクがあることを理解し、慎重に取り組む必要があるが、適切な戦略を構築し、細心の注意を払いながらプログラムを作成することで、自動売買によって利益を生むことも可能である。プログラミングには熟練が必要だが、実践を重ねながら学習することで、自分にとって最適な戦略を見つけ、自動売買によって損失を避け、利益を生み出すことができるようになるだろう。

本書では、AIや自動売買については紹介されていないが、自動売買に繋がる基本的な知識や技術を紹介しており、自動売買に興味のある方にとっても、導入として役立つ情報が詰まっている。


この本は技術サイトに連載されていた記事を書籍化したようだ。そのおかげで、各章節ごとに話が完結していて、小さな目標を達成しながら読み進められるようになっている。コードも詳細に解説されており、初心者でも理解しやすいようになっている。

最終的には、ローソク足と5日・25日平均線のグラフを自分で描くことができるようになる。また、pythonには多くのライブラリがあり、それらを使うことで、本書で紹介されている手法より高度な分析を行うことも可能だ。

本書で紹介されているフレームワークやライブラリは、現在のPythonの主要ライブラリであるため、実践的にまとめて習得することは非常に有益だ。NumPyは数値計算用のライブラリであり、高速な行列演算などの数値計算を行うことができる。Pandasはデータ分析用のライブラリ(フレームワーク)であり、データの読み込み、整形、集計などを簡単に行うことができる。TA-LIBは、ローソク足を含むさまざまな種類のグラフをブラウザ上で描画することができるライブラリである。このTA-LIBは王道とは少し外れたライブラリかも知れないが、株価データのプロットにはとても便利だ。このほかに、データの可視化に便利なライブラリとしてMatplotlibなどがある。これらのライブラリを組み合わせることで、かなり強力な株価データ分析や機械売買戦略を組むためのグラフを自在に描画することができる。この延長線上にあるのはPyTorchやTensorflowといった深層学習ライブラリであろう。これらとの組み合わせには、より高度なスキルが必要になるため、本書で基礎を学んでから、挑戦してみることをおすすめする。

TA-LIBで可視化したNTTの株価推移と平均移動線

この図を描くためのPythonコードはGitHubで公開しておく。


本書ではGoogle Colaboratoryを利用することで、Windowsでも簡単にpythonの開発環境を構築することができた。Google Colaboratoryはクラウド上のPython実行環境で、ブラウザ上でPythonコードを実行できるため、自分のパソコンにPythonをインストールする必要がない。Google Colaboratoryを使うためにはGoogleアカウントが必要だが、無料で利用できる。

もちろん、このGoogle Colaboratory も大変便利なのだが、より本格的にプログラミングを学習していくには、手元のパソコン上にプログラミングに特化した環境を整えた方が良いかもしれない。Visual Studio Code (以下、VSCode)は、マイクロソフトが開発した、オープンソースかつ高機能なコードエディタである。VSCodeは、シンタックスハイライトや自動補完・デバッグ支援など、プログラミングを効率よく行うための基本的な機能を備えているだけでなく、拡張機能を導入することで、様々な言語に対応した高機能プログラミング環境として使うことができる。

また、VSCodeはリアルタイムにプレビューを確認できるLive Serverという拡張機能があるため、HTMLやCSSを書く際にも非常に便利である。こうした技術と組み合わせることで、グラフや文字などを高度に組み合わせたり、あるいは、独自のアプリを構築することも可能になる。これも本書の範囲外だが、本書で紹介したTA-LIBは、こうした応用にも便利なようだ。

さらに、VSCodeはGitやGitHubとの連携も非常に簡単にできるため、バージョン管理やチーム開発にも向いている。これらの機能は、パソコンでのプログラミングにおいては必須であるため、VSCodeを利用することでより便利に、効率的にプログラミングを行うことができる。

もちろん、初めての人にとっては、VSCodeの使い方を覚えるまで少し手間がかかるかもしれない。ここに時間を掛けるぐらいなら、本書で紹介されているGoogle Colaboratoryをブラウザから利用して今日からプログラミングを始める方が良いだろう。しかし、VSCodeは使い方を覚えることで、長期的なプログラミング学習や開発において非常に大きな利益をもたらすと思う。私も長年emacsという伝統のエディタ(環境)を愛用してきたが、最近はすっかりVSCodeの便利さに浸ってしまった。このVSCodeからGoogle Colaboratoryを使うこともできるし、パソコン上に(ローカルに)開発環境を構築することも可能だ。ただ、Windows での TA-Lib 導入は若干面倒だ。このサイトから Python のバージョンを調べて、該当する whl ファイルをダウンロードし、pip install でダウンロードしたファイルをインストールする。ただし、最新の Python 用のパッケージは出ていないかもしれない。

このような理由で、Pythonのバージョンをこまめに調整したいことは多い。Pythonのバージョン管理を行うのに便利な pyenv だが、Windowsで利用するには多少面倒だ。

GitHub から pyenv-win をダウンロードしインストールするには、以下のコマンドを PowerShell で実行する。

Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

このコマンドが about_Execution_Policies の制約で実行出来ない場合、一時的にポリシーを緩和する必要がある。上のコマンドの前に

Set-ExecutionPolicy RemoteSigned -Scope Process

を実行すると良い。もちろん、ご利用は自己責任で。

Pythonでできる!株価データ分析 – 森北出版

日頃より栄諧情報システムをご愛顧いただき、ありがとうございます。

このたび、サポーターログインを行っても、コンテンツが閲覧できないという不具合が報告されました。

同様にログインできない(ログインしてもコンテンツが表示されない)という方は、お手数ですが連絡ください。



SteamでPCゲームを楽しむとき、ゲーム機のコントローラを使いたい!

PlayStation3のコントローラDualshock3をPCで使いたい時、ドライバを導入しなければなりません。

検索すると、PlayStationNowをインストールすればドライバがインストールされるという情報が出てきますが、2022年2月現在、Dualshock3のドライバがインストールされません。これは、現行のPlayStationNowは Dualshock3 をサポートしなくなったので、ドライバの同梱も無くなった、という事みたいです。Dualshock3 のドライバを含む古いバージョンを探すと、こちらに Version 11.2.2 (Archive.org) がありました。

ご利用は自己責任で。でも、古いデバイスも簡単に切り捨てないで欲しいとは思います。


なんだかんだあるけど、眞子様には幸せになって欲しい(不幸になっても誰も得しない)ので、小室さんにはなんとか成功して欲しい。

100点満点でなくても60点の人生で良い。二人が納得すれば良い。

一時金は受け取って良い。ここぞと言うときに使って欲しい。それでも苦しいときに、妹弟に相談できる良好なご関係でありますように。

小室母子の縁を切ってでも、世間を敵に回してでも、お二人で乗り越えて欲しい。


独習PHP 第4版

twitterで散々呟いているとおり、私はphpが大好きだ。Webだけでなく、CLIスクリプトとしても大いに使っている。

phpは、pythonと同じぐらい好き嫌いが分かれる言語ではないかと思う。まず、その普及率の高さ、そして、良くも悪くも「C言語とシェルスクリプトといった、多くの人が知っている知ってる構文で書ける」タイプのインタプリタだからだ(こう言いきってしまうと各所よりマサカリが飛んできそうだが)。誰でも簡単に書けるが故に、私のようなにわかプログラマーがクソコードを量産したせいで、少なくないプログラマーから敬遠される言語の一つになってしまったが、これはphpが悪いのではなく私たちクソプログラマーのせいである。(一方、pythonは、逆の意味で好みが分かれそうだ。)

そんなことはさておき、本書を語る上で最も象徴的だった部分を紹介する。なお、このレビューを読んでいるという事は、phpを多少なりとも(たとえば、バーション 5.4あたりで)使ったことがあると思う。以下のコードを見て欲しい。

$bool = ( ‘X’ == 0 ); // true or false?

この条件式はどうなるだろうか。実はこの「==」演算子の挙動は、php7.4で変更されている。

php7.4やphp8で追加されたり変更されたりした箇所は多く、こうしたエッセンシャルな部分にも及んでいる(このあたりが第4版での主たる加筆分のようだ)。本書は、こうした「最新のphp」を、入門書よりも深く学べるように書いてある。

phpは公式リファレンスが充実しており、また、構文も非常にわかりやすい(と思う)ので、このような本は必要無いと思う方も多いかもしれない。実を言うと、私もこの本を手にするまで、自分のphpの知識では、この本から学ぶことはそう多くはないのではないかと高をくくっていた。本書を手に取ってパラパラとめくった感じでは、その予感は的中したかに思われた。しかし、一から読んでいくうちに、その認識は変わっていった。php7.4やphp8で、結構、知らない拡張や変更が多く成されていたのだ。

phpはハードルが低い反面、なかなか綺麗なコードが書きにくいという裏の面もあるため、本書が紹介する「最新のphp」を学び直し、よりコンパクトで安全なコーディングができるようになると素晴らしい。特にphp8はJITを搭載して実行速度が一段と速くなっており、最新のphpを知る事で「速い・短い・わかりやすい」プログラムが書けるようになる。


もちろん、プログラムは、コンパクトに書けば良いというものではなく、これは本書でも「こうも書けるがオススメはしない」という紹介の仕方もされている。人によっては二項演算子の使用すら拒む人も居るので、どこまでコンパクトに書けば分かりやすいかはその時々で変わるが、私は標準的な記法内であればコンパクトな書き方が好みである。ただ、このあたりは参加するプロジェクトによっても基準が異なるため、実践では色々な書き方を熟知しておけば、どんなプロジェクトに参加しても困らないようになる。

「phpを書ける」から「phpを仕事に使える」までステップアップされてくれるのが、この「独習php 第4版」だ。本書の導入部分にはモダンな環境構築にページが割かれており、標準クラスライブラリでは、豊富なライブラリをきちんと管理する方法も紹介されている。また、データベース連携の章ではMySQL(MariaDB)の基本的な知識を、RESTクエリの章ではHTTP通信の基本的な知識を紹介するなど、入門書よりはより実務レベルの知識を教えてくれる。もちろんこれだけで幅広いphpの周辺技術を理解することはできないが、phpから使う上で必要な仕組みは理解できるレベルで書かれている。より深く学びたい場合は、本書で得た知識をとっかかりに専門書を揃えたら良い。

「オブジェクト指向」の章では「phpは必ずしもオブジェクト指向で書かなくても良い」としながら、多くのページを割いて説明しており、これも実務レベルで非常に役に立つ知識であった。phpのクラスはC++のそれと似通った構造をしているが、phpならではの部分を詳細に紹介してあるので、他の言語でclassの使い方を覚えて、phpでもなんとなくでclassを使えてる人には、特に得るものが大きい。

他方、各章のおわりに「練習問題」があるのだが、資格試験の勉強ならまだしも、実務レベルを目指す本書にはややそぐわない印象を受けた。もちろん邪魔になるわけではないので、好みに合う人は確認がてら解いてみるのも良いかもしれない。私は、この本は入門書ではないので、一度読んだ後、自分なりに実務レベルを想定したコードを書きながら、リファレンスとして必要な箇所を読み返す使い方のほうが、より強力なバイブルとなる。


総じて、本書は650ページ近くあり、かなり分量が多い。しかし、読みやすくわかりやすい文章で、意外とさらさらと読める。ところが、サンプルコードから学べることも多く、サンプルコードもしっかり読み解きながらとなると、それなりにまとまった時間が必要だ。冒頭に挙げたようにphpはクソコードでも動いてしまう柔軟性があるため、綺麗なコードをじっくり見ることも実務レベルにステップアップするためには重要だ。命名や記法など、本書のサンプルコードは公式規約に則って書かれているため、これを真似て自分のコードバリエーションの幅を広くし、現場で活躍する基礎知識として欲しい。本書は、それを「独習」できる良書だ。

独習PHP 第4版