44
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Electron v1.1.0でMenuの実装をするお話

Last updated at Posted at 2016-05-21

##はじめに
Electron v1.1.0を使ってみたところ
以前のバージョンとの変更点で詰まったのでメモしておきます。

##Electronとは
webの技術+αでOS Xやwindowsのデスクトップアプリが作れる開発プラットフォームです。
最近(2016/5/9に)v1.0.0がリリースされました。

インストールやHello Worldから配布までは

[Electronでアプリケーションを作ってみよう]
http://qiita.com/Quramy/items/a4be32769366cfe55778
などの記事を参考にしました。

##今回作るもの
入力したテキストを形態素解析してcsvでダウンロードできるアプリを作ります。
実際にはkuromoji.jsのデモをほぼまるごと移植したものになります。

[ブラウザで自然言語処理 - JavaScriptの形態素解析器kuromoji.jsを作った]
http://stp-the-wld.blogspot.jp/2015/01/javascriptkuromojijs.html

形態素解析のGUIアプリはwebだと
国立国語研究所のこちらが機能も充実していて使いやすそうでした。
http://chamame.ninjal.ac.jp

サーバに解析対象のテキストを送りたくない!というセンシティブな需要もあるのかなと思い、デスクトップアプリを作ってみました。
(winだとwinchaがありますが、更新が途絶えているためか一部のwin8マシンでは動きませんでした。)
http://chasen.naist.jp/hiki/ChaSen/?%C3%E3%E4%A5%A4%CE%C7%DB%C9%DB

制作物は以下です。
https://github.com/asayamakk/shirakaba

ビルド済みのmac向けアプリはこちらからダウンロードできます。
http://asayamakk.hatenablog.com/entry/2016/05/23/155030

readme.png

##ハマったところ
基本的な使い方はv.0.37と同じだったため特に問題ありませんでした。
参考にしたサイトは以下です。
[Electron Documentation] (公式)
http://electron.atom.io/docs/tutorial/quick-start/

[Electronでアプリケーションを作ってみよう]
http://qiita.com/Quramy/items/a4be32769366cfe55778

###Menuの呼び出し方変更
ここがハマりポイントでした。(というかこのために記事を書きました)

electronを使うのは初めてだったのでとりあえず作ったー!と思い
ビルドして起動してみるとキーボードショートカットが動作しませんでした。(Cmd+Cなど)
形態素解析ソフトとしてこれは致命的なので、調べてみるとMenuを追加する必要があるようでした。

[Electronに開発用メニューとショートカットを付ける]
http://qiita.com/okaxaki/items/8b8942b0c4e13ac67739

なるほどと思い、 Menuを実装してみると以下のエラーが発生しました。

Uncaught Exception:
Error: Cannot find module 'menu'

この変更については

[Electron を試す 7 – Electron v1.0 対応]
http://akabeko.me/blog/2016/05/electron-7/

を参考にコードを修正すると動作しました。
修正後のコードです。

main.js
const {app, BrowserWindow, Menu} = require('electron');

app.on('ready', function() {
  createWindow();
  installMenu();
});

function installMenu() {
  let template;

template = [
  {
    label: 'app-name',
    submenu: [
      {
        label: 'Quit',
        accelerator: 'Command+Q',
        click: function() { app.quit(); }
      },
    ]
  }
];

  const menu = Menu.buildFromTemplate(template)
  Menu.setApplicationMenu(menu);
}

説明のためコードの一部を省略しています。

他にもappやshellなどの参照も非推奨だったのが削除されているようです。
appやshellはelectron下に移動したという表現の方が適切だというアドバイスをもらいました(2016/05/23修正)

##まとめ
他の人が書いたコードはとても参考になるのですが、
実行環境やバージョンに気をつけよう。という初歩的な注意でした。
特に今回はリリースしてから2~3日しか経っていなかったためググっても一つ前の情報しか見つからず苦労しました。

制作物のリンクをもう一度貼っておきます。
https://github.com/asayamakk/shirakaba
Electronを使えばwebの知識があればとっても簡単にデスクトップアプリが作れました。
ElectronもES6も初めて使うので、絶賛ツッコミ待ちです(๑˃̵ᴗ˂̵)و(そのためにも記事を書いたので!)

##2016/05/23追記&Thanks Comment
bowerが不要なので削除したり、app, Menuの宣言部分を修正するプルリクをいただきました。

https://github.com/asayamakk/shirakaba/pull/1
Thanks! uraway :)

44
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?