Kay チームは Kay 1.1 をリリースしました! 松尾さん、Daskalou さん、末永さん、鈴木さんのヘルプに感謝しています。

Kay は Appengine 専用フレームワークです。基本的なデザインは Django フレームワークを基にしています。

Kay 1.1 は新しい機能が含まれています。 リリースノートをここにご覧できますこのページでダウンロードできます

Kay 1.1 の新しくて主要な機能を紹介します。

cron_only

Appengine の cron 機能のビューをセキュアとするデコレータが新しく追加されています。 cron_only を使いますと、Appengine の cron システムしか叩けません。

@cron_only
def my_cron_view(request):
    # ...
    return response

cron_onlyのドキュメントをここにご覧できます

ページネーション API

Kay 1.1 で、ビューで簡単にページネーションを実装できるため、ページネーション API を追加しました。

from kay.utils.paginator import Paginator, InvalidPage, EmptyPage
from kay.utils import render_to_response

def listing(request):
    contact_list = Contacts.all()
    paginator = Paginator(contact_list, 25) # Show 25 contacts per page

    # Make sure page request is an int. If not, deliver first page.
    try:
        page = int(request.args.get('page', '1'))
    except ValueError:
        page = 1

    # If page request (9999) is out of range, deliver last page of results.
    try:
        contacts = paginator.page(page)
    except (EmptyPage, InvalidPage):
        contacts = paginator.page(paginator.num_pages)

    return render_to_response('list.html', {"contacts": contacts})

ページオブジェクトはテンプレートで、色な情報を表示できます。

{% for contact in contacts.object_list %}
{# Each "contact" is a Contact model object. #}
{{ contact.full_name|upper }}<br />
...
{% endfor %}

<div class="pagination">
    <span class="step-links">
        {% if contacts.has_previous %}
            <a href="?page={{ contacts.previous_page_number }}">previous</a>
        {% endif %}

        <span class="current">
            Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
        </span>

        {% if contacts.has_next %}
            <a href="?page={{ contacts.next_page_number }}">next</a>
        {% endif %}
    </span>
</div>

ページネーションAPI はできるだけ、データストアのRPCコールを減らすように設計しました。例えば、 num_pagescount をアクセスしないで、 start_index や、 end_index を使っても、 count() RPCコードをしない。

ページネーションAPIのドキュメントをここにご覧できます

ライブ設定

アプリケーションを Appengine にデプロイする時に、すべてのインスタンスを強制に落とすため、レータンシーが急に上がったり、アプリケーションが遅くなったりする場合があります。 ライブ設定は、アプリケーションをデプロイせずに、変更できるグローバル設定の仕組みです。ライブ設定を使えば、インスタンスが落ちないので、遅くなりません。

ライブ設定は、 Unicode キーと Unicode 値のペアで、 memcached と同じような API を用意していますが、 memcached と違って、早くて、データを永続する仕組みになっています。 プログラムで設定することもでき:

from kay.ext.live_settings import live_settings

value = live_settings.get("my.settings.key", "default_value")

live_settings.set("my.settings.key", "new-value")

カスタム管理画面でも、設定できます:


http://static.ianlewis.org/prod/img/652/live_settings.png

ライブ設定のドキュメントをここでご覧できます

AppStatsMiddleware

Kay 1.1 では、新しい AppStatsMiddleware が追加されています。このミドルウエアを MIDDLEWARE_CLASSES に追加するだけで、 Appstats を有効にすることができます。

MIDDLEWARE_CLASSES = (
    # ...
    'kay.ext.appstats.middleware.AppStatsMiddleware',
    # ...
)

AppStatsMiddleware はライブ設定と連動することができて、 Appstats をON・OFFすることがデプロイせずに設定できます。

Appstats エクステンションのドキュメントをここにご覧できます

EReporter

Kay 1.1 では、 kay.ext.ereporter という拡張アプリケーションが追加されています。このアプリケーションはサイトで発生したエラーの内容を保存し、管理画面で表示する。そして、デイリーレポートも送信することができます。 Appengine SDK の EReporter に似ていますが、 Kay の ADMINS とメール関連設定と連動します。


http://static.ianlewis.org/prod/img/652/ereporter.png

EReporter のドキュメントはここでご覧できます

まとめ

Kay 1.1 では新しい機能がいくつかを追加されていて、Appengine デベロッパーの皆さんがもっと簡単にアプリケーションを作れると嬉しいです!

もちろん、フィードバックは大歓迎します。 Kay's のプロジェクトページ を見てみてください。 バグ報告や、機能追加要望などを Issuesページ でお願いします。日本語も大丈夫で、日本人デベロッパーも対応します。 メーリングリスト. もありますので、もし、質問や問題があれば、まずメールを投げてください! これから、Kay 2.0 にも向けて考えていますので、大きい機能など、内部を改造するような要望があれば、いまがチャンスなので、ぜひ教えてください!

Kay を使っている皆さん、これからも、宜しくお願いします!