post Image
Electronより軽くて手軽なlorca製デスクトップガワアプリのススメ

最近ScrapboxをデスクトップPWAとして使い始めました。
やはりデスクトップアプリとしてDockに表示されるだけで体験はすごく良くなるなー

PWAもっといろんなサービスで使えるようになってほしいです(オフライン動作とかとりあえず要らないんでアプリとしてインストールだけでもさせてほしいなぁ)

Webサービスのデスクトップアプリ化で感じる利点は、具体的にはショートカットやSpotlightで呼び出しやすいといったことくらいなのですが、OSのインタフェースから自然に使えるという体験はヘビーユースしているWebサービスを更にヘビーに使うきっかけになりえるなと。

自分自身、よく使うWebサービスは個別アプリにしたいと日頃から思っており、Electronを使ってよく使うWebサービスは個人利用用にアプリ化したりしてました。
ただElectronはアプリサイズが大きいのと、Gmail等一部のWebサービスはそのまま開いても動かない(Ramboxとかはどうやっているんだろう)のが悩みでした。

今回使ってみたlorcaはその部分を解決しており、PWAが広まるまでの代替として割と最適感があります。

lorcaってなに

lorcaはHTML5アプリケーションを構築するための非情に小さなライブラリで、ElectronのようにChromiumを内蔵するのではなくインストール済のChromeブラウザを利用して動作しています。

lorcaはGoのライブラリであり、類似のcarloよりも手軽にガワデスクトップアプリを作ることができます。
(carloではアプリケーションアイコンの設定に別ライブラリが必要だったりとひと手間かかる)

追記:
以下のサンプルでは、Spotlightから起動したときに別ウィンドウとして開かれてしまうという問題があります。解決したい…

lorcaでガワアプリを作ってみよう

(今回はMacOSでMacOS向けアプリを作ってみますが、Windowsもbuild用のシェルスクリプト以外は同じでいけると思います。)

まずはGolangをインストール

brew install go
go get github.com/zserge/lorca

~/go/src/github.com/shwld/gcal-client みたいなディレクトリを作ってそこで作業します。

goファイルを作りましょう。これがガワアプリの全てです。

main.go
package main

import (
    "os"
    "os/user"
    "github.com/zserge/lorca"
)

func main() {
    user, err := user.Current()
    if err != nil {
            panic(err)
    }
    dir := user.HomeDir + "/.lorca-app"
    os.MkdirAll(dir, os.ModePerm);
    ui, _ := lorca.New("https://calendar.google.com", dir, 2000, 1000, "--start-maximized")
    defer ui.Close()
    <-ui.Done()
}

次にimage2iconとかでicon.icnsファイルを作ってディレクトリの中に配置します。
iconの画像はicons8から取得しました。

あとはbuild用のシェルスクリプトを作ればおしまい!

build-macos.sh
#!/bin/sh

APP="gCal.app"
mkdir -p $APP/Contents/{MacOS,Resources}
go build -o $APP/Contents/MacOS/gCal
cat > $APP/Contents/Info.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleExecutable</key>
    <string>gCal</string>
    <key>CFBundleIconFile</key>
    <string>icon.icns</string>
    <key>CFBundleIdentifier</key>
    <string>net.shwld.gcal-client</string>
</dict>
</plist>
EOF
cp icon.icns $APP/Contents/Resources/icon.icns
find $APP

シェルを実行するだけでアプリが出来上がりです!
ビルドがすぐに終わる上にファイルサイズが小さいのでとーってもに手軽でよい!

今回作ったのはgoogle calendarのガワアプリでソースコードはこちらです。
https://github.com/shwld/gcal-client

自分用にガワアプリ作ってお気に入りのWebサービスをもっとヘビーに使おうぜ!


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。