@KoHaRxnP

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

作成中のアルゴリズム/ユーティリティ集の同梱インポーター

解決したいこと

TsやJs、Python、Java、Elixir…など多数の言語で実装されたアルゴリズム/ユーティリティ集を現在作成中です。内部同梱インポーターの実装について教えてください。

発生している問題

この度内部依存関係(アルゴリズムやユーティリティを実装する際にこのアルゴリズム/ユーティリティ集のなかに含まれる別のアルゴリズムやユーティリティを使用すること)を簡単に解決することのできるemployという機能を実装しようとしました。しかし実装方法があまり思いつかず、以下のような構造とすることにしました。

  1. employ("使用するアルゴリズムやユーティリティのID")が呼ばれる
  2. .meta//にある.jsonを探す
  3. そのjsonを読み、dependencies欄にあるIDをまた見つけ、2に戻る
  4. 探すものがなくなったらそれまでの取得した依存関係をリスト化し、そのそれぞれの.jsonを読みに行く
  5. そのJsonに記載されたソースファイルのパスを見つけ、その先のファイルを探して動的インポートさせる

しかし、JsやTsなどではFSへのアクセスが難しく、実装方法に悩んでいます。また、上記のような実装でよいのかわかりません。解決方法を教えてください。

0 likes

複数言語で依存関連だとgitに対してアプローチするような方法が取られるようです。
GitHubのDependabot
Renovate

しかし、JsやTsなどではFSへのアクセスが難しく、実装方法に悩んでいます。

ベース言語の提示が無い為、各言語で同じアプローチを実装すると読み取れるので判断付きませんが、npmやpipなど各言語のパッケージマネージャ系を参考にしてはいかがでしょうか?

1Like

node.js のfs等を使用するとjsでファイル操作可能です。

import の実装はインタプリタを作った時にしたことがありますが、呼び出し箇所を置換するように実装すればいいかと思います。

1Like

こちらが当リポジトリ(Employはまだ未実装です。またアルゴリズムやユーティリティに間違いがまだ多くあります)なのですが、アルゴリズムやユーティリティを書いたソースファイル以外のフォルダやファイル(例: node_modules)をできるだけ含めたくないという考えをしております。また、Node.jsの標準fsに多くを頼るとNode.jsを使わない環境への互換性が失われるのではないかという懸念があるのですがその点はどのようにしたらいいのでしょうか。この際Js/TsのemployはNode.jsを前提とする便利な機能、とするのが最善でしょうか

0Like

Your answer might help someone💌