ITエンジニア/デザイナ向けにオープンソースを毎日紹介

Electronを使えばデスクトップアプリとして動作するソフトウェアがクロスプラットフォームで作成できます。しかし、HTMLなのでUIを作るのが若干大変という印象があります。同様のことはモバイルアプリでも起きており、Reactが示した解決策がReact Nativeになります。

そしてProton NativeはReact Nativeと同じ解決策をデスクトップアプリに対して適用しようとしています。

Proton Nativeの使い方

Proton Nativeのサンプルコードです。ノートアプリになります。

  1. import React, { Component } from 'react';
  2. import fs from 'fs'
  3. import { render, Window, App, TextInput, Dialog, Menu, Box } from 'proton-native';
  4. class Notepad extends Component {
  5. state = {text: ''}
  6. save() {
  7. const filename = Dialog('Save')
  8. fs.writeFile(filename, this.state.text)
  9. }
  10. open() {
  11. const filename = Dialog('Open')
  12. fs.readFile(filename, (err, data) => {
  13. if (err)
  14. throw err
  15. this.setState({text: data})
  16. })
  17. }
  18. render() {
  19. return (
  20. <app>
  21. <menu label="File">
  22. </menu><menu .Item type="Item" onClicked={() => this.open()}>Open</menu>
  23. <menu .Item type="Item" onClicked={() => this.save()}>Save</menu>
  24. <window title="Notes" size={{w: 500, h: 500}}>
  25. <box>
  26. <textinput onChanged={text => this.setState({text})} multiline={true}>{this.state.text}</textinput>
  27. </box>
  28. </window>
  29. </app>
  30. );
  31. }
  32. }
  33. render(<notepad></notepad>);

実行結果です。本当に簡単なアプリになります。

メモアプリ
メモアプリ

Proton Nativeではメニューの定義がありますが、macOSではメニューが出ませんでした。まだ今後対応していくのでしょう。コードはnodeのオブジェクトが使え、UIはネイティブのものが使えるようになっています。

Proton Nativeはnode/JavaScriptのオープンソース・ソフトウェア(MIT License)です。

Home - Proton Native - React Native for the desktop, cross compatible

kusti8/proton-native: A React environment for cross platform native desktop apps

MOONGIFTプレミアムに登録して運営をサポートしてください!月額500円の他、半年(3,000円)、年間パック(6,000円)もあります。企業向けに3アカウント以上で請求書払いも可能です(年間一括のみ)。従業員の方向けのサービスにいかがですか? プレミアムユーザのログインはこちらから

 

MOONGIFTの関連記事

コメント

  • DevRel
  • Com2