私がこの号を買ったのは、Python 大特集号だからではない。表紙に「将棋アプリを作ろう」という記事があり、 これが目に止まったからだ。
本誌は税込み 2140 円(本体 1945 円)とけっこうなお値段がしたので、将棋アプリだけでなく、
他の記事も読もうと思ってこのページを作ることにした。なお、サンプルファイル等は、
https://info.nikkeibp.co.jp/media/NSW/atcl/mag/011700046/
から入手できる。私は勉強のために誌面から手でコードを打っていたが、1 (数字のイチ)
と l (英字のエル)が紛らわしいので注意すること。
081 ページのリスト 3 chat.py は簡易チャットのプログラムである。同じページの本文には、
chat.py は、同じ LAN に接続している 2 台のパソコンで実行します。
という説明がある。
IP アドレスの異なる 2 台のパソコンを LAN でつないて実行するということだ。
そうか、2 台パソコンがないといけないのかとがっかりしてしまった。
普段使っているパソコンのほかにもう一つのパソコンがあるが、そのもう一つはめったに使っていない。
使っていないほうは起動に 5 分以上かかるのだ。どうやって実行しようか、
5 分かかるパソコンを使うか、それとも1 台のパソコンでポートを違えるなど書き直そうか、
と悩んでいたら、違う解決策があることがわかった。普段使いのパソコンは Windows 11 で Windows Subsytem for Linux 2
(WSL2) を使っていて、こちらを起動するとこの WSL2 がパソコン自身の固有の IP アドレスとは違う仮想アドレスのもとで動いている。
そうか、これを使えばいい。
087 ページのリスト 4 で、 移動可能マスを描画するコードが、for vectol in range(10):
から始まっている。
この vectol はベクトルのことだろうか。ベクトルは vector と綴るので、まさか r と l を間違えたということはないだろう。
では vec と tol と分解して考えればいいのだろうか。vec はベクトルのことだが、tol は何だろう。
考えない方がいいのだろうか。意味は 083 ページの リスト 4 にある配列 vectable の要素を指すインデックスだから、
vecidx のようにするのがいいと思う。なお、range(10) の 10 もマジックナンバーのように思われるので、
for vecidx in range(len(vectable))
とするのがいいかもしれない。
まりんきょ学問所 > Python の開墾 > 日経ソフトウェア 2023 年 3 月号