日経ソフトウェア 2023 年 3 月号

作成日 : 2008-12-23
最終更新日 :

Python 大特集号

私がこの号を買ったのは、Python 大特集号だからではない。表紙に「将棋アプリを作ろう」という記事があり、 これが目に止まったからだ。

本誌は税込み 2140 円(本体 1945 円)とけっこうなお値段がしたので、将棋アプリだけでなく、 他の記事も読もうと思ってこのページを作ることにした。なお、サンプルファイル等は、
https://info.nikkeibp.co.jp/media/NSW/atcl/mag/011700046/
から入手できる。私は勉強のために誌面から手でコードを打っていたが、1 (数字のイチ) と l (英字のエル)が紛らわしいので注意すること。

特集 6 Python で将棋アプリを作ろう - 後編 -

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 月号


MARUYAMA Satosi