ryo511 のすべての投稿

[告知] ブログを再度引っ越します

http://ryo511.herokuapp.com/に移転して2週間しか経っていませんが、再度ブログを引っ越します。

今度の引越し先は、http://ryo511.info/です。独自ドメイン取りました。

引っ越しの理由ですが、herokuのDB使用量の上限に達したためです。herokuで利用可能なMySQLプラグインClearDBでは、5MBまで無料で使えます。しかし、Wordpressを普通に使っていると、記事を編集して保存する毎にリビジョンが作成されるため、5MBという上限はあっという間に超えてしまいます。不要なデータを削除するWordpressプラグインもありますが、だましだまし運用するのも面倒くさいので、再度引っ越しました。

引越し先はConoHaというGMOのVPSです。メモリ1GBのプランだと月額930円(税別)で、同スペックだと、さくらVPSとほぼ同じ。サイトを見れば分かるように、結構趣味的なVPSです。業務ニーズというよりはエンジニアの個人ニーズの方を重視しているんでしょうか。

今後はhttp://ryo511.info/で、更新していきます。

#yapcasia 2014 に行ってきた

今年はタイミングよく休みが取れそうだったので、8/29(金)と8/30(土)の2日通しでYAPC Asiaに参加しました。

Perlの退潮とエンジニアのお祭り

最も印象的だったトラックは、@dankogaiさんのSwiftの発表です。寝坊したため聞きそびれましたが、イベントレポートにとても興味深い一節がありました。

perlが選択されなくなってきているのは認めざるを得ないが今すぐなくなることはないし,言語は一つではないのでPerlマインドをシェアしつつそれをシフトしていけるようにしておくことが大事

実際、Web開発の世界で定番と呼べるようなコマンドラインツールで、比較的最近開発されたものの実装言語を見てみると、だいたいnode.js/Ruby/Python/Goのいずれか。「Perl製の便利ツールが出たぞ!」という話はあまり聞かないです。

Webアプリの世界においても、Perlは下火なようにみえます。昔からやっているサービス等で、社内にメンテナンスを継続する必要のあるPerl製サービスがあるとか、社内にPerlの知見と人員があるとかいった会社では今後もPerlを使い続けるだろうけど、スタートアップが選ぶのはPHP >= Ruby >> Python で、Perlはリストにも上らない。

実体験としても、Perlはさまざまな書き方を覚える楽しみがあって、ちょっとしたスクリプトを書くのはとても楽しいです。しかし、他人の書いたコードを読むのは大変だし、Perlで大規模なアプリケーションを作るには十分な規律が必要そう、という印象を受けます。

日本のPerl Mongerの代表的な人物の1人から、「perlが選択されなくなってきているのは認めざるを得ない」という発言が出てきたのは、今回のYAPCで一番印象的な出来事かな、と思います。

一方で、「Perl」の名を関したカンファレンスが1,300人もの参加者を集めるのは驚異的。同規模の技術系イベントとしてはWordpressのイベント(Wordcamp Tokyo)がありますが、こちらは入場無料。スポンサーチケットの来場者が多いとはいえ、500名の来場者が自費(3,000〜5,000円)でチケットを購入して来場するという吸引力の強さは、他のイベントにはないものです。また、来場者や発表者のバックグラウンドも必ずしもPerlだけではない。YAPC 2013の「エンジニアのエンジニアによるエンジニアのためのお祭り」という標語は、今年も受け継がれているように感じました。

個別のトークについて

Mojoliciousを使ったwebアプリケーション開発 実践編

YAPC 2014のサイトのコードを題材にして、PerlのMVCフレームワークを使った開発スタイルを学ぶトークでした。Perlは100行までの世界しか知らないので、未知の世界を垣間見れたのは良かったです。

この発表中に、YAPC 2014のコードがGitHubに上がってることを知ったので、その後サイトの英語の誤りを修正するプルリクエストを送ったりしました(@yusukebeさんにマージしていただきました!)。

Java for Perl Mongers

Javaは言語としてはイケる子だというような発表でした。Javaの欠点としてよくいわれるポイントは、だいたいはIDEが何とかしてくれる。でも、JVNの取り扱いだけはどうしても大変みたいです。。。

Lightning Talks Day 1

PECLのコミッタの方が登壇したのが印象的でした。PECLの各モジュールのメンテは個人の情熱で行われているとのことで、某モジュールのバグが5年たっても直らないとか、某モジュールが某OSでインストールできなくて泣きそうとかでも無闇に石は投げないようにしようと思いました。

半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情(5.6対応)

2日目の最初に聞いたトーク。非常にテンポよく進む、楽しいトークでした。内容面でも、最近のPHPのラクさを支えるComposer、PSR、IDEといった要素をしっかり紹介しているのが好印象でした。

それでも、ベストトーク賞を取ったのは驚きです。自分が聞いた範囲ではベストトークでしたし、実際投票もしましたが、まさか受賞するとは…。Perlの人は(というか、RubyやPythonの人も)PHPを嫌っている人が多いと思ってたので、とても意外。実際、ランチのときも隣の席で「最近はPHPやってる」「自分はPHPはグチャグチャすぎて無理」みたいな会話が繰り広げられてました。PHPがメインだけど他の言語にも手を出してるPHPerの人も結構参加していて、そういう人達の票がドサっと入った結果なのかな、と。

Perl入学式 in YAPC::Asia Tokyo 2014

自分は『初めてのPerl』をひと通り読んだ程度の知識はあるので、完全なPerl初心者というわけでもないのですが、復習も兼ねて参加してみました。受講生5人に対しTA1人という非常に至れり尽くせりな体制で、「全員が分かるまで教える」というスタイルを貫いているのが印象的でした。「Perl入学式」のコミュニティの分厚さを感じました。

Lightning Talks Day 2

立ち見でした。自分以外にも、座席が無い人が大勢。。。

まとめ

  • 「perlが選択されなくなってきているのは認めざるを得ない」
  • 一方で、Perlコミュニティは非常にアツい
  • Perlの文化が他の言語にも伝播している
  • 会場のキャパシティは無理があったのでは

『リーダブルコード』読書メモ 第1章・第2章

理解しやすいコード

  • コードを書く上で最も重要なコンセプト:コードは理解しやすくなければいけない
  • 読みやすさの基本定理:コードは他の人が最短時間で理解できるように書かなければいけない

名前に情報を詰め込む

明解な単語を選ぶ

Webページを取得するなら、getPage()よりfetchPage()やdownloadPage()の方が明確

tmpやretvalのような汎用的な単語を避ける

  • tmp という名前は、生存期間が短くて、一時的な保管が最も大切な変数にだけ使う
  • ループイテレータ(i,j,k等)は使ってもよいが、複数ある場合はそれぞれに意味のある名前をつけるべき
  • tmp・it・retval のような汎用的な名前を使うときは、それ相応の理由を用意しよう

抽象的な名前よりも具体的な名前を使う

DISALLOW_EVIL_CONSTRUCTORS → EVILがどういう意味か分からない → DISALLOW_COPY_AND_ASSIGN

–run_locally → –extra_logging と –use_ local_database の2つに分割

直交する概念は無理に 1 つにまとめようとせずに、別々に使えるようにするといい。

名前に情報を追加する

  • 変数名に値の単位を入れる:delay_secs, size_mb, max_kbps, gegrees_cw
  • 重要な属性を追加する:plaintext_password, unescaped_comment, html_utf8, data_urlenc

名前の長さを決める

  • スコープが小さければ短い名前でもいい
  • 長い名前を入力するのは問題じゃない:大抵のエディタには単語補完機能が付いている
  • 頭文字と省略形:新しいチームメイトはその名前の意味を理解できるだろうか? 理解できるなら問題ない。
  • 不要な単語を投げ捨てる:convertToString() → toString()

名前のフォーマットで情報を伝える

GoogleのC++コーディング規約の例

  • 定数は CONSTANT_NAME ではなく kConstantName:MACRO_ NAME のような #define マクロと簡単に区別できる
  • クラスのメンバ変数は、offset_ のように最後の文字がアンダースコア

WordPressにインストールしたプラグインまとめ

Disqus Comment System

各種SNSアカウントでログインしてのコメントを可能にする。

Akismet

コメント欄のスパム避け。Disqus使ってるなら不要? 商用利用でなければ無料で使える。

WP Multibyte Patch

日本語対応を改善するらしい。

JP Markdown

Markdown形式での記事投稿を可能にする。

Crayon Syntax Highliter

コードのシンタックスハイライトを効かせる。一応使えているのでこれを使っているけど、気に入らない部分も結構ある。
シンタックスハイライトプラグインとして有名なSyntaxHighlighter Evolvedは、Markdownプラグインとの相性が悪いらしく、実体参照を二重に変換してしまうのが問題(プラグイン自体に手を入れれば何とかなりそう)。

WP Social Bookmarking Light

ソーシャルボタン系のプラグインはいくつかあるが、本プラグインは作者が日本人で、はてなブックマーク等の国産サービスに対応しているのが特徴。

WP Twitter

Twitter連携。

Cloudinary

画像ホスティングサービス・Cloudinaryのサービスを利用するためのプラグイン。

WP Clean Up

DBの不要レコード(自動保存された下書き等)を消すことができる。

WordPressのTwitter連携はWP Twitterで

WordPressで投稿を行う時、Twitterに投稿の告知を行いたいことがあると思います。その際に使えるプラグインもいくつかあるようです。

最も有名なのは、 WP to Twitter でしょう。ただ、このプラグイン、投稿を行うためのTwitterアプリ開発者アカウントを作る必要があります。単に自動投稿が行いたいだけなのに、面倒くさい!(Twitterには1アプリあたりの利用者数の制限があるので、仕方ない面もあるのですが…)

その点、 WP Twitter は、自分のTwitterアカウントでWP Twitterアプリの認証を行うだけで使えます。

投稿機能が手軽に使えるだけでも嬉しいですが、さらにこのプラグインには、Twitterウィジェットも同梱されています。また、ShareThisというサービスが提供しているソーシャルメディア共有ボタンも付いてます(これはこのブログでは使ってません)。簡単かつ高機能なプラグインなので、オススメです。