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

PyQt5で自分のためのIDEを作っちゃおう!

fukatani
September 17, 2019

 PyQt5で自分のためのIDEを作っちゃおう!

PyQt5でIDEをフルスクラッチで自作しようという発表です。
本資料はPycon JP 2019でスピーチさせていただきましたものです。

概要
- なぜIDEを自作したのか?
- PyQt5製IDEのアーキテクチャ
- PyQt5でまずはメモ帳を作る
- メモ帳をプログラミング用エディタに進化させる
- デバッガなどと連携させてIDEを仕上げる

IDEの全貌はhttps://github.com/fukatani/rujaion にあります。

ご来場いただいた皆様、スタッフの皆様、スポンサーの皆様誠にありがとうございました。

fukatani

September 17, 2019
Tweet

Other Decks in Programming

Transcript

  1. PyQtとは PythonのGUIキット、割と人気 IDE向けの機能も充実 - QPlainTextEdit (テキストエディタ) - QCompleter (テキスト補完) -

    QSyntaxHighlighter (シンタックスハイライト) 既存ライブラリ+PyQtを組み合わせればIDEが作れる!
  2. シンタックスハイライトの動作と実装方針 ハイライト自体は現在行のハイライトと同様 テキスト全体を走査し、正規表現にマッチする場所をハイライト ex. - def, class, importなどの予約語との一致 - #

    の後ろはコメント - 定数(2018, 3.14, None, True) - 文字列リテラル(“Hello World”) QSyntaxHighlighterを使って実装すると楽 シンタックスハイライト実行例
  3. 補完ライブラリの叩き方 >>> import jedi >>> source = """import json ...

    json.lo""" >>> jedi.Script(source, 2, len("json.lo")).completions() [<Completion: load>, <Completion: loads>] Pythonの補完なら、jediを使うのが楽 (pip install jedi) その行の 何文字目? 何行目? テキスト全体
  4. まとめ - PyQtを使ったIDEのアーキテクチャ - QPlainTextEditでメモ帳を作った - プログラミング用エディタ向け機能の実装 - オートインデント(insertPlainText) -

    現在行ハイライト - IDE機能の実装 - JediやQCompleterを使った補完 - pexpectを使った対話型デバッガの実装