Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

最近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サービスをもっとヘビーに使おうぜ!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away