51662
[こちらの質問](https://ja.stackoverflow.com/questions/51109/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E4%B8%8A%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%99%E3%82%8Bjavascript%E3%81%AE%E3%83%A9%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B)をしたものです。  
マルチプラットフォームで動作するJavaScriptのランタイムエンジンを探していて、皆さんのアドバイスもあって[BaristaCore](https://github.com/BaristaLabs/BaristaCore)というChakraCoreを使い.NET
Standardで実装されたフレームワークを見つけたのですが、いざ開発してみるといきなり壁にぶち当たってしまいました。

MacとiOSで試すためにUnityを使ってテストを行いました。  
[こちらのトピック](https://github.com/BaristaLabs/BaristaCore/wiki/Embedding-
BaristaCore-into-your-own-
application)を読みながらそのままで書いていたのですが、Macでは期待した動作をしてくれたのですがiOSにビルドしてみると上手く動作しませんでした。

そこで Xcodeのログを読むと以下のようになっていました。

```

    InvalidOperationException: 
    A suitable constructor for type 'BaristaLabs.BaristaCore.BaristaRuntimeFactory' could not be located. 
    Ensure the type is concrete and services are registered for all parameters of a public constructor.
    
```

エラー文で調べると`BaristaRuntimeFactory`のコンストラクタが`private`になっている可能性があると出たので早速[ソース](https://github.com/BaristaLabs/BaristaCore/blob/e0cee70a0e3de72411e636d72e63d4cc9a51202b/src/BaristaLabs.BaristaCore.Common/BaristaRuntimeFactory.cs)を読みましたが、コンストラクタは`public`になっていました。

これは私が何か前提を間違えているのか、BaristaCoreはiOSでは使えないのかが分かりません。  
Unityのビルド設定でしなければいけないことがあるかも知れませんし、XcodeのLinked Frameworks and
Librariesの欄に何か追加しなければいけないのかもしれません。

考えられる可能性は何でも教えていただきたいです。

かなり欲しい条件を満たしているので、できればこのままBaristaCoreを使いたいです。
CC BY-SA 4.0
2019-01-02T09:07:59.007
51661
2019-01-02T16:00:30.087
2019-01-02T11:16:16.253
76
31396
question
javascript unity3d
BaristaCoreがMac上では動作するがiOS上で動作しない理由がわかりません
逆にBaristaCoreがiOSで動作するという根拠が判りません。

該当ページの [README.md](https://github.com/BaristaLabs/BaristaCore) にも、そこで紹介されている
[Roadmap](https://github.com/BaristaLabs/BaristaCore/wiki/Roadmap)
にも、macOSは記載されていますが、iOSはありません。

README.md

> Provides a sandboxed JavaScript runtime natively to a .Net Standard 2.0
> application on Windows, Linux and macOS.

Roadmap

> Continuous Integration  
>  ☑ Automated Cross-Platform builds w/ Unit Tests  
>  ☑ Windows  
>  ☑ Linux  
>  ☑ macOS  
>  Automated Releases  
>  NuGet  
>  Chocolatey  
>  Apt-Get  
>  Brew

ChakraCore自身もiOSで動かしたことはあるようですが、公式サポートはされていないようです。  
[How can i build ChakraCore for IOS?
#3179](https://github.com/Microsoft/ChakraCore/issues/3179)

> There is no build configuration for iOS today. Some friends of the project
> have made it work on iOS, but there is not a PR or public fork at present.

ただし、誰もテストしていないだけで、動くのかもしれませんが、  
その場合は誰か(貴方?)が動作確認やサポートのプロジェクトを立ち上げて  
推進していく必要があるでしょう。

* * *

## 追記

古い記事なので今も当てはまるか不明ですが、こんな情報があります。何か参考になれば。  
[Xamarin.Mac （か Xamarin.iOS ）から netstandard2
を使用する方法](https://qiita.com/toshi0607/items/8ff2b9ca54a0ad353f2f)  
[Xamarin.Mac and netstandard2](https://medium.com/@donblas/xamarin-mac-and-
netstandard2-708a06890302)  
[Unable to build iOS project that references a NET Standard 2.0
library](https://bugzilla.xamarin.com/show_bug.cgi?id=58504)

[Xamarin（Formsもね）で.NET Standard
2.0なライブラリを利用する](http://www.nuits.jp/entry/xamarin-forms-with-netstandard-20)  
[.NET
Standardなライブラリプロジェクトを作成して参照する](https://www.buildinsider.net/language/dotnetcore/05)

* * *

## さらに追記

こういう記事 [Is the `JS engine` on `IOS` or `MaxOS's` Chrome browser `V8`?Or
`JavaScriptCode`?](https://stackoverflow.com/q/49890333/9014308) や
[iOS版「Google
Chrome」が速くない理由](http://ascii.jp/elem/000/000/707/707070/index-3.html)
があって、技術的や個人使用では可能でも、商用・公開ソフトとしては作れないのかもしれませんね。

> AppleがiOSデベロッパーに課すライセンス契約（アプリ埋め込みでないスクリプト／インタープリタ機構の搭載を禁じる条項がある）により、...
CC BY-SA 4.0
2019-01-02T09:55:01.163
51662
2019-01-02T16:00:30.087
2020-06-17T08:14:45.997
-1
26370
51661
answer