Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Eelで作ってみる WHOISアプリと スライド

attakei
February 07, 2018

Eelで作ってみる WHOISアプリと スライド

みんなのPython勉強会#32で発表したLTのスライドです

attakei

February 07, 2018
Tweet

More Decks by attakei

Other Decks in Programming

Transcript

  1. Eelで作ってみる
    Eelで作ってみる
    Eelで作ってみる
    Eelで作ってみる
    Eelで作ってみる
    Eelで作ってみる
    WHOISアプリと
    WHOISアプリと
    WHOISアプリと
    WHOISアプリと
    WHOISアプリと
    WHOISアプリと
    スライド
    スライド
    スライド
    スライド
    スライド
    スライド
    @attakei
    みんなのPython勉強会 / 2018-02-07

    View full-size slide

  2. Kazuya Takei
    @attakei
    個人扱い(電撃的にLTしてるので)
    中央区でサーバサイド寄りエンジニアしてます
    誰?

    View full-size slide

  3. Eel
    A little Python library for making simple
    Electron-like HTML/JS GUI apps

    View full-size slide

  4. 現在のバージョンは、0.9.1
    2017年末ぐらいに公開された模様
    1756 Stars
    何するやつか
    Electron的なアプリをPythonで作るライブラリ
    メイン処理的な部分を、Pythonで書けるっぽい
    その他
    What is Eel
    https://github.com/ChrisKnott/Eel
    今月の頭に、MOONGIFTで紹介されていました。

    View full-size slide

  5. Demo
    Demo
    Demo
    Demo
    Demo
    Demo

    View full-size slide

  6. WHOIS
    Zone
    調べる

    View full-size slide

  7. デモ中身
    デモ中身
    デモ中身
    デモ中身
    デモ中身
    デモ中身

    View full-size slide

  8. Python side
    import eel
    from whois import whois
    @eel.expose # <--
    def get_whois(zone):
    w = whois(zone)
    return str(w)
    eel.init('web')
    eel.start('slide.html')

    View full-size slide

  9. JS side

    document.getElementById('demo-zone-btn').addEventListener('click', () => {
    var val = document.getElementById('demo-whois-input').value;
    eel.get_whois(val); // <-- Python
    let register = await eel.get_whois(val)();
    document.getElementById('demo-zone-output').innerText = register;
    });

    View full-size slide

  10. __init__.py
    browsers.py
    ちょっとだけEelの中身
    import bottle as btl, bottle.ext.websocket as wbs
    import eel.browsers as brw
    def start(*start_urls, **kwargs):
    # ( )
    brw.open(start_urls, options)
    run_lambda = lambda: btl.run(host=options['host'], port=options['port'], serv
    # ( )
    import webbrowser as wbr, sys, subprocess as sps, os
    # ( )
    def open(start_pages, options):
    # ( )
    sps.Popen(
    [chrome_path, '--app=%s' % url] + options['chromeFlags'],
    stdout=sps.PIPE, stderr=sps.PIPE)
    # ( )

    View full-size slide

  11. Pros
    コアな処理をPythonで書ける
    そして表現をHTMLで書ける
    Cons
    デフォルトのChromeを呼び出すのでChromeのインストール
    必須
    例えば呼び出し時に、Chrome Portableにすれば?
    macだと、閉じてもChromeが残る
    ???s
    ウィンドウを複数立ち上げて協調動作させられる可能性
    Pros/Cons

    View full-size slide

  12. おまけ
    ちなみに イールとは ウナギのことだ
    カバヤキにすると うまいぞ。

    View full-size slide

  13. 〜 終 〜
    〜 終 〜
    〜 終 〜
    〜 終 〜
    〜 終 〜
    〜 終 〜
    ご清聴ありがとうございました

    View full-size slide