PyneconeというOSSフレームワークを触り始めました

こんにちは、Yumihikiです。
久しぶりに技術面の学習が再開出来たので、今日は気になったフレームワークについて紹介します。
その名もPyneconeです。

リポジトリ
https://github.com/pynecone-io/pynecone

今話題のOpenAIによるGPT-4の発表の中でPyneconeについて触れられており、Twitterで初めてこのフレームワークの存在を知りました。
https://twitter.com/pynecone_io/status/1635751500826939393?s=20

Pyneconeはフルスタックフレームワークと紹介されており、Djangoなどと比べて個人的にはPythonのコードでフロントエンドをガシガシ書けるのが面白いなと思っています。Viewとかではなく、Pythonのコードに1remとかを書いたりしていて、Pythonなの!?と思いながら今日触ってみていました。

内部的にはNext.jsをラッピングしてPythonで動くようにしているような感じで、どのように実現しているかまではまだソースを追えていませんが、非常に興味深い。。

以下、公式リファレンスからの引用ですが、サンプルコードです。

import pynecone as pc


class State(pc.State):
    count: int = 0

    def increment(self):
        self.count += 1

    def decrement(self):
        self.count -= 1


def index():
    return pc.hstack(
        pc.button(
            "Decrement",
            color_scheme="red",
            border_radius="1em",
            on_click=State.decrement,
        ),
        pc.heading(State.count, font_size="2em"),
        pc.button(
            "Increment",
            color_scheme="green",
            border_radius="1em",
            on_click=State.increment,
        ),
    )


app = pc.App(state=State)
app.add_page(index)
app.compile()

生成されるもの(これに+-1のカウントが出来ちゃいます!)
Image

引用元
https://pynecone.io/docs/getting-started/introduction

現在はまだPublic Bata版のようでまだまだ開発中ですが、今かなりHotな印象を受けました。
こういうフレームワークがグングン伸びている状況に立ち会えるのが初めてなので、今後どうなっていくのか非常に楽しみです。

自分も早速サンプルのリポジトリがあったので、ローカル環境でうまく動かないものがあったためプルリクを立ててみたのと、Discordにも参加してみました。
Discordには行動規範的なものも書かれており、こういうものに加わるのは初めてですがしっかりしている印象を受けました。

tailwindが使えるように検討中だったり、質問など結構活発な印象を受けたので自分もこれからWatchして何かしら貢献していきたいなと思います。