Blenderに搭載されているPythonにpipを導入しよう(Windows10, ポータブル版)

こんにちは、鉄火巻です。

最近Blenderを触っているんですが、外部のモジュールをどうしても使いたいのでpipを導入しようと思います。といっても、参考サイトとやってることは同じだし、特に変なことはしていません。

手順

以下をcmdで実行しましょう。管理者権限はあった方がいいんじゃないかな? Blender2.8を使用しているため、ディレクトリはProgramfileではありません。いわゆるポータブル版です。 インストーラーを使ってインストールすればProgramfileのどこかに同じようなフォルダがあるでしょう。

 "O:\files\blender-2.80.0-git.99d4321feff6-windows64\2.80\python\bin\python.exe" -m ensurepip

すると以下のようにpipとsetuptoolsがインストールされます。ただし古いバージョンです。

C:\WINDOWS\system32>"O:\files\blender-2.80.0-git.99d4321feff6-windows64\2.80\python\bin\python.exe" -m pip list
Package Version
---------- -------
pip 10.0.1
setuptools 39.0.1

ですので、以下のようにそれぞれアップデートしてあげましょう。これも特に変わったことではありません。

 "O:\files\blender-2.80.0-git.99d4321feff6-windows64\2.80\python\bin\python.exe" -m pip install --upgrade setuptools pip

これで最低限pipはインストールできました。pythonから環境を移行するときは以下のように主環境でrequests.txtを生成してやればよいでしょう。

この辺のモジュール(https://qiita.com/haminiku/items/5187713bba6cb30532bf)を入れておくと便利でしょう。

注意) –userのオプションが必要

pipの触り方は以上のように、Blender内のpythonを直接たたけばよいのですが、以下のようにモジュールをインストールすると、Blenderからimportする時にエラーを吐きます。

".../python.exe" -m pip install [module name]

調べたところ、インストールには–userのオプションが必要です。面倒ですが、毎回、以下のようにインストールしましょう。

 ".../python.exe" -m pip install [module name] --user

参考

https://www.kunihikokaneko.com/dblab/cg/bpypip.html

https://blenderartists.org/t/how-to-install-python-packages-with-pip-blender-2-8/1142721/3

余談

当たり前ですけど、以下からpythonのバージョンは確認可能です。

 "O:\files\blender-2.80.0-git.99d4321feff6-windows64\2.80\python\bin\python.exe" -V

多分ですけど、主環境と同じpythonが入るみたいですね(ポータブルだからかな?)。僕の環境では3.7.0って返ってきました。


以上です。pipがあれば開発が捗りますね。 必要なモジュールが入れば開発の幅は一気に広がりますね。

それでは、鉄火巻でした。

関連記事

最近の投稿など。

やあ、鉄火巻だ。

ブログも長らく放置していたね。更新がなかったけど色々はやってたんだ。


実況動画投稿

まず、エアライドの動画をアップロードしました。大した動画ではないけどね。
動画にも書いているけど、一応、シティトライアルの速度が「普通」の設定でランキングに入るくらいのスコアは出てるんだ。

ランキング的には13位?でも普通部門が出来た上、参加者が少ないので、まだランカーとは言えないんだ。だから自称ランカーって書いたんだ。

一緒にプレイしたみりん君は昔からの中ですが、基本的に据え置き機はプレイしていないそうです。なので、完全に初心者です。確かに、エアライドのマシン操作って割と面倒だよね。僕もライトスター以外制御できないし。まあ、今後上手くなっていくといいな、と。

これはitch.ioで遊べるブラウザゲーです。確か、ダウンロードして遊ぶこともできたような?

YouTube側では結構前に投稿してたんだけど、これは「Pogostuck」っていう超高難易度の壺おじ系ゲームが某所で有名になったので、一応ニコニコにもアプロードしよう、ってことになったんだね。まあ、自己満足さ。

PUBG

実は大半の時間はPUBGに使ってたんだ。といっても、1日平均1.5時間くらいだね。まあ、ゲームのプレイ時間としては平均的だね。

そもそも初のTPS/FPSみたいなもんだったので、かなり弱いのです。なんせ、ドン勝もスクアッドで6回、ソロはまだだしね。まあ、ぼちぼちやっていくよ。

他のメンバーはPUBGをプレイできる環境でないので、動画は上がらんでしょう?多分ね。

開発など

この辺はじわじわ進んでいます。動画編集を楽にするために動画十本分くらいの編集時間を捧げている感じだね。アホす。というか、情報が少なすぎてワロタwwwって感じだね。


まあ、ほぼほぼ活動してないけど、これはこれで楽しいね。
さて、来年度からどれだけ活動出来ることやら…

それでは、クロガネでした。

pythonで感情分析に入門

こんにちは、クロガネです。

皆さん、ネットを徘徊していて書いてある文章にどんな感情が込められているのか?ということが気になったことはないでしょうか?

まあ、文学に精通している人であれば言葉の表現のみで大体わかるんでしょうけど、僕の場合は特に文学的な部分は触れずに育ってしまったので言葉に堪能ではありません。

とはいえ、感情を読み取ることは人間生活において重要であることは変わりありません。

ということで、辞書を活用して単語の意味から自動で込められた上辺の感情を読み取ろう、というのを、今回Pythonで進めていきます。勿論、人工知能ではありません。

Pythonのインストールまでは割愛です。こちら(http://oita.oika.me/2018/05/03/python3-mecab-on-windows/)を参考にして必要なものをどんどんインストールしておきましょう。

概要

ML-Askというものを利用して、感情表現辞典を元に文字列の含まれる感情表現を抽出、評価します。

ML-AskにはMeCabが必要だそうなので、

MeCabのインストール ② 辞書をNEologd辞書に変更 ③ ML-Askのインストール

の手順で進みます。

また、ここではWindows10 64bit環境で進めていきます。

MeCabのインストール

Pythonは64bitなのでここからダウンロードして、64bit版をインストール。これはページにも書いてありますが公式ビルドのものではありません。ただ、出来るだけ簡単に導入したいのでこれを使います。

問題点は辞書がUTF-8なのでコマンドプロンプトなどから利用する場合に文字化けしまくります。ほかの用途で使うなら向かないかも???

注)32bit版のPythonを使用しているなら公式からダウンロードして利用出来ます。

実行して、そのままインストールしていきます。特にバンドルウェアなどはなさそう(多分)。

インストールできたら、 C:\Program Files\MeCab\bin にPATHを通す。

上手くいかない場合は、C:\Program Files\MeCab\binにある実行ファイルを直接指定しても実行自体は可能。

あと、再起動をかければどうにかなる。

最低限の動作チェック

環境変数の登録が上手くいかなくても、直接実行ファイルを叩いてあげれば動いているかどうかはチェックできる。 文字コード的な問題で文字化けするのでその辺はいったん気にしないでおこう。

Python のMeCabラッパーをインストールする。

ここからが本命。mecab-python-windowsというPythonのラッパーをインストールする。これでPythonからMeCabを操作できるようになる。

インストールはpipから実行すればよい。仮想環境の切り替えなどは適宜行えばよいので割愛。

  pip install mecab-python-windows

すんなり入った。

そのままipythonで動作チェックしてみる。

  import MeCab
m = MeCab.Tagger("-Ochasen")
print(m.parse("すもももももももものうち"))

問題無く動作することを確認。例文も参考元からそのままだね。

NEologd 辞書を導入

標準の辞書の制度がそこまでよくないらしい。そのため、精度をよくするために別の辞書であるNEologd辞書を導入しておく。

この部分は実はいらない、ここから少し面倒になるので割愛してよい。

NEologd辞書のビルドがLinux環境でしかできないらしい。ここで、Linux機を導入するのも面倒なので、Linux環境がない人はWindows Subsystem for Linux(WSL)を使用する必要がある。なので、まずはWSLのUbuntuをインストールしていきます。

参考: https://qiita.com/ChenZheChina/items/42f1fcc763e88cb02cca

まずはWSLの使用許可

これは管理者権限ありのPowerShellで以下のコマンドを実行すればよい。

  Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

ちなみに、アイコンを右クリックすれば「管理者権限で実行」が出てくる。

以下のような画面が出てくるので少し待つ。

すると再起動を求められるので、ここで再起動。

WSL用のUbuntuをインストール

導入自体は簡単。Microsoft Storeでインストールする。「Ubuntu」って検索すれば出てくる。

容量もそんなに食いません。容量が足りない場合は適当に要らないものを消すか、…というかそんなに容量が足りない状態でPC使うなよ(笑)って感じですな。ストレージの交換かディスクのクリーンアップでもしておきましょう。

インストールが終わればポップアップが出てきます。

インストールが終われば起動します。普通にスタートメニューに登録されます。

初回起動時はUbuntuのシステムのインストールから始まるようです。少し待ちましょう。

まずはユーザーネームとパスワードを設定します。これが終わればubuntuを利用できるようになります。これらのユーザーネームとパスワードは任意のものでよいです。

WSLのUbuntuでのインストールの下準備

実は、ビルドの準備はまだ終わらないんだ。とはいえ、以下の手順でやっていけば恐らく正常にインストールできるはず。時間がちょっとかかるけどね。以下はWSLのUbuntuのターミナル内での作業。

まずはaptのアップデートとupgradeをかませておく。

  sudo apt update
sudo apt upgrade

この辺りでいきなりエラーが出まくるので、恐らく、リポジトリを日本サーバーに変更することで解決される?? 以下を実行することで僕の環境では解決した。その後、aptのアップデートなどを再度試してエラーが出ないことを確認。https://qiita.com/Aruneko/items/c79810b0b015bebf30bb

  sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list

後のNEologdのビルドでエラーが出るのを避けるため、build-essentialを再インストールしておく。ビルド時にmake is not found.というエラーが出た場合、「build-essential」の再インストールが必要だそうだ。というか何もせず進めたら出た。http://zaka-think.com/linux/ubuntu/ubuntu-make-error/

  sudo apt install --reinstall build-essential

ただ、上の日本サーバーに切り替えをしておかないとここで躓くのでやっておこう。

gitをインストールする必要があるので、以下でインストール。

  sudo apt-get install git

gitと入力すると、各種コマンドについての説明が出てるので恐らく問題ない?

  git

また、gitの初期設定も行う…ってのはいらなかった。逆に、GitHubにいってアカウントを作っておこう。これはググってwebサイトに行ってね。

  git config global user.name [任意のユーザ名]
git config global user.email [任意のユーザ名]

NEologd辞書のビルドとmecab関連のインストール

gitがインストールできたので、mecab関連をインストールしていきます。この手順が不要かどうかは試していない…。まあ、入れておきましょう。

  sudo apt install mecab
sudo apt install libmecab-dev
sudo apt install mecab-ipadic-utf8

次に、gitを用いてNEologd辞書をインストールしていきます。この時にgithubのユーザーネームとパスワードが必要になります。入力して問題がなければ、インストールされる容量が結構あるのでじっくりと待ちましょう。約350MBです。

回線速度というか、よくわからない何かがボトルネックになっているかと。1Mbpsは出ていなかった…。

  git clone https://github.com/neologd/mecab-ipadic-neologd.git

ダウンロードが済んだら、移動してビルドしましょう。上記手順をすべてこなしていれば恐らく正常にインストールできるはず。僕は上記手順のみでできた。

  cd mecab-ipadic-neologd
sudo bin/install-mecab-ipadic-neologd

NEologd辞書をWindows側の移す

ビルドされた辞書をWindows側に移していきます。

Ubuntu側のNEologd辞書は/usr/lib/mecab/dic/mecab-ipadic-neologd/にある…?\usr\lib\x86_64-linux-gnu\mecab\dicじゃね? 僕の環境では後者の場所にありました。

これをWindows側のC:\Program Files\MeCab\dic\ipadic-neologd\にコピーすればよい。こんな感じ?まあ、多分フォルダ名まで変更する必要はなかったかと。

注) コピーについて

多分、WSLのUbuntu側から操作してコピーできるかもしれないけど、面倒なので直接取りに行く。

Ubuntuのフォルダは、%LOCALAPPDATA%\Packages\内にある。Windows側のエクスプローラーに直接入れて叩けば飛んでくれる。

その中から、CanonicalGroupLimited.UbuntuonWindows_[謎の文字列]というフォルダを見つけて、「LocalState」→「tootfs」と順に移動していけばUbuntu内のファイルにアクセスできる。

「mecab-ipadic-neologd」フォルダの場所の例は以下。[ユーザー名]と[謎の文字列]はたぶん人によって違う。

C:\Users\[ユーザー名]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_[謎の文字列]\LocalState\rootfs\usr\lib\x86_64-linux-gnu\mecab\dic\mecab-ipadic-neologd\

参考: https://qiita.com/keita44_f4/items/4fffda7048b2c3554f14

mecabが指定している辞書の位置を変更する

最後に、C:\Program Files\MeCab\etc\mecabrc (拡張子無しのファイルだよ)をテキストエディタで開いて、6行目のdicdir = $(rcpath)\..\dic\ipadic

  dicdir =  $(rcpath)\..\dic\ipadic-neologd

に書き換えます。

注意事項として、テキストエディタ側に管理者権限がないとこのファイルは書き換えができないので要注意。

動作チェック

再度、以下で確かめてみる。

  import MeCab
m = MeCab.Tagger("-Ochasen")
print(m.parse("すもももももももものうち"))

????

微妙?もっと長い文章で試しておいた方がいいかもね。

WSLでのコピペ

注意、WSLの画面にコマンドをコピペするにはCtrl+Vでは(多分)できません。ただ、左上のアイコンをクリックするとメニューが出てくるので、ここから貼り付けます。

ML-Askを導入

これでようやく感情分析に入ることが出来ます。以下を参考にしてML-Askを導入していきましょう。

参考: https://qiita.com/yukinoi/items/ef6fb48b5e3694e9659c?utm_source=stock_summary_mail&utm_medium=email&utm_term=kwtsh365&utm_content=ML-Ask%E3%81%A7%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AE%E6%84%9F%E6%83%85%E5%88%86%E6%9E%90&utm_campaign=stock_summary_mail_2018-12-29

インストール

以下からインストール

  pip install pymlask

問題無くインストールできた。

動作確認

  from mlask import MLAsk
emotion_analyzer = MLAsk()
emotion_analyzer.analyze('彼のことは嫌いではない!(;´Д`)')

最低限動いてくれているようだ。ぱちぱち。おめでとう。

今回出来るようになったことのまとめ

出来るようになったのは形態素解析と感情分析

  import MeCab
from mlask import MLAsk

string="近年では、親愛の情を込めて友人、知人や親族にも贈るお歳暮へと少しずつ変化してきているようです。"

m = MeCab.Tagger("-Ochasen")
print(m.parse(string)

emotion_analyzer = MLAsk()
emotion_analyzer.analyze(string)

結果はこんな感じ。

最後に

これで、形態素解析+感情分析が一応出来るようになりました。ここから、ML-Askの使い方を学んでいけば、最低限の感情分析を出来るようになるかと。

適当にモジュールを使って、何かしらのパラメーターを取り出して言えたらいいなー、って感じだね。

まあ、人工知能的なものではないので、辞書をカスタムしないと精度はよくならないので、この辺はGoogleとかIBMとかMicrosoftとかの感情分析の方がちゃんとパラメーターを取り出せるんだろうけどね。

こっちの方がお金はかからないのでいいね。

それでは、クロガネでした。

ThinkCentre M715q Tinyを分解

こんにちは、クロガネです。

今回、友人の頼みでLenovo製PCの「ThinkCentre M715q Tiny」を分解しました。

ネット上に意外と情報がなかったので、写真付きで共有しておこうと思います。 メモリー交換orHDD/SSD増設が大抵の人の目的なので、この2つのみアクセスします。

空け方

空け方は結構簡単。赤丸で示した背面ねじを取り、

矢印方向にスライドするだけ。

これで空きました。

メモリー部分にアクセス

次にメモリーにアクセスしてみましょう。これも簡単です。

以下の赤丸で示したねじを外し、

SONY DSC

矢印方向にスライドします。

SONY DSC

ここからHDDの台をひっくり返して取り出します。

SONY DSC

メモリーが見えました。

メモリーの型番

メモリーの型番は写真の通りでした。8GB1枚で注文した場合、Sumsung製のPC4-21300(DDR4-2666) のメモリー(M471A1K43CB1-CTD)です。

SONY DSC

製品の詳細は公式サイトから。以下は詳細スペックのスクショです。

分解は以上です。お納めください。

それでは、クロガネでした。

termcolorでPythonのprint文に色を付けよう!

こんにちは、鉄火巻です。

プログラムを作っていて、結果の表示やデバック用にprint()をよく利用しています。

しかし、コマンドプロンプトの真っ黒な画面に白文字のみ表示されているため、なんとなくおもしろみがありません。
とはいえ、コマンドプロンプト自体の色やフォントの色を変えるもの違うし…

、と探していたらちょうどいいモジュールを見つけました!

termcolorというモジュールをインストールすると、出力に色を付けることが出来るようです!
pypi: https://pypi.org/project/termcolor/

termcolorの導入

というわけで、さっそく導入していきましょう!

「termcolor」というモジュールをpipからインストールします。

  pip install termcolor

以上でOKです!簡単だね。

Let’s 試用!

ipython上で確認していきましょう。

使い方は、文字列の入った変数に色付けをして新しい変数に入れる、といった感じですかね?

  import termcolor
print(termcolor.colored("a","red"))

以下のようにしても問題なく使えます。こっちの方が短くていいね。

  from termcolor import colored
print(colored("ai", "red"))

すると以下のように色が付く。

これで装飾できました。ぱちぱち。

….

と思ったけど、プログラムに意気揚々と組み込むと上手くいきません。

Windows向けの解決策

どうやらWindowsでは「colorama」というモジュールもインストールする必要があるようです。

参考: https://stackoverflow.com/questions/21858567/why-does-termcolor-output-control-characters-instead-of-colored-text-in-the-wind

読んでみたところ、文字コードの問題CP932ちゃんは自己主張がつよいですね~。

以下のように「colorama」というモジュールを追加でインストールします。

  pip install colorama

また、coloramaを初期化する必要があるので、import辺りに同時に突っ込んでおきましょう。多分、初期化さえされていればどこもよいのでしょう?

  from termcolor import colored, cprint
import colorama
colorama.init()
cprint("aa", "red")

ipythonでなくともちゃんと色付けされて出力出来ることが確認できました!

おめでとう。

大まかな色付けの仕方

色付けの仕方には、cprint()と、colored()の2通りがあります。

基本的に使い方は一緒で、「 cprint() = print() + colored() 」なだけですね。

文字列の一部や、変数に入れた文字列を色付けするときにcolored()の方を使えばいいってかんじですかね?

  cprint("{string}", "{text colors}", "{text highkights}", attrs=["{attributes}"])

例:

※エラー文的にも、「 cprint() = print() + colored() 」はあっているみたいですね。適当にエラーを吐かせると、以下のように表示されます。

  print((colored(text, color, on_color, attrs)), **kwargs)

使える色

色のリストは上記pypiのページにあります。上記から引用。
詳細は上記pypiに行きましょう。

Text colors:

grey

red

green

yellow

blue

magenta

cyan

white

Text highlights:

on_grey

on_red

on_green

on_yellow

on_blue

on_magenta

on_cyan

on_white

Attributes:

bold

dark

underline

blink

reverse

concealed

※attributesはwindows環境ではreverseしか利用できないことに注意。どのattributeがどの環境で利用できるかは、上記pypiのサイトに書いてあります。

上でやったけど、reverseも効いてなくね?謎だね。

一部を色付け

以下のようにしたら一部を無理やり色付けできる。多分簡単な方法はあると思うけど、正直これで問題無く使用できます。

  print(colored("[loop{0}]: ".format(self.looptimes), "red"),"Finish load lib")

まとめ

今回はコマンドプロンプトに色を付けることが出来るようになる「termcolor」を紹介しました。うまく使えば結果の視認性も上昇かもしれないですね。

ただし、Windowsユーザーの方は一緒に「colorama」も導入する必要があるので注意が必要です。若干冗長的になります。


以上です。これで味気のないコマンドプロンプトの画面を煌びやかにすることが出来るようになりました!おめでとう!

ただ、毎回、importするたびに初期化も書いてあげないといけないのが難点ですね。

とはいえ、装飾したほうが他人に渡すときは見やすくていいかもね。
もちろん、配色にもよると思うけど。

それでは、鉄火巻きでした。

Notepad++から直接Pythonを実行しよう!


こんにちは、鉄火巻です。

Notepad++は個人的にとても気に入っているエディタです。
かなり軽量で便利です。今時少ないメモリ2GBのWindows10機でももたつくことなく動かすことが出来るので貴重なエディタです。

エディタはいろいろあるのでNotepad++が一概にいいわけではありません。
知り合いにGENIEをすすめ勧められたこともあります。F5で保存&実行が可能なのはとても便利に思いました。
ちょっと揺らいだんですけど、Notepad++で関数名や変数を選択すると全部ハイライトしてくれるのはとても便利で捨てられない要素です。

というわけで、そういったNotepad++の弱点を塞いでいきましょう。
Notepad++から、直接Pythonを実行できるように設定します。

と思ったんですが以外にドキュメントがありません。

幸い、転用可能に思われるドキュメントはいくつかあったことと、知り合いの助けがあって実行できるようになりました。ということで共有していこうと思います。

概要

Notepad++には「ファイル名を指定して実行」という機能があります。この機能を利用して
仮想環境も利用できる応用的な手法です。

batファイルを作る

いきなりコードを掲載します。適宜、ファイル名を書き換えて使用してください。僕は「npp_python.bat」で登録しました。「Python.bat」や「cmd.bat」はよくないといううわさを聞いたことがあるので避けた方が賢明なようです。

@echo off
python %~f1
pause

また、venvの仮想環境を設定したい場合は以下のように指定しましょう。仮想環境を呼び出すときと同じ手順です。

@echo off
call c:\work\pywork\envs\expenv\Scripts\activate.bat
python %~f1
call deactivate
pause

また、個人的に、「pause」部分を以下のように変更すると便利です。

timeout 10

プログラムの終了後の10秒後、もしくは何かのキーを押すと自動でコマンドプロンプトの画面が閉じられます。開きっぱなしになることを防ぐことが出来ます。まあ、毎回閉じればいいんですがね…。

ともあれ、エラーコードを読むにしても30秒くらいに設定しておけば問題ないとは思います。

.batファイルをNotepad++から呼び出す

次にNotepad++側の設定をしていきましょう。
「設定(R)」→「ファイル名を指定して実行(F5)」に以下を記入します。

(.batファイルのディレクトリ) "$(FULL_CURRENT_PATH)"

入力したらこんな感じ。

「(.batファイルのディレクトリ)」部分は、「c:\work\npp_python.bat」のように、上記.batファイルのディレクトリを指定します。例えば、「c:\work\」に先ほど作成した.batファイルがある場合は以下のようになります。

c:\work\npp_python.bat "$(FULL_CURRENT_PATH)"

また、「”$(FULL_CURRENT_PATH)”」との間に半角スペースが必要です。

このまま実行してみて問題無く実行されることを確かめましょう。

問題無く実行されたら、先ほどの「ファイル名を指定して実行(F5)」のウィンドウを再度開き、ショートカットキーに設定しておきましょう。
下図の赤枠部分をクリックして、

僕は以下のように「Ctrl+F5」に登録しました。ショートカットキーは競合しなければどのように設定しても問題ないので、お好みで。既定のショートカットキーも変更できるので不要なものを削除してから登録してみてもいいかもしれません。
また、「Python」などのように何のショートカットキーなのかが分かりやすい名前も登録しておきましょう。

そうすれば、次回以降は「Ctrl+F5」を押すことで、開いているPythonのコードをNotepad++から直接実行することができるようになります。

ぱちぱち。

仕組みについて

これでめでたく実行できるようになりました。ただ、投げっぱなしもよくないので、可能な範囲で解説していきます。

Notepad++の設定

まず、Notepad++側の設定から。簡潔に言えば、Notepad++で開いているファイルのフルパスを.batファイルに渡します。

(.batファイルのディレクトリ) "$(FULL_CURRENT_PATH)"

「ファイル名を指定して実行(F5)」は名前の通り、ファイル名を指定して実行することが可能です。なので、関連付けさえされていれば何でも実行させることが出来ます。勿論.exeファイルも実行できます。

「”$(FULL_CURRENT_PATH)”」部分は、Notepad++の「ファイル名を指定して実行(F5)」のウィンドウを開いたときに使用していたタブのフルパスが入るようです。

例えば、「helloworld.py」をNotepad++で開いていた場合、「”$(FULL_CURRENT_PATH)”」部分に「helloworld.pyのフルパス」が入ることになります。「helloworld.py」を「c:\work\」に保存していた場合、「c:\work\helloworld.py」が渡されていることになります。

また、この時、”$(FULL_CURRENT_PATH)”が、作成した.batファイルの第1引数に渡されることになります。

.batファイルの仕組み

基本的に、ただの.batファイルです。詳しい方は何でもできます。
以下を解説していきましょう。

@echo off
python %~f1
pause

といっても、説明する部分は「python %~f1」位しかありません。これも.batファイルでは普通のことですが、ほかは普遍的すぎるので省略します。

「python %~f1」は、普段、「python helloworld.py」とかやって.pyファイルを開くことと同じです。

ミソは「%~f1」部分です。これは、「第1引数をファイル位置として受ける」という意味です。

もともと、「%1」で第1引数の入る場所を指定できます。例えば、「~.bat aaa」として、「echo %1」としておけばコマンドプロンプトの画面に「aaa」と表示されるはずです。

ただし、「%1」のままでは文字列として扱われ、ファイル位置として扱われません。少なくとも、僕の環境では「%1」のままではPythonのコードをNotepad++で実行できませんでした。

ここを「%~f1」とすると、第1引数をファイル位置として扱ってくれます。

前述のように、Notepad++の「ファイル名を指定して実行(F5)」で.batファイルに「”$(FULL_CURRENT_PATH)”」を第1引数として渡しているので、この.batの第1引数に開いているファイルのフルパスが渡されます。

例えば、先ほどの例だと、2行目部分が「python c:\work\helloworld.py」と同じになります。これで、問題なく実行できるようになります。

まとめ

どうでしたか?実行できるようになりましたか?
まあ、プラグインで一発で解決するらしいですけどね。
とはいえ、ここに書いてある内容をコピペすれば問題なく実行できるようになるはずです。

ただし、GENIEのように「保存&実行」が出来ているわけではありません。
そのあたりは、適宜「Ctrl+s」を押してから「Ctrl+F5」を押しましょう。押すボタンが1つ増えるだけです。
逆に保存しないと変更前のファイルが実行されるので要注意です。

これで便利なNotepad++が一層便利になりました。
個人的にとても気に入っているので今後もNotepad++民として使い続けたいですね。

それでは、鉄火巻でした。

Windows10で起動したアプリケーションが表示されない…

こんにちは、鉄火巻です。久々の更新です。

最近、Windows10を使っているとアプリケーションを起動したにもかかわらず、アプリケーション画面が表示されない問題がありました。
直近に変更した設定を見直したら改善したので共有しておきます。

 

「タスクバーをすべてのディスプレイに表示する」をオフにしたことが原因?

僕の環境では上記設定を変更したことが問題でした。

 

マルチディスプレイ環境での全画面表示でたまにタスクバーが表示されてしまっていたので、その対策に非表示にしたことが悪かったようです。

直し方は簡単。

「設定」→「個人用設定」→「タスクバー」のページを表示します。
そして、ページ真ん中あたりの「複数ディスプレイ」の項目の中の「タスクバーをすべてのディスプレイに表示する」を「オン」に戻します。

以上です。

僕の環境ではこれで問題なくアプリケーション画面が表示されるようになりました。

ぱちぱち。

 

それでは、鉄火巻でした。

新しいwebプラットフォーム「Solid」に登録してみよう!

WWW(World Wide Web)の考案者であるティム・バーナーズ=リー氏から、新しいwebプラットフォーム「Solid」が発表されました。

[目次]

概要

発表された「Solid」とはどのようなものであるかを調べてみました。

Home | Solid
f:id:kurogane-games:20181001235937p:plain
これによると、「ウェブを再形成する」ことが目的とされています。
ティム・バーナーズ=リー氏がGoogleAmazon、MSなどの超大規模な企業がweb上の情報を掌握している状態にたいして以前から懸念を抱いていたそうです。
これを打開すべく、以前からこの「Solid」の開発を進めていたようです。

「Solid」において、wwwが考案された当時の理念を復活させる、ということが目的のようです。
情報が中央集権的なサイトから提供されるのみの状況から、webブラウザから書き込みのできる、双方向的なwebを実現するためのプラットフォームとなるようです。
ホームページにも、「Solidはユーザーがインタラクティブイノベーション、コラボレーション、共有できる、読み書き可能なWebになります。」「今日存在するあらゆる機能を上回る機能を備えた新しい種類のアプリケーションを提供します。」といった、双方向性を重視した記述がされています。

ただ、無作為に編集可能でなく、web上で人物が明示されることが特徴です。
個人がデータに対して作業を行うことが出来る権限、個人が誰であるかを一意に確認するための身元確認のためのシステムが、Solidにより提供されるということです。
Solidはアクセス権とIDを組み込んだ読み書き機能を持ち、Websocketを介してデータの管理とリアルタイムの更新を可能としている、と書かれていました。

Inrupt社とは

f:id:kurogane-games:20181002002949p:plain
InruptはSolidの設立チームによって設立された商業団体でり、Solidの成功に貢献する企業であると記載されています。
ポータルとツールキットの開発に関する業務を行っているようです。
恐らく商業利用等に関する整備などを進めているのではないでしょうか。

アカウントの作成

それでは早速「Solid」に登録してみましょう。
「え、じゃあ今までの中央集権なwebと一緒じゃん」って思いますよね。
というか、思いました。

この作業は、「web上でのIDを発行する作業」と考えてよいと思います。
実際にWebIDが発行されます。

まずは、公式ホームページの「GET A POD」のページに向かいましょう。
f:id:kurogane-games:20181002004540p:plain
Get a Solid POD | Solid

SolidのPODにはプロバイダーがいます。
「Inrupt」と「Solid Community」が表示されていますね。
これは、Solidのサーバーを経営している人、といったところでしょう。

これは現段階でどちらを選んでもよいと思います。
現段階のプロバイダーは開発者向けに最低限の機能を提供している、と書かれています。
そのため、APIなどで様々な機能にアクセスすることを前提としており、昨日は最低限に抑えられています。
今回はWebIDを入手するため、右にあった「Solid Community」を押してみました。

※)僕のようなちゃんとした開発が出来ない人が求める、非開発者なユーザー向けなサービス自体はまだ提供されていないようです。
アプリケーションを色々と搭載したバージョンのサービスはもうすぐ提供されるかもしれません!期待ですね。

f:id:kurogane-games:20181002004933p:plain
押すと「Register」と「Login」が表示されたボタンが現れます。
初めて触るので「Register」を押しましょう。

f:id:kurogane-games:20181002005120p:plain
すると登録画面が押されます。

  • username:WebID表示される名前です。WebIDの表記は後述。
  • passward:任意。16桁で登録できたことは確認できました。
  • name:これはだれが登録したか、という情報です。見たところ、だれが編集した、とかを明記するための情報のようです。現状ではペンネーム的なものでもよい?
  • email:任意のメールアドレスです。
  • webID:これはアカウント作成後などに発行されます。今は入力しなくていいと思います。

それぞれ登録していきましょう。
「Register」を押すと登録が完了します。

WebID発行

Registerを押すとWebIDのURLが表示されたページが表示されます。
少なくとも、メールの確認などはメールボックスに届きませんでした。
f:id:kurogane-games:20181002011435p:plain
記載されている通り、「https://(username).solid.community/profile/card#me.」という形でWebIDが発行されています。
便宜上、ここではこの画面を「publicホームページ画面」と呼びます。

publicホームページ画面について

「publicホームページ画面」では、

  • 誰のSolidのHome画面なのか(画面左上にusernameが表示)、
  • userのデータとアプリケーションの情報

が確認できるようです。

Dataについて

まず、Dataから見ていきましょう。
「Profile」、「Inbox」、「Public Folder」の3つが閲覧可能です。
それぞれ、

  • Profile

開くと「card」というページが表示されます。
f:id:kurogane-games:20181002012900p:plain
これはWebIDの所有者に関する情報を記載できる画面のようです。

  • Inbox
  • Public Folder

f:id:kurogane-games:20181002014851p:plainf:id:kurogane-games:20181002014853p:plain
共に、機能は共通であると考えられます。

違いは、「Inbox」は「Private」という設定がついており、「Public Folder」には「Profile」と同じ「Public」という設定が付けられています。
「Private」設定は外部から「」を確認した時に、作成者としてのログインが要求されます。
これに対し、「Public」設定ではだれでも追加・編集が可能となっているようです。

「Inbox」、「Public Folder」で使用可能なツール

f:id:kurogane-games:20181002014930p:plain
現状、詳細が把握できていませんが、箇条書きしておきます。
これらの作成後、作成者のnameが表示されていました。

  • Make a new Address Book:名前の通り、電話帳を作成します。メールアドレスをなどを複数追加可能のようです。

Make new Notepad:ノートを作成します。これは普通にノートです。
Make new Chat:チャットを作ります。これは古いwebチャットのような画面でした。
Make new Long Chat:これはメッセージアプリのようなチャット画面が出来ます。日付などが表示されるので、期間的にLongなチャット用でしょう。
Make new Meeting:これはいつ、どこでmeetingをします、という告知用のようです。
Make new Schedulable Event:カレンダーのようにも見えますが?
Make new Link @@
Make new Dokieli Document:これは「Dokieli」というタイプのドキュメントを書くことが出来るようです。
Make new folder @@:これはツールを入れ子状にできます。名前の通りフォルダでした。
Make new source @@

すいません、あまりよくわかっていないので、分かり次第順次追加していきます。
ただ、同名のツールを追加することは出来ないようです。

「publicホームページ画面」を外部から見た様子

外部からはpublic設定になっている「card」と「Public Folder」が閲覧出来ました。
試しに別のブラウザから表示してみましょう。
f:id:kurogane-games:20181002011435p:plain
外部から表示される「publicホームページ画面」と、ログイン後に表示される画面は同等でした。

また、「Inbox」の表示にははWebID所有者としてのログインを要求されます。
f:id:kurogane-games:20181002013918p:plain

その他、「Public」設定の画面は閲覧可能でしたが、編集には「Solid」にログインしておく必要がありました。

動作環境(?)

ちなみにブラウザはedgeでは正常に動いていません。
少なくとも、Public設定の「card」と「Public Folder」は真っ白な画面が表示されました。

また、日本語入力は問題なく行うことが出来ました。

余談 - 匿名性とは相反するのか?

今回は試しにWebIDを作ってみました。
現状、僕の力量では全貌が把握できず、編集可能なwebページという範囲です。
wikiページと異なる点は明確に所有権がある、ということですが、公開されている範囲では最低限の機能に抑えられているため、新鮮さはさほど感じられませんでした。

しかし、web上で「個人」が明確となることは、「炎上」などのネット特有の問題を解決するにあたっては有用かもしれません。
こちらと相手の顔が明確でないため、過剰な行動に出てしまいますが、「個人」が明確となることが、ある種の抑止力となるかもしれません。

ただし、ネット上は匿名であるべき、という考えは比較的広まっている考えです。
この匿名を望むweb上の住人と、Solidをはじめ、個人を特定する派閥とでは、中央集権に縛られない、という面では似た概念であると思われます。
ただ、「個人」の有無については明確な差があるため、ティム・バーナーズ=リー氏の望む中央集権的なwebが解消されたとしても、その先には「匿名」との争いが始まるかもしれません。

Android端末上でもPython3を動かすことが出来る「Pydroid 3」

こんにちは、鉄火巻です。

Pythonの勉強をちょっとだけやっています。
ただ、開発環境がPCに限られているので、家でしか実行できないという部分が問題でした。

そこで見つけたのがPyroid 3です。

play.google.com

「Pydroid 3」で何が出来るのか

これはオフラインで動くPython 3.6にIDEのようです。
僕自身が把握できている特徴としては、

といったところでしょうか。

端的にまとめると、僕程度の素人であれば大抵のことは出来ると思われます。

インストール

GooglePlayで「pydroid」と検索すれば「Pydroid 3 – Educational IDE for Python 3」というアプリが出てきます。
play.google.com

普通にインストールします。
f:id:kurogane-games:20180926001731p:plain
容量は41.85MBでした。意外と軽量。

Android 4.4以上に対応しているので、それより古い端末では利用できません。
とはいえ、4.4 KitKatはリリース日が2013年10月31日なので、今時の端末であればそもそも気にする必要はないでしょう。
古い端末を再利用するときだけ気を付けてください。

ちなみにアイコンはこんな感じ。
f:id:kurogane-games:20180926002316p:plain

起動するとインストールが始まります。
しばらく待ちましょう。
f:id:kurogane-games:20180926002530p:plain

また、C++IDEをインストールしてみてね、って出てきます。
f:id:kurogane-games:20180926002516p:plain
多分、インストールはしなくてもいいと思われます。

インストールが終わればIDEの画面が姿を現します。
普通のエディタとおおよそ同じですね。
f:id:kurogane-games:20180926002636p:plain

Hello World“してみる

まずは”Hello World“をしてみましょう。
単純に、

print("Hello world")

で実行します。

実行するときは右下の黄色の再生ボタン(▶)を押しましょう。
実行すると、コンソール画面に切り替わります。
ちゃんとprint()文が働いてくれていますね。
f:id:kurogane-games:20180926003003p:plain

今回はこの辺で。
次回はpipを使ったパッケージのインストール、外部ファイルの読み込みなどを試してみたいと思います。

それでは、鉄火巻でした。

モバイルゲーミングPC「SMACH Z」とはどういう端末なのか

こんにちは、鉄火巻です。

以前からにわかに噂されていたモバイルゲーミングPC「SMACH Z」ですが、
東京ゲームショウで展示ブースがあるそうです。

ですので、「SMACH Z」のスペックなどについておさらいしてみましょう。

[目次]

基本スペック

基本スペックについてはホームページに記載があります。
以下はホームページから抜粋

APU AMD Ryzen™ V1605B with AMD Radeon™ Vega 8 Graphics
メモリ 4 GB DDR4 2133MHz SODIMM
ストレージ 64 GB HD SSD m.2
ディスプレイ FullHD Touchscreen 6” 1920×1080
Wi-Fi 802.11 b/g/n/d/e/h/i
Bluetooth v2.1+EDR/v3.0/v3.0HS/v4.0
インターフェイス USB-C, USB-A, Micro USB, Display Port, SD card, Audio minijack
充電 Charger USB-C 20V 3A 60W. Plug EU/US/UK/AU
OS SMACH OS Linux based distribution
Shell(外観) Black Frontal Shell

また、ショップでは基本スペックで80,910円と表記されています。
これは予約時のみの価格で、10%オフになっているとのこと。
通常価格は89.900円のようです。

上から順に。

APU

APUは「AMD Ryzen™ V1605B」
これは組み込み用のAPUです。
基本情報は
4C8TH、
TDPが15W、
クロックは通常2.0GHz、ブースト時3.6GHz、
グラフィクスとしてRadeon Vegaを8基積んでいます。

CPUベンチマーク

以下のサイトにベンチマークがありました。
AMD Ryzen Embedded V1605B vs Intel Core i5-8350U
これによると、シングルスレッド性能とマルチスレッド性能が「Intel Core i5-8350U」に1割ほど劣る性能のようです。

AMD Ryzen™ V1605B Intel Core i5-8350U
Cinebench R15 CPU Single 64Bit 142.15 154.59
Cinebench R15 CPU Multi 64Bit 455.56 496.78

また、デスクトップPCのCPUと比較すると、は「Intel Core i3 8100」とほぼ同等。
Intel Core i3-8100 vs. Intel Core i5-8250U – Benchmark & CPU Comparison – compare CPU at cpu-monkey
確かにゲームをプレイする最低限のCPU性能は確保できているようです。

ちなみにPassmarkにはスコアはありませんでした。

グラフィクス

上記の通り、Radeon Vegaを8基積んでいます。
これが何かというと、Ryzen 2000Gシリーズの「Ryzen 3 2200G」と同等です。
以下のURLを参考にすると、Intelの内臓GPUと比べてかなりの高性能のようです。
【レビュー】【本日発売】GPU内蔵になったRyzenの性能をベンチマーク – PC Watch
「Ryzen 5 2400G」「Ryzen 3 2200G」レビュー。デスクトップPC向けRaven Ridgeはゲーマーの選択肢になるか? – 4Gamer.net

勿論、Ryzen 3 2200Gはデスクトップ版なので単純比較できませんが、Intel製のCPUを積むGPD WINなどと比べれば高性能なのではないでしょうか。

メモリ

これは4GBがデフォルトになっています。
実際のところ、4GBは今のWindows10では最低限の水準です。
ブラウザの起動などについてはおおよそ通常通り使用できるでしょうが、ゲームをプレイするにあたっては足りないようには感じます。
軽量なゲームであれば十分かもしれませんね。

メモリ容量に関しては下記のカスタマイズで8GB、16GBに変更できます。
8GBに増やせば最低限ゲームは出来るようになると思われます。

ディスプレイ

これは6インチサイズのフルHDです。
今時の大きめのスマホとほぼ同等と考えてよいでしょう。

また、タッチスクリーン搭載です。
とはいえ、PCゲームでタッチスクリーン対応のゲームはそこまで多くありません。

恐らく、タッチスクリーンはスマホと同等の使い方になるのでしょう。
見たところ、キーボードが折りたたまれているといった様子はありません。
また、公式サイトにもキーボードに関する情報は見られなかったので、文字入力などに利用するのでしょう。

Windows10のタブレットモードで使用できるタッチキーボードにはフリック入力も搭載されているので、入力もそれほど問題にはならないのではないでしょうか。
まあ、僕はフリック入力できないんだけどね…。

ワイヤレス系

ワイヤレス通信についてはあまり明るくありませんが、ざっと見たところ、よく使われているものはおおよそすべて載っている、といった印象です。
SMACH ZはおおよそWi-Fiでの通信が通常使用の回線となると思われるので、一通り搭載されていることはうれしいですね。

また、Bluetoothはv4.0に対応しています。
モバイルルーターなどの場合、v4.0が使用されているので、これらも使用可能でしょう。
ですので、外出時でも利用しやすくなっていると思われます。

その他

充電は今時のUSB Type-Cです。
最近はUSB Type-C搭載の機種も増えてきたので、スマートフォンと充電器、モバイルバッテリーを共有できると思われます。
そういう意味では、USB Type-Cの普及もPC界に恩恵が出ていると言えますね。

スペック違いの3種類

公式ホームページには「SMACH Z」は3種類表示されています。

SMACH Z SMACH Z PRO SMACH Z ULTRA
メモリ(GB) 4 8 16
ストレージ(GB) 64 128 256
カメラ 5 MP 5 MP
価格 89,900円80,910円 119,500円107,550円 144,500円130,050円

ゲームすることを考えればメモリは最低限は8GBのスペックのものを購入したいところですね。
Windows10自体もそこそこのメモリを使用することになっているので、8GBほど確保しておけばこのスペックで動作するゲームにとってはある程度事足りると思われます。

また、ストレージに関してもSDカードスロットがあるため、最小構成の64GBなどでもゲーム自体には問題はないかもしれません。
勿論、容量の大きなゲームをする場合は、高速な内蔵ストレージを足しておいた方がいいと思われます。

構成の変更

公式のストアページからBTO的に構成を変更できることが分かります。
以下はホームページに表示されていたオプション群です。
変更可能な部分は、メモリ、ストレージ容量、カメラの有無、OS、shell(外観)の5か所です。

メモリ

4GB 8GB 8GB(Dual Channel) 16GB
価格差(円) +10,350 +13,050 +21,600

メモリは8GB以上のものを選んだ方が無難に思われます。
その場合、価格は少なくとも91,260円となります。
ちょっと高いですね。
4GBの追加で1万円近く値段が上がるのは、もしかしたら内部ははんだ付けのタイプのメモリなのかもしれません。
そうであれば、後々追加できない可能性があるので、元から目的のゲームがどれくらいのメモリ容量を必要とするのかを把握しておいた方がいいかもしれません。

ストレージ

64GB 128GB 256GB
価格差(円) +10,350 +21,600

これについてはSDカードで賄うことが出来るかどうかとなります。
上でも書きましたが、大容量のゲームの場合、ストレージ速度が炉度時間に影響をもろに与えます。
ですので、ゲームの必要容量が大きいタイトルがしたければ、元から大容量のものを選択しておいてもいいかもしれません。

また、ストレージはM.2と書かれているため、ガワを開けることが出来れば自分で交換することが出来るかもしれません。
これは発売後の人柱になってくれる方を期待するしかありませんね。

カメラ

5 MP
価格差(円) +5,940

これはゲームによっては必要かもしれません。
ただ、カメラ位置がホームページなどでは確認できませんでした。

インカメラであれば、SkypeやDiscordをしながら顔を撮影できますし、実況動画の撮影なども単体で録画できるので便利かもしれません。
ただ、フロントカメラであればほとんどの場合不要と思われます。
しいて言えばARなどの用途でしょうか。

OS

SMACH OS Windows 10 Home
価格差(円) +11,610

OSは「SMACH OS」と「Windows 10 Home」の2つから選ぶことが出来ます。
「SMACH OS」はLinuxをカスタムしたOSのようです。
Linuxでも多くのゲームが稼働するようですので、超メジャーなゲームであればプレイできると思われます。

また、先日SteamからLinuxでもより多くのゲームをプレイできるようになる、Protonというツールが配布されました。
kurogane-games.hatenablog.com
これはLinuxWindows用ソフトを起動することが出来るようになるWineというプログラムをSteam側がカスタマイズしたものとなります。
そのため、SMACH OSでも大抵のゲームはプレイできるのではないでしょうか。
OS自体は恐らく手動でインストールできると思われますので、後から購入してもかまわないでしょう。

shell(外観)

Deep Black Radioactive Green Indigo Pearl White Red Fire Zombie Golden
価格差(円) +3,600 +13,500

外観でも、一部のモノはお金がかかります。
ZombieとGoldenは恐らく塗装の仕方が特殊なのでしょう。
その他の色はお金がかからないので、好きな色にしていいでしょう。

結構性能も高く、使い道も多そうですね。
しいて言えば値段がネックですが、これは対抗機(?)であるGPD WIN2なども高価なため、この類のPCの購入を検討している人にとってはそれほど問題とはならないでしょう。
また、カスタマイズ自体は可能なようなので、お財布と合わせて注文すればいいと思われます。

というか送料はどうなるんでしょうか?
日本円表示がされているくらいなので、最低限、代理店は出来ると思われます。
発売が楽しみですね。

それでは、鉄火巻でした。