こんにちは!森羅万象プロジェクトです!
前回はプロジェクトの概要を説明したので、
今回は
1.自作の「レベル」とは
2.どのレベルで自作する?
を話していきます。
1.自作の「レベル」とは
(この章は当記事を書いているAstalisks個人の主観が含まれています。)
・皆さんは「システム」を作った経験はありますか?
プログラミングをしたり設計図をもとにモノを組み立てることは「システム」づくりだと思いますし、
どうプログラミングをするか考える、設計図自体を作ることも「システム」づくりと言えるでしょう。
ゲームのmodやプラグインをたくさん導入しても自分だけの「システム」を作ることはできますし、
なんならPCやマウス、キーボードやモニターを買ってセッティングすることを、仕事やゲームをするための
一種の「システム」を作っている、と考えられなくはないでしょう。
・「システム」を作るには様々な手法があります。
例として、ゲーム(サービスの)「システム」を開発するとしましょう。
① プログラミングでゲームを作ると考えたあなたは、UnityやUnreal Engineが
真っ先に浮かんでくるでしょう。言語はC#やC++といったところでしょうか。Javascriptあたりもイケるかもしれません。
そしてプログラミングをするとは言ったものの、APIやプラグイン等の他の人が作ったコンテンツを使うときもあれば、
一からプログラミングをして今までにない挙動をするコンテンツを創り出すプログラマーもいらっしゃるでしょう。
② プログラミングは苦手という方(私もですよ)はわざわざプログラミングなんてせずにRPGツクールとかGlideとかを使って
マウスで作ることもこのご時世可能ですよね。使いこなせないくらい機能もありますし。
③ 別に、自分で作れ、とは言っていません。有名アニメのゲームを作るとなった際、大抵アニメ会社はゲーム会社に制作依頼しているのではないのでしょうか。
自分のアイデア(と依頼費用)があれば、数万~数十万円でゲーム制作を受けるフリーランスのエンジニアさんにきっとゲームを作ってもらえますよ。
④ 誰かが作ったものを使え、とも言っていません。その気になれば(+できる力があれば)、オリジナルのハードウェアを作ってその上で動作させたり、
ゲーム向けと言われるプログラミング言語を使わず作ったり、理論上は機械語つまり0と1だけでゲームを作れるわけです。
・ここで、「自作レベル」という指標を使って分析してみます。
自作レベルが高そうな手法 = 必要な知識が多そう、時間がかかりそう、できる人が少なそう、とざっくり考えます。
前述した①から④を、個人的に自作レベルの高い順に並び変えると、
自作レベルが高い④⇔①⇔②⇔③自作レベルが低い
かなと思っています。皆さんはいかがでしょうか。
ここで注意したいのが、自作レベルが高いほうが必ずしも良いわけではないことです。
コストパフォーマンスやタイムパフォーマンス、自分の興味やキャリアも考慮して方法を選ぶべきであると私は考えています。
(高校・大学では②か①を勉強すると思いますが、課題くらいならスピードとクオリティが担保できるならどうでもいいじゃないですか。
③できる人は④しなくても幸せに生きていけそうじゃないですか、②を極めてたら①に並ぶ自由度で作れそうだし。)
2.どのレベルで自作する?
このプロジェクトで作るものとして案に挙がったものが、
・低レイヤーから高レイヤーまで網羅できるもの(詳しくはOSI基本参照モデルの図)
→CPU、OS、サービスを一通り作成する必要のあるもの
・コミュニティが広がるもの→コレを作った人同士がつながれるもの
(+セキュリティ・キャンプの課題である、セキュリティがちょっとでも関わるもの)
でした。
「今の3DゲームができるようなCPU・OSと同じようなものを数年で作るのは現実的ではない(できたら起業してる)」
「作り終わったらメッセージが届くの嬉しいよね、となるとネットワークへの接続機能も必要だ、誰でも作れるようにマニュアルを用意しないと」
「そもそも日本語や英語ではなく独自言語による実装!? でも技術より言語研究にリソースが偏りそう、既存のものに似たようなものにしよう」
など紆余曲折あり、2023/10/15時点では、
「マニュアルを読んだ人が同じように作ったら、完成した人だけがつながるチャットグループのようなもの」
を作成するとし、
・CPUは命令セットまで自作する、OSもプログラミングで独自実装する
・CPU・OSの性能を見てサービスを追加する
・ネットを介してメッセージをやり取りする
・マニュアルは誰でも読め、理解できるように(こんなかんじに)記事として投稿する
という予定になっています。
自称:自作レベルでいうと④と①でしょうか、APIやライブラリ(レベル①、②あたり)ですら使えない私ですが、
せっかくの挑戦の機会ですから、メンバーの力を借りてともに開発に積極的に参加していけたらと思います。
そしてこの記事を、
アプリやサービスがどのように動いているかわからない方!
一からシステム開発してみたいけど、何を勉強したらよいかわからない方!
④①に興味があり、初めてチャレンジしてみたい!苦手だけどできるようになりたい方!!
に向けての一つのアイデアとして書くことができたらと思っています。
今後質問したいことや書き換えたほうが良いことがあれば是非コメントとして残していってください!!