MixSounder のご紹介

前提

このアプリは特定の状況下において大変便利なアプリです。

また使用するにあたりVB-Cable などの仮想オーディオデバイスが必要です。

(※なくても使用はできますが、あれば便利です。)

ダウンロード場所

Downloader にて配布しています。

https://devras.info/dl/?name=MixSounder

 

役立つ用途

例えば、

  • Lineなどの通話アプリで音声を流したいとき(PCの音声など)
  • 疑似的なミュート機能が欲しいとき
  • 仮想オーディオデバイスに音声を入力したいとき

他にも役立つ場面はあると思いますが、基本は上の3つだと思います。

 

使用方法

DiscordやLineなどのアプリからマイク設定を開き、入力デバイスに使用する仮想オーディオデバイスを選択し、

MixSounderの入力デバイスに標準入力のマイクを選択。

デスクトップ音声を無効にし、開始します。

これで仮想オーディオデバイス経由で音声を再生させることができます。

 

今後について

簡易的なボイチェン機能を追加しようと思っていたのですが、なかなかうまくいかずに保留しています。

実装できそうであれば、実装していくつもりですが期待はしないでください。

 

 

【Bukkit/Spigot】プラグイン開発に関して思うこと

プラグイン開発に関して

個人でプラグイン開発を行ってもなにも利益はでないですし、完全に自己満足の世界です。

もしこれから個人でプラグイン開発をしたいと思った方は本当に利益が出るのか、自己満足だけでいいのかを考えてからやった方がいいと思います。

 

利益が出る方法を考える

利益というより、自分のメリットになる方法ですかね。

自分に有益であればそれでいいんですが、個人で開発を行う場合基本的にメリットはありません。

Bukkit、Spigotのプラグインを開発するということは、サーバーを建てて開発を行うと思いますが、個人で行う場合、複数人で遊ぶミニゲームの開発が困難です。

サブアカウントを用意することが簡単にできたとしても、パソコンのリソースには限界があり、

  • サーバー
  • IDE
  • クライアント1
  • クライアント2・・・

マインクラフトはメモリをバカ食いします。

パソコンのリソースを食いつぶしますし、電力もたくさん消費します。

個人で開発を行うメリットは開発によって得た知識、言語力といったもので、基本的な文法などは流用することができますが、Bukkit/Spigotの知識を流用する先はほぼありません。

他の言語を使いたいと思ったときの弊害になるかもしれないです。

 

プラグイン開発で大きなメリットを出すには大きなサーバーで開発を行うことでしょうか。

大きなサーバーでは複数人で同時に開発を行っていることが多く、Gitなどの知識が必要になることが多いと思います。

Gitはほかの場所でも応用が利くので覚えておいて損はないはずです。

大きな―サーバ―で開発をおこなえば、そのサーバー独自のロジックを知ることができます。

その技術は応用することができるでしょう。

大きなサーバーで開発をおこなえば、知名度を得ることができます。

そのサーバーで開発を行わなくなったとしても知名度は役に立つでしょう。

ただし、上記のことはメリットであり、利益ではないです。

 

結論

個人開発はメリットがあまりない。

だが、大きなサーバーでの開発はメリットがあるが、利益には直結しづらい。

【PHP】クラスローダーの自作

クラスローダーとは?

登録さえしておけば、毎回 require_once をしなくても、ファイルを読み込んでくれる機能です。

簡単な作り方

はじめに、ClassLoader.php というファイルを作成し、

@ ClassLoader.php

class ClassLoader {

    private static $dirs;

    public static function loadClass($class) {

        foreach (self::directories() as $directory) {

            $file_name = $directory . "/" . $class . ".php";

            if (is_file($file_name)) {

                require $file_name;

                return true;

            }

        }

    }

    private static function directories() {

        if (empty(self::$dirs)) {

            $base = __DIR__;

            self::$dirs = array(
                // 参照を行うフォルダ
                // フォルダ内に探したいファイルがない場合は
                // エラーになるので 注意
                // * 優先度は上から順です

                $base . "/library",

                $base . "/classes",

            );

        }

        return self::$dirs;

    }

}
@ index.php
require_once __DIR__ . '/ClassLoader.php';
spl_autoload_register(array("ClassLoader", "loadClass"));
ClassLoader.php の最後に
spl_autoload_register(array("ClassLoader", "loadClass"));

を直接記述すれば、 ClassLoader.php を読み込むだけで初期設定が完了する。

 

あとは自由に呼び出しを行えばいいだけだ。

 

例:

require_once "ClassLoader.php";
spl_autoload_register(array("ClassLoader", "loadClass"));

// User Class を呼び出す
// User.php があれば、エラーにならない
$user = new User();