peach fizz's Programming Labo

Google Appに登録するゲームを作るまでの足跡

Pythonでファイル名の先頭固定文字列を一括削除をしたい

運動不足気味なので、散歩でもしようかと思っています。幸いまだ花粉症は発症していないので、うらあたたかくなってきた今の季節だと桜と梅の両方を楽しめるので、3月は絶好の散歩日和です。

散歩してる間って暇なので、動いている最中にラジオ的なものを聞きたい。そうなんです。peach fizzはもはや静寂を楽しめない悲しい生き物に成り下がってしまいました。そこで、YouTubeからトークメインの気になるトピックについて解説している動画の音声をダウンロードし、mp3にいれようと試みました。しかし、ファイル名の頭にmp3変換サービス名称がテンプレ追加されているため、ファイル名が長くなりすぎ、現在再生中のファイル名称の識別が難しいです。なので、ファイル名の頭に入っている固定文字列を削除したいところです。

こういう時にひとつずつファイル名を変更するのは面倒くさいですね。

というわけで、Pythonで一括変更プログラムを作成しました。

import glob
import os

// mp3が格納されているフォルダパス
path = "C:\\Users\\peach\\Downloads\\"
// ファイルの先頭の固定文字列(削除対象)
filehead = 'mp3service - '

files = glob.glob(path + filehead + '*.mp3')

for f in files:
    new_name = f[-1*(len(f)-len(path)-len(filehead)):]
    os.rename(f, os.path.join(path, new_name))

このファイルに名称をつけて(例えばrename.py)、コマンドプロンプトから実行すればプログラムが実行されます。

python rename.py

ちなみに、Windowsだとエクスプローラーのアドレスバーに「cmd」と入力+Enterすると、現在エクスプローラーで開いているフォルダをカレントディレクトリとしたコマンドプロンプトが起動できて便利です。

Unityゲーム開発[1]:Unity本体をダウンロードする

千里の道も一歩から。ということで、Unityで3Dゲームを作るためには、Unityをダウンロードしなくてはなにも始まりませんよね。というわけで、早速Unityのホームページでインストーラーをダウンロードしました。

unity3d.com

埋め込みリンクのテキストがバリバリの英語なので緊張されるかと思いますが、 リンク先は読みやすくフレンドリーな日本語が出迎えてくれるので安心です。 Google検索の時点でユーザーの国籍に合わせてリンクを表示してくれるのですね。

ちなみに本家のUnityのダウンロードページはこちらです↓  埋め込みテキストは一緒ですね。

unity3d.com

もちろん日本語サイトからダウンロードしました。 「Unityを選択+ダウンロード」ボタンをクリックすると、 UnityHubSetup.exeという70MB程度のプログラムをダウンロードします。 exeファイルをダブルクリックしてインストールを実行。

セットアップは一本道なので迷うことなくインストールを進められます。 まず最初にUnityHubのインストールが終了すると、UnityHubが起動し、サインインを求められます。 ウィンドウ右上の人のアイコンからアカウント入力し、ログインします。(アカウントを持っていない場合は登録が必要です。) その後、Unityライセンスの登録を行い(個人かつ1000万円以上の収益をあげていない場合は無償で大丈夫です)、いよいよUnity本体のダウンロードとなります。

f:id:HTNsptniq99:20210310233040p:plain

プロジェクトの登録が終了すると開発ウィンドウが表示されます。 ツールのボリュームが大きいので時間はかかりますが、それほど設定の難しさはなかったです。

以下、Unityについてちょっとご紹介です。 ご興味がありましたら、スクロールしていただくと幸いです。

Unity  :ゲーム開発ツール(ゲームエンジン
Unity Hub:Unityのバージョン管理を行うソフトウェア

2021年現在、ゲーム開発といえばUnityというのが一般的だと思います。もちろんブラウザゲームスマホゲームの開発はそれぞれに特化したソフトウェアが存在していますが、いずれのプラットフォームにおいても開発ツールの選択肢として有力かつ魅力的なことは間違いないです。Unityは個人製作でも、少人数規模でのインディー製作でも、プロのゲーム会社による大規模製作においても、幅広いプロジェクトで活躍しています。利用者が法人(または1000万円以上の儲けがある場合)は有償となるものの、個人の使用であれば無償というのも太っ腹です。

UnityはWindowsLinuxといったOSだけでなく、AndroidiOSなどのスマホや、PS4、PS5、NintendoSwitchなどの家庭用ゲーム機といったプラットフォームに対応しています。一度プログラミングしてしまえば、他の対応するあらゆるプラットフォームへのコンパイルが可能であるということですかね。すごいです。

多くのプラットフォームに対応する言語というとHaxeを想起してしまいます。HaxeWindowsLinuxAndroidiOSといった数多くのプラットフォームに対応し、かつ出力言語が多い(ActionScript3、C++、PythonJavaJavaScript、Neko等)という魅力的な開発環境です。私は今のところHello Worldを出力する程度にしか触ったことがないのですが、時間ができたらHaxeでもゲーム開発できたらいいなと思っています。

今回は3Dのゲームを作成することが目的なので、王道のUnityを選択しました。 Unityは前述のとおりデベロッパーの数も多いツールですので、検索をかければ簡単に開発のヒントを見つけることができます。私のような初心者にとっては、とてもありがたく、心強いです。

Python仮想環境構築コマンドまとめ

Pythonで仮想環境を使って作業をする時のコマンドをまとめました。 仮想環境についてもう少し詳しく知りたいときはこちらへどうぞ。→ Windows10でPython仮想環境

例として、仮想環境フォルダの名称は「testroom1」とします。

1. virtualenvのインストール

既にインストールされていたり、venvを使う場合は不要です。

python -m pip install virtualenv

2. 仮想環境を作る

// venvの場合
python -m venv testroom1
// virtualenvの場合
virtualenv testroom1

3. 仮想環境を有効化する

作成した仮想環境下のScripts\activate.batを実行します。

// コマンドプロンプトの場合
testroom1\Scripts\activate.bat
// Power Shellの場合
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
testroom1\Scripts\activate.bat

4. 仮想環境を無効化する

deactivate

Windows10でTensorFlow用のPython仮想環境を作る

PythonではTensorFlowやkerasといった機械学習関連のライブラリを使ってプログラミングを行っていく予定です。ひとつのPython環境に複数のライブラリを同居させて動かしていると、競合問題が発生する可能性が高いため、Pythonの仮想環境を用意し「実験場」として扱うことにしました。

必要な部分だけサクッと知りたい→ 仮想環境構築コマンドまとめ

目次

1 仮想環境が必要な理由
2 venvとvirtualenv
3 仮想環境の作成
4 仮想環境の操作

      

1. 仮想環境が必要な理由

Pythonをいじり始めて間もない頃、ひとつの環境にあれやこれやとたくさんのライブラリをインストールして遊んだことがあります。Pythonには有志の方々が開発した便利なライブラリが数多く存在するので、その挙動を確かめたくて次から次へと試してみたんですね。しかし、ライブラリにはPythonのバージョンによって対応/非対応が存在し、また、複雑な構成の大規模なライブラリを同一環境に同居させることで、依存関係がおかしくなってしまう…という事態に陥りました。そういう事態を回避するために「仮想環境」を構築することが有効だとのちに知りました。

仮想環境というのは、同じマシンの中に構築する「別マシンのようにふるまう環境」のことです。Pythonという大部屋の中に、小さな「実験部屋」を作って、その部屋の中だけで新しいライブラリをインストールして挙動の確認をするので、外側の大部屋に害が及ばないというメリットがあります。大部屋が壊れてしまったら、また一から環境づくりをしなくてはならず大変な手間です。細かにカスタマイズした環境であれば尚更です。でも、仮想環境である実験部屋ならば、あくまでも別マシンでの実験なので、壊れて機能しなくなったなら削除してしまえば良いわけです。便利ですね。

      

1. venvとvirtualenv

venvもvirtualenvも仮想環境構築を行うコマンドです。 venvが純正で、virtualenvはサードパーティ製のライブラリとなります。

以前はvenvでは仮想環境にシフトした時コマンドラインがリセットされるため、 virtualenvの方が使い勝手が良かったようですが、現在のvenvはコマンド履歴を維持したまま 仮想環境への切り替えが可能です。

virtualenvを使う場合はインストールが必要です。

pip install virtualenv

ちなみに、Anaconda環境であれば「conda」を使うのが最も簡単です。

      

1. 仮想環境の作成

testboxと言う名前の仮想環境を作る場合のコマンドです。

  • venvの場合
python -m venv testbox
  • virtualenvの場合
virtualenv testbox

      

1. 仮想環境の操作

作成した仮想空間で作業をする際、「有効化」というステップが必要です。 Pythonを操作する環境に合わせて、次のコマンドを実行します。

// コマンドプロンプト
testbox\Scripts\activate.bat
// Power Shell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
testbox\Scripts\activate.bat

仮想空間を使う作業をまとめると、次の通りです。 既に作成済みの仮想環境で作業をするときは(2)から開始します。

(1)仮想環境フォルダを作成する
(2)フォルダの環境を有効化する
(3)仮想環境フォルダに移動し、作業を行う
(4)作業が完了したら、仮想環境を無効化する

  • venvによるコマンド
python -m venv testbox
\testbox\Scripts\activate.bat
cd testbox
// 作業を行う
deactivate
  • virtualenvを使う
virtualenv testbox
\testbox\Scripts\activate.bat
cd testbox
// 作業を行う
deactivate

 

プログラミングとコーディングの違いは…?

お恥ずかしながら、プログラミングとコーディングの違いが、今ひとつはっきりしておりませんでした。

 

そのため、プログラミング作業で機能追加があって実装完了の報告をするとき、これが「プログラム実装」なのか「コード実装」なのか今ひとつ区別せず、両方ごちゃまぜにして使っていました。

 

プログラミング

プログラムを作ること。

プログラム設計・コードの記述・デバッグ・バグ修正・完成

上記の一連の手続きすべての作業をさす。

 

コーディング

プログラミングの流れの中で、コードを記述する作業のこと。

  

実装した対象が、プログラムかコードかで「実装」の主語が変わりますね。

構築中のシステムが大規模で、そのシステムの一部分を構成するプログラム単位で追加実装したのであれば「プログラム実装」、単一のプログラムの中の一部分に処理を加えた場合には「コード実装」が正しそうです。今後は区別して使いたいです。

 

参考にしたサイト様

https://www.modis.jp/staffing/insight/column_46/

https://www.sejuku.net/blog/51921

https://blog.codecamp.jp/coding-programming-difference

 

Differences between programming and coding

Programming: whole of procedure of make a program.

programming consists by design, coding, debug and fix.

Coding:a part of programming.

 

 

peach fizzの紹介

 

こんにちは。

peach fizzと申します者です。

 

このブログは、趣味のゲームづくりの記録を目的としています。

私のゲームづくりに関するスペックは次の通りです。

 

・ずっと昔、VB.netでゲームを作ったことがある

・ここ最近(10年ほど)、ゲーム作成から遠のいていた

・3Dには手を出したことがない

 

こんな野望を抱いています。

 

・Unityで3Dゲームを作りたい

Python機械学習ライブラリを活かしたゲームを作る

物理エンジンを用いたゲームを作る

・その他の言語(JavaScript/Rubyなど)も習得したい

ローグライクゲームを作る

Androidにアプリ登録をする

 

思ったことをそのまま箇条書きにしましたが、すべての野望を1つにまとめて

実現するのは難しいので、少しずつステップを踏んでクリアしていく予定です。

 

また、これまでのプログラミングは独学で行っていたので、

業界での常識…基本的な用語やアルゴリズムなどわからないことが多いです。

これを機に、色々と調べて基礎的な知識を身につけていこうと思っております。

 

気分転換目的で、時々脱線することもあるかと思いますが、

同じような趣味を持つ方々とつながって意見交換したり、

私と同じような野望を持つ方の何らかの参考になれたら嬉しい限りです。