【自己紹介】卒業研究で非決定性処理をブラウザで実行した話
2025-04-04
azblob://2025/04/04/eyecatch/2025-04-04-non-deterministic-processing-in-a-browser-000_001.jpg

はじめまして。2025年度に入社した中村優希です。サムネは大大大好きなうちのネコちゃんです!

今回は初めてのブログ投稿ということで、自己紹介と自分の卒業研究についてお話します。どうぞお付き合いください!

自己紹介

私は福岡にある工業大学で情報系の学部を卒業しました。実は、それまでプログラミングや機械に触れた経験がなかったため、入学当初は初めて知る概念や論理に戸惑う毎日でした。しかし、時間が経つにつれて動く仕組みを理解するうれしさや作る楽しさに惹かれていき、サークルでチームを組んでハッカソンに挑戦したり、アプリを開発したりするようになりました。

チームでは主にReactを使ったフロントエンドの開発を担当し、デザインにも関与しました。アプリのブランド感を演出するために、イラストを作成することもありました。(こんな感じの可愛い系です!)

アプリ画像1アプリ画像2

また、インターンやアルバイトもサークル関係の方々のところで経験し、フロントエンドの開発に携わりました。主な業務は、Reactを使ったコンポーネントの作成やUI・UXの改善、それと少しだけAWSを使ったログイン処理などです。

卒業研究

さて、そんなフロントエンドに浸かっていた私が取り組んだ卒業研究についてお話しします。簡単に言うと、トランスパイル(あるプログラミング言語から別の言語へ変換すること)のようなものの試作を行いました。

研究の背景と目的

研究室の先輩から引き継いだプロジェクトで、先輩が試作したシステムは有用性が確認されていましたが、Prologというプログラミング言語の生成・活用を含むため、システムの導入や複数人での利用に制約がありました。

そこで、私はこのシステムをスタンドアロン型のブラウザ版にすることを目指しました。具体的には、Prologと同じ処理をJavaScriptで再現することが研究の目標でした。

技術的な課題

Prologは手続き型プログラミング言語とは異なり、論理型プログラミング言語です。特に「非決定性処理」(一つの入力に対して複数の実行経路や解が存在する処理)という特徴があり、先輩のシステムはこの特性を活用していました。この非決定性処理をブラウザ上のJavaScriptで再現することが、技術的な課題でした。

私の研究では、Prolog自体ではなく、Prologに似た非決定処理を行うルールエンジンを対象にプログラム表現を定義し、それをJavaScriptに変換するツールを試作しました。この変換ツールの流れは以下の通りです:

  1. プログラム表現の入力
  2. 字句解析
  3. 構文解析
  4. AST(抽象構文木)への変換
  5. JavaScriptコードの生成

さらに、生成されたコードを実行して非決定性処理を再現するために、「継続ゴール」と「推論エンジン」という二つのモジュールを用意しました。これらを組み合わせることで、システムのブラウザ版の完成には至りませんでしたが、根幹に関わる機能の1つを作成できました🎉

非決定性処理をブラウザで実行可能になったので、研究としては一区切りついたものの、今後も個人的に開発を継続できたらと思っています✨

おわりに

ここまでご覧いただきありがとうございました。

まだまだ分からないことはありますが、仕組みがわかったり作りたいものが動いた瞬間をすごく楽しめる人間なので、これをエネルギーに頑張っていきたいと思います!

これからよろしくお願いいたします!

azblob://2025/04/10/eyecatch/2025-04-10-stock-prediction-using-lstm-intro-000.jpg
2025/04/11
Others