なかったので作りました。
なぜこんなものを?
エラーメッセージ、英語のチャット、ちょっとした英文などの翻訳で一日になんどかグーグル翻訳先生にはお世話になっているのですが、使うたびにブラウザを開いてグーグル翻訳にアクセスするのはめんどくさいのでデスクトップクライアントがあればなあと思っていました。
ブラウザを開きっぱなしにしておけばいいのですが、Chromeのタブはつねに開きまくりになっていてすぐどこにいるのか探せられないし、Google Chromeの機能にある ショートカットを作成 から ウィンドウで開く を選択すればデスクトップアプリのようになりますがタスクバーにピン留めができない!
そもそもmacOSにはウィンドウで開く、が存在しない、どうして・・・
私はよく使うアプリはショートカットではなく、タスクバーにピン留めやMacならDockへ追加して管理しているのですが、これはWebアプリと相性がよくないんですよね。
とりあえず簡単に作成したのでデスクトップアプリとしてGoogle翻訳が使えるようになりました。タスクバーにピン留めやDockへ追加もできるので、すばやくGoogle翻訳へアクセスできます。
ダウンロード方法
GithubリポジトリのREADMEにダウンロードリンクを記載しています。
上のリンクがWindows用、下のリンクがmacOS用(Darwin)となっています。
技術よりの話 Electron を利用して開発しました。
iosのWKwebviewのように簡単にデスクトップアプリでwebを表示するアプリ作れないかなーと思って「webview クロスプラットフォーム デスクトップ」とかで検索してたどり着いたような気がします。
これなら特に何もわからなくても20分くらいあればクロスプラットフォームの特定URL専ブラ作れるじゃん!と思って手を付けました。
実際20分くらいで作れるものなのですが、色々ハマって金曜のアフターファイブから土曜日がまるまる吹き飛んでしまいました。
公式の electron-quick-start が同ディレクトリ内のhtmlを表示するアプリになっているので、同じようなアプリはすぐに作れます。
具体的にはコード内の
mainWindow.loadFile('index.html')
を
var URL = "https://dle.work"
mainWindow.loadURL(URL)
みたいな感じにすれば大丈夫です。ちなみに最新バージョンだとloadUrlではなくloadURLと大文字にする必要あり。
頭の中がiosすぎて読み込んだindex.html内で<webview url>とか最初書いてましたが、普通にmain.jsでloardURLするだけでよかった。
頭を悩ませたError Cannot read property ‘on’ of undefined at Object.
ビルドしたアプリやテストで可動させた際に
Cannot read property ‘on’ of undefined at Object.
と出力されてしまう現象に数時間悩まされました。
同じ現象を報告しているサイトを貼っておきますが、解決しませんでした。
![](https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png?v=c78bd457575a)
![](https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png?v=c78bd457575a)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9TnV4dC5qcyVFMyU4MSU4QiVFMyU4MiU4OVB1cHBldGVlciVFMyU4MSU4QyVFNSVBRSU5RiVFOCVBMSU4QyVFMyU4MSVBNyVFMyU4MSU4RCVFMyU4MSVBQSVFMyU4MSU4NCUyMFR5cGVFcnJvciUzQSUyMENhbm5vdCUyMHJlYWQlMjBwcm9wZXJ0eSUyMCUyN29uJTI3JTIwb2YlMjB1bmRlZmluZWQmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTRkNmRhMzBmYzVhOTQyY2UyM2JhMWU2NzVkOTdkYTA1&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBraHNrJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz04ZGNhZWEyNjYwMjg2MjQ1NmQ4MDBjZmY4NmYxYzQxMg&blend-x=142&blend-y=486&blend-mode=normal&s=ff4997f97e602350e90da3c1e69e194f)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9RWxlY3Ryb24lMjAlRTMlODElQTclMjAlMjJjYW5ub3QlMjByZWFkJTIwcHJvcGVydHklMjAlMjdvbiUyNyUyMG9mJTIwdW5kZWZpbmVkJTIyJUUzJTgxJUE4JUU4JUE4JTgwJUUzJTgyJThGJUUzJTgyJThDJUUzJTgxJTlGJUUzJTgxJUE4JUUzJTgxJThEJUUzJTgxJUFFJUU1JUFGJUJFJUU1JTg3JUE2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz05MWZlNWQ3ZWY2M2M2Y2E2NjAxZmRjMTMwMjkyNmJmMw&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBKdW5TdXp1a2lKYXBhbiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MWY0YmI5ZjhhZjVlNGZhZDI1ZmM2YmQwZGM5MzUzODU&blend-x=142&blend-y=486&blend-mode=normal&s=12b0e567f414a3e4d1e887854612b4e7)
npm install electon とか npm install electron-prebuilt してるのが問題?
最終的には npm install して package.json の中で start electron を指定したらうまくいきました。
簡単クロスプラットアプリ作成
初めてデスクトップのアプリを作ったのでいい経験になりました。こういうWebフロント系の技術を使っていけばモバイルからデスクトップまで一気に作れそうですね。Javascriptがまったくなので厳しいですが・・・
今回作ったアプリはGithubにて、オープンソースで公開しています。
コメント