プログラムを好きなプログラミング言語に翻訳してくれるサービスRonriBoxをリリースしました。
解説動画
(※解説動画の最後では約7分で2019年までのうるう年を表示するプログラムを作り、JavaScript Python3.x Kotlin Go Java C C++ PHP Swift C# Rubyの11言語に翻訳します)
概要と、どのような原理で動いているのかを簡単に解説いたします。
概要
プログラムの構文は言語によって異なります。
/*C*/
#include <stdio.h>
int main(int argc, char* args[])
{
puts("Hello World!");
return 0;
}
//C#
class HelloWorld {
static void Main(string[] args) {
System.Console.WriteLine("Hello World!");
}
}
//Go
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
しかしうまくモデルを抽出することで論理構造は共通化できます。
抽出した論理構造を"モデル"という単位でRonriBoxに保存します。
最後に好きな言語を設定して使いたいモデルを呼び出します。すると目的の言語でプログラムのソースコードが出力されます。
これがRonriBoxの主な機能です。
原理
この機能を実現するためにRonriBoxには、プログラミング言語によって翻訳を変えるテンプレートエンジンが搭載されています。
言語による翻訳の切り替え
RonriBoxは選択された言語によって適応するテンプレートを変えます。
この機能を使って翻訳を切り替えています。
テンプレートによるモデルの再利用
もう一つ大切な機能として、テンプレートの中で他のテンプレートを呼び出すことができます。
これによってモデルは再利用可能な部品となります。
モデルはプログラミング言語間の構文の違いを吸収し、論理的になんらかの機能を抽象化したものになります。
これらを組み合わせて大きなプログラムを構成していきます。
説明をすごく端折っていますがRonriBoxの動作する原理は以上の組み合わせで成り立っています。
私が作ったサンプルのモデルがいくつかあります。
これらはそれぞれfor文やif文を抽象化しています。
他にも私の作ったモデル(※これを必ず使う必要はありません)に興味がある方は以下のガイドをご一読ください。
チュートリアル (日本語)
言語ガイド (日本語)
技術的なこと
サービスはVue.js + Laravel + MySQL + Vuetifyで作られています。
技術的な検証に1か月ぐらいかかりましたが、サービス自体は3日で製作いたしました。
最後に大切なこと
現在プログラマーの職を探しています。
特に札幌市内でご興味のある方がいらっしゃいましたら、ご連絡ください。
よろしければ履歴書を送らさせていただきます。よろしくお願いいたします。