No Programming, No Life

プログラミング関連の話題や雑記

ロマサガ3 リマスター版にGradleが使われていた

2019年11月11日にオリジナル版から実に24年の時を経て、ロマンシング サガ3のリマスター版が発売されました。今回は8つのプラットフォームで発売されました。私はiOS版を早速購入しました。

f:id:fumokmm:20191113213353p:image

さて、タイトルを眺めていたら、右上に「ライセンス」とあったので、何気なくタップ。すると「ライセンス」のテキストが出てきて、

f:id:fumokmm:20191113202324p:image

なんとGradleが入ってる!

なんというか、当時スーファミ版が開発されていた時には勿論使われていなかった技術でしょうし、というか存在すらしていなかった技術でしょうが、それが今改めて開発するときには使われるというのは、何か感慨深いものがあります。

それから、自分が普段から使っているのと同じビルドシステムを使ってこういった巨大なゲームプログラムも開発されるんだなぁという点にがとても興味深い。万物はクォークから出来ている、ってのと同じようなインパクトが私にはありました。(ロマサガ3もGradleでビルドされている)

世界は広いようで狭いですね。

 

VBAのマクロで外部コマンドを呼び出すサンプル

はじめに

諸事情があり、Excelのマクロから外部コマンドを呼び出す必要がありました。その際書いたスクリプトのメモです。

動作環境

Win10 × Excel2016でしか動作確認しています。

サンプルコード

Dim wsh As Object
Dim exec As Object
Dim command As String
Dim result As String

Set wsh = CreateObject("WScript.Shell")
command = "〜〜〜"
Set exec = wsh.exec("%ComSpec% /c " & command)

Dim line As String
' ★★★ポイント1★★★
Do While exec.Status = 0
    If Not exec.StdOut.AtEndOfStream Then
        line = exec.StdOut.ReadLine ' 標準出力の1行読み込み
        ' 〜〜〜(処理)〜〜〜
        Do Events
    End If
Loop

' ★★★ポイント2★★★
Do Until exec.StdOut.AtEndOfStream
    line = exec.StdOut.ReadLine ' 標準出力の1行読み込み
    ' 〜〜〜(処理)〜〜〜
    Do Events
Loop

Set exec = Nothing
Set wsh = Nothing

ポイント1

exec.Status0 になるまで待ち合わせを行っています。wsh#exec した後はコマンド実行が終わるまで時間がかかるかもしれないためです。ちなみにこの位置で標準出力のストリームを読み込んで置かないと、データ量が多いとふんずまるみたいです。

ポイント2

ここは、残りの標準出力のストリームを最後まで読み込んでいる部分です。

同じ処理を2箇所で書かていてカッコ悪いので、実用的なコードを書くときはちゃんと関数化などしましょう。

おわり。

参考サイト

https://m.srad.jp/~IR.0-4/journal/572274

Rubyのチュートリアルっぽい記事の一覧

Rubyチュートリアルっぽい記事の一覧はこちら

Ruby1 - プログラミング言語Rubyの概要 - No Programming, No Life

Ruby2 - Rubyの基礎文法 - No Programming, No Life

Ruby3 - Rubyの基礎文法 - 条件分岐 - No Programming, No Life

Ruby4 - Rubyの真偽値 - No Programming, No Life

Ruby4 - Rubyの真偽値

Rubyで「真」を表すのは何ですか?

以外のすべての値です。ちなみに true です。

じゃあ、Rubyで「偽」を表すのは何ですか?

falsenil です。 Rubyではこの2つ以外はすべて なので、0 (整数のゼロ) や、'' (空文字) も となります。気をつけて下さい。

関連記事

Rubyのチュートリアルっぽい記事の一覧 - No Programming, No Life

Rubyが令和に対応したみたいです

Ruby v2.6.3でdateライブラリが令和に対応したみたいです。

$ irb
irb(main):001:0> require 'date'
=> true
irb(main):002:0> Date.new(2019, 5, 1).jisx0301
=> "R01.05.01"
irb(main):003:0> Date.new(2019, 4, 30).jisx0301
=> "H31.04.30"
irb(main):004:0> exit
$

おしまい。

参考

Ruby 2.6.3 リリース

Python1 - PythonでHello World

当記事はPythonの文法 | Think Twiceにマージしました。


Q1.この記事は何ですか?

Pythonのハローワールドです。動作確認はv3.7.3にて行っています。

Q2. PythonでのHelloWorldのコード例を教えて下さい

hello1.py

print("Hello, World")
print("Hello, ")
print("World")

print関数で文字列を出力。

出力結果

$ python hello1.py 
Hello, World
Hello, 
World

Q3. あれ?2つめのHelloWorldは改行されてしまっていますね?

はい、普通に呼び出すと、改行コード付きで出力されます。 改行コードなしにするには、end="" を付けます。

hello2.py

print("Hello, ", end="") # end="" とすると改行しないみたい
print("World")

出力結果

$ python hello2.py 
Hello, World

Q4. # はもしかして行コメントですか?

はい、#以降が行コメントになります。

# これはコメント
print('Hello') # これもコメント

ちなみに、複数行コメントもあります。複数行コメントは以下のようにクォーテーションを3つで囲んだ形になります。

'''
この行はコメント
この行はコメント
'''

あとで詳しく出てきますが、Pythonはインデントでブロックを表現する言語なので、複数行コメントの場合は、インデントに注意して下さい。(同じブロックにいないとエラーになります)

hello3.py

for x in {1, 2, 3}:
  print("text")
  '''
  forのブロック内でのコメントは
  同じインデントを付けて書く必要がある
  '''
  print(x)

'''
この行もコメント(forのブロックの外)
この行もコメント(forのブロックの外)
'''

出力結果

$ python hello3.py 
text
1
text
2
text
3

参考

python3で改行なしprintをする。 - てきとーなブログ

Pythonでのコメントアウトの書き方 | UX MILK

Pythonのmac(Mojave 10.14.5)へのインストール

私はmacを使っているので、こちらを参考にHomebrew + pyenvでv3系で最新の3.7.3をインストールしてみました。 ちなみに途中、うまくインストールが進行しなかったので、ここ を参考に解決しました。

前提

環境:macOS Mojave バージョン 10.14.5

Homebrewは最新版。

pyenvのインストール

$ brew pyenv install 

~/.bash_profile に以下を追記

export PYENV_ROOT=${HOME}/.pyenv
if [ -d "${PYENV_ROOT}" ]; then
    export PATH=${PYENV_ROOT}/bin:$PATH
    eval "$(pyenv init -)"
fi

pyenvでインストール可能な一覧を確認

$ pyenv install -l
Available versions:
  2.1.3
  2.2.3
  2.3.7
  (中略)
  3.7.0
  3.7-dev
  3.7.1
  3.7.2
  3.7.3
  3.8-dev
  (中略)
  stackless-3.4.2
  stackless-3.4.7
  stackless-3.5.4

pyenvで使用するバージョンのインストール

$ pyenv install 3.7.3

pyenvでインストールされたバージョンの確認

pyenvでインストールされたPythonは、~/.pyenv以下にインストールされる。 インストールされているバージョンを確認。

$ pyenv versions
* system
  3.7.3 (set by /Users/(ユーザ名)/.pyenv/version)

使用するバージョンを確定

$ pyenv global 3.7.3
$ pyenv versions
  system
* 3.7.3 (set by /Users/(ユーザ名)/.pyenv/version)
$ python --version
Python 3.7.3

これでOK。

参考

Python3インストール(Mac編) - Qiita

MacOS mojaveでpyenvを使ってpythonがインストールできない時 - Qiita