この記事を書いている時期は夏休み前の2019年7月21日。
外を出歩くとプログラミングの夏休み教室の広告。
スマホにもプログラミング教習の通知が飛んできたりしていました。
こちらはスマホに東急ハンズから送られてきた通知から、飛んで行った先のWebサイト |
とはいえ、一般的な家庭では、家庭内で自習勉強するためのプログラミング環境が整わないのではないでしょうか。
さて、一方私はFF14というゲームをやっています。スクウェア・エニックス社のオンラインゲームです。
実はプログラミング勉強・プログラミング教育ができる環境が整っています!
Windows PCやPS4の環境さえあればプログラミング体験ができるってすごくないですか?
しかも、プログラミング体験をするだけならFF14のフリートライアルだけで期間無制限で体験できます。
もちろん体験だけなので、プログラミング教育で学べることを全て体験できるわけではないですが、最初の一歩にはいいかと思いますよ。
今日はそんなお話です。
本記事の対象読者
本記事で学べること・学べないこと
学べないこと
- if文やfor文など、FF14では実装されていないコマンド
なぜ FF14 でプログラミング体験ができるのか
実は、FF14である必要はありません。例えばスクウェア・エニックス社のゲームではFF11やFEZなどでも体験できます。
ただ今回は私が今遊んでいるゲームがFF14なので、FF14を例に使って説明したいと思います。
FF14のマクロはシェルプログラミング
ゆっくり説明します。
FF14はオンラインゲームなので、コミュニケーションをとるためのチャットを打ち込む場所(チャット欄)があります。
ここで「おはよう」って打ち込むと、チャット欄に「おはよう」と書かれます。
おはよう と書き込むと
おはよう と発言できる
実はこのチャット欄はシェルでもあるのです。
シェルとは?
細かい話を省くと、シェル(Shell)とは、自分の打ち込んだコマンドを機械に読み込ませるための受付部分と言えるでしょう。
何を言いたいかというと、実際にはこういう処理が行われていると言えます。
- FF14のゲーム画面から「おはよう」と入力する
- FF14のサーバー側が「おはよう」とチャット欄に出したいと認識する
- FF14のサーバーからゲーム内のチャット欄に「おはよう」と出す命令を出す
- FF14内のチャット欄に「おはよう」と出る。
また、FF14ではチャット欄の最初に「/」を入力すると、それがチャットによる会話ではなく、シェルに自分のコマンドを打ち込むための宣言をしていることになります。
チャット以外のことをさせたい場合は「/」を使うことがほとんどです。
例えば 「/wave」と打ち込むと
ゲーム内のキャラクターが手を振ります
もちろんチャット欄内のメッセージだけでなく、ゲーム内のキャラクターも手を振りますよ。
実はこれだけでシェルプログラミングができてしまっています。一行だけのプログラミングです。
プログラミング風に言うと
/wave
というプログラムを実行したことになります。
実行の流れを言うと
- FF14のゲーム画面から「/wave」と入力する
- FF14のサーバー側が「/wave」という処理をしたいと認識する
- FF14のサーバーからゲーム内のキャラクターに手を振らせる命令を出す
- FF14のキャラクターが手を振る
となります。
今回はFF14のゲームの流れで話しましたが、シェルでのプログラミングはこのような処理を行います。
そしてこのコマンドをまとめたのがプログラミングの世界ではシェルスクリプト(Shell Script)と呼び、FF14ではマクロと呼んでいるだけです。
シェルスクリプトについて詳しく知りたい人はこちらのサイトも参考になるかもです。
eng-entrance.com
FF14のマクロはシェルスクリプト
FF14のゲームを始めると、最初から登録されているマクロがあります。
マクロというのはゲーム内の行動を一つに纏めている実行用のボタンなのですが、この中身はシェルスクリプトになっています。
マクロの中身は
こんにちは!
/wave
これを実行すると、「こんにちは!」の発言と手を振る行動を行います。
ゲーム内では同時に行ったように見えますが、シェルスクリプトは上から順番に処理が行われます。
「こんにちは!」の発言から「/wave」の手を振る行動までの処理が一瞬で行われるため、同時に行われたように見えるだけです。
プログラムの多くは上から処理するものが多いので、この感覚を掴んでおくのは重要かと思います。
引数とは
「/」を付けたコマンドに対して、さらに処理を追加したいときに使います。
例えば
/fc 少し離席します
/cwl1 少し離席します
と登録したマクロを実行すると、「/fc」の後に発言した内容は「FC」というチャットチャンネルに、「/cwl1」の後に発言した内容は「CWLS1」というチャットチャンネルに発言します。
このように、コマンドに対して処理したいことを追加したいときに引数という概念を使います。
詳しい引数についての使い方はそのコマンドによって違うので、それぞれ調べてみると面白いですよ。
ちなみにゲーム内では
/? /fc
のように「/?」コマンドに引数として調べたいコマンドを入力するとマニュアルが出てきます。
定数と変数?
本記事の最初に定数と変数という言葉の紹介だけしました。
実はFF14のゲーム内では定数と変数が区別して説明があまり行われていないので、ここでも同時に説明したいと思います。
定数とは
FF14ゲームで決められた言葉で、変更されることのなく実行される言葉です。
例えば
ゆっくりと
言葉を
たくさん
話すときに
wait定数を使うことが
あります
これを実行すると次のようになります。
ここでは定数
これを実行すると1行ずつ3秒間隔で言葉をしゃべるので、ゆっくりしゃべることになります。
この
少し脱線する話題になるので、例が書かれているリンクだけ載せておきますね。
jp.finalfantasyxiv.com
定数の概念は実際のWindowsやLinuxなどのプログラミングでは、環境変数や自分で定義した定数として使われるので覚えておくとよい概念かと思います。
変数と代入
FF14ゲームで決められた言葉で、プレイヤーに合わせて実行される言葉です。
例えば
/wave
これは「/wave」というコマンドに引数「
この「
このように、私たち側で入る意味が変わる言葉を変数と言い、意味を変えるための行動を代入と言います。
数学で定数とか代入とか勉強しましたよね。まぁそれと同じです。
例えば「呼び鈴」をターゲットしている状態だとします
この状態で「/wave
なお、この代入の方法にはいろいろFF14では用意されていてや
では、どうやってFF14でプログラミング勉強をするか
今回はFF14でマクロを用いたシェルスクリプトプログラミングの最初の基本を話しました。
次にやってほしいことは、Google検索などで「FF14 マクロ」と検索し、マクロの例がたくさん読んでほしいことです。
www.google.com |
本記事で学んだことをもとに、先人達が作ったマクロという名のシェルスクリプトを読むことが一番の勉強になると思います。
そうすると、いずれ自分でもマクロを書けるようになるでしょう。
プログラミング初心者でも始めやすい第一歩だと思いますよ!