pyorgというパッケージを作りました

この記事はEmacs Advent Calendar 2016 の、13日目の記事で、執筆者は @nasa9084 です。 前日はfujimisakariさんのプログラミングに役立つelisp10選 でした。 org記法でブログを書きたい 全国のEmacsユーザの皆さん、org-modeは使っていますか?私は使っています。 普段Pythonを書く私にとって、#はコメントアウトのイメージで、#を見出しに使うmarkdownは(ダメってほどじゃないですけど)なんとなく好きになれません。Emacsユーザということもあり、細かいメモを取るときや、スライドを作るときはorg-modeを使っています。 そんなわけで、慣れ親しんだorg記法。ブログを書くときも使いたいと考えました。 しかし、マークダウンで書くことができるブログや、或いはorgで書いたものをwordpressにアップすることができるelispなんかも有りましたが、どうもしっくり来ません。 そんな折に運用していたWordPressが使えなくなり、このブログシステムを作りました。 Pythonで使えるorg記法パーサも探したのですが、どれもブログで使えるようなものではなく、自分で変換機構も作成することにしました。 最初はブログシステムの中にorgをHTMLに変換するフィルターを作ればいいかな、と思って書き出したのですが、コレがなかなかうまく行かず。最終的にパーサとしてパッケージ化したので、そのお話をさせていただこうと思います。 正規表現の置換だけで実装してみた org記法を使いたいとは言っても、ブログ記事を書くのに使いたいだけなので、チェックボックスや時間に関する部分など、org-modeの大部分は必要ありません。文字の装飾部や見出し、リストが実装されれば十分です。 ですので、最初はわざわざ構文木などを作らずとも、単純に正規表現で置換すればいいのではと考えて実装を始めました。 しかしコレが大きな間違いだったのです。 リスト 問題の1つめは、ネストしたリストを使えないことでした。 単純に正規表現で行ごとに置換していく都合上、ネストしたリストを解析することができません。この段階で、ネストしたリストは使わないことにしよう、と考えました。 しかし、実際に実装してみてわかったのですが(気づくのが遅い)、問題はそれだけではありませんでした。 リストが始まったことや終わったことを判断できないのです。いま置換している行はリストの始めなのか(つまり<ul>が必要なのか)、真ん中なのか、終わりなのか、判断することができないのです。これは困りました。 スラッシュ 更に大きな問題が潜んでいました。斜体とリンクです。 ご存知のように、URLは区切り文字としてスラッシュを多用します。また、org-modeでは斜体をスラッシュで挟んだ形で表します。 このせいで、URLの一部が斜体としてマークアップされてしまう事態が発生しました。 これはちょっと困ったものです。とりあえず斜体を使わないこととしましたが、これには不満が残ります。 結局パーサとしてパッケージ化 更に、テーブルの実装ができないなど、org記法が使える!というには不満点が多すぎました。 そんなわけで、改めて外部モジュールとして、org記法のパーサを書きました。org記法で書かれたテキストを読み込み、解析し、抽象構文木を生成します。そこからHTMLを出力することも可能です。GitHub上でソースも公開しています(nasa9084/py-org )。 コレをブログシステムに組み込むことでorgでブログを書くことができるという寸法です。 また、当初予定してはいなかったのですが、gitのsubmoduleで管理するのはバージョンアップの際などいろいろと面倒なので、パッケージ化してPyPIへとアップしました(pyorg )。 現在はバージョン0.1.3として、見出し、リスト、テーブル、リンク、画像、引用、文字の強調を実装済みです。今後、少しずつ拡張予定ですが、当面はリファクタリングを進めようと思っています。 以上、pyorgのお話でした。

2016-12-12 · nasa9084

YAPC::Hokkaido 2016 SAPPOROに行ってきました

ブログを書くまでがYAPC!とは言われなかった気がしますが書きます。 昨年で終了したYAPC::Asia Tokyoから一年、新生YAPCとして開催されたYAPC::Hokkaido 2016 SAPPORO に参加しました。 YAPCはPerlのイベントで、“Yet Another Perl Conference"の略です。twitterハッシュタグは#yapcjapan でした。 当日の札幌はすごい雪で、東京発の飛行機が飛ばないという事態が発生、登壇者もなかなか札幌まで到達できず、スタッフさん達はなかなか大変な一日だったのではないかな、という印象です。 スペシャルセッションである対談セッションは、Amazon Web Service、Google、Microsoft、さくらインターネットというクラウド大手4社が集って対談を行うという、非常に豪華な一時間でした。 基調講演はrebuild.fmのmiyagawaさんで、CDNのお話という、これまた普段はなかなか聞くことができない内容でした。 そのほか、emacs界隈で有名なsyohexさん、あちこちの界隈で有名な小飼弾さんなどなど、、、なかなかに濃い内容でした。 今回は複数抽選が有り、Azure本(Azureテクノロジ入門 )とLINEビーコンが贈呈されました。私も運良くAzure本に当選し、頂くことができました。ありがたい・・・ 当日チケットは1,000円なのに、前夜祭、懇親会がそれぞれ3,500円という、不思議なチケット価格が少しおもしろかったように思います。 次回YAPCは2017年3月4日に大阪で、YAPC::Kansaiとして開催される予定です。

2016-12-09 · nasa9084

Pythonとわたし

この記事は、PyCon JP Advent Calendar 5日目へ寄せて書いた記事です。 執筆は@nasa9084 です。 昨日は寺田さんによる、PyCon JPの立ち上げ という記事でした。 Pythonと私の想い出 PyCon JPアドベントカレンダーのテーマは「Pythonと私の想い出」だそうです。 私が初めてまぁそれなりと言える程度にかけるようになったプログラミング言語がPythonでした。 なんどもCに挑戦しては挫折し、を繰り返していたのですが、Pythonのおかげで簡単なプログラムはかけるようになったんでした。 扨、すでに行き先がよくわからなくなってきているこの記事ですが、もう少し私とPythonとの関わりを書いていきましょうかね。 Pythonを使う理由 もともと、私はHTMLから、ソースコードというものをエディタで書く、という世界に入ってきたんです。小学校高学年くらいの頃だったでしょうか。 最初はホームページビルダーでWebサイトを書いていたんですが、当時(今でもあるのかな?)、小学生でも使えるJavaScript集みたいなサイトがありまして、例えば、headタグの直後にコピペするとなんかカーソルにきらきらしたのがくっついてくるようになる、とかですね、今となってはとっても懐かしい感じのものがたくさんあったわけですよ。 そんなのをコピペするために、ホームページビルダーでソースコードビュー的なものを開きまして、コピペをしていたわけですね。 HTMLなんてまだまだ書けなかった私ですが、なんとなくルールがわかるんですね。そうすると、なんだか無駄っぽいのがあるわけですよ。 そういうのを、ちょこちょこと手作業で消していってみるわけです。 今思うと、リファクタリングのはしりみたいなもんです。これが私のソースコードを編集することの原点だったんです。 ときは流れまして、Pythonという言語に出会います。 聞くところによると、この言語、インデントをきちんとしないと動作しないそうじゃないですか。だれが書いてもそれなりに読みやすいコードになると。 もともとソースコードを綺麗にするのが楽しくてソースコードを触り始めた私ですから、これはとても気に入りました。 そうして私はPythonの世界にずぶずぶと浸かっていくのでありました・・・ GitHub Repository 現在、私のGitHubリポジトリ(https://github.com/nasa9084 )の数は、ちょうど20だそうです。自分が主となって開発しているものの、意味づけという理由があったりしてOrganizationを切り分けているものもありますから、20以上30未満、といったところでしょうか。 このうち、主にPythonで書いているリポジトリは10個程度で、半分には届かないものの、かなりの割合を占めています。 PyCon JP 2016 2016年はPyCon JP 2016のスタッフをしました。PyCon JPは東京開催で、もちろんスタッフの多くは東京(または東京近郊)在住で、オフラインミーティングや作業日の開催地も東京です。 一応、都合のつく限りリモートでも参加をするんですが、これがなかなか難しいのです。 解決方法はまだわからないのですが、来年は東京で就職なので、遠方のスタッフがもっと溶け込みやすいようになにか頑張りたいと思っています。 Eureka 実は、このブログのシステムもPythonで書かれています。構成としては、プログラム部がbottle + beaker + jinja2、アプリケーションサーバがuWSGI、HTTPサーバがnginxという構成です。 現状、JavaScriptは一切使っていないため、(特に管理画面において)残念な仕様の部分が多いです。 なんとかしたい。 ブログ移転で違うシステムになりました。 まとめ的な そろそろ長くなってきましたし、もうなんの話かわからなくなってきましたので、この辺で終わりにしようと思います。 とりあえずですね。何が言いたいかというと、Pythonはいいぞということです。 ぜひPyCon JP 2017にもお越しください。

2016-12-05 · nasa9084

builderscon tokyo 2016 を開催しました!

過ぎし2016年12月3日、builderscon tokyo 2016を開催しました。 builderscon tokyo 2016には(一応)コアスタッフとして、初期のウェブサイト制作等を行いました。 blogを書くまでがbuilderscon!ということなのでブログを書きましょう。 いやね、builderscon スタッフの皆さんすごい人が揃いすぎてて、私のような若造がリモート参加だと、ちょっとしたすきに話が進んじゃってて。なかなか大変です。 ただ、そんなすごい人たちが色々と決めたり準備を進めたりするのを見るのはすごく勉強になりました。 当日のトークは、php.iniの話だったり、ビールサーバーの話だったり、キーボードをつくる話だったり、ほんとなんか、尖った話が沢山でした。 トークもね、一応応募したんですが、当然の如く落選しました。 コレは仕方ないですよ。 私もトーク採用フローに参加しましたけど、他のトークのほうが聞きたかったですもん。 次はbuilderscon tokyo 2017の開催が決まっています!今度は1000人規模ですよ! builderscon tokyo 2017 興味のある人はとりあえずSlackに入ってみるといいですよ。 builderscon slack invite form

2016-12-05 · nasa9084