2012年1月5日木曜日

[python] 配列の隣接する2項にそれぞれ演算を施す

Twitter 経由でお題が流れてきました。オリジナルは
で紹介されているのですが
配列の隣接する2項にそれぞれ演算を施した配列を得たい。つまり、
f (+) [1,2,3,4,5] = [3,5,7,9]
のような f が欲しい。
というお題です。 perl や javascript では
や、python では
というエントリがすでに上がっていますが、 python の場合よく考えたら一番短い入力で止まるイテレータである itertools.imap() を使わなくても入力リストは引数で与えられているわけですから、本質的には

def mapBetween( list, func ):
    return map( func, list[:-1], list[1:] )

ということになるのではないでしょうか。この辺の処理を非常に強力に記述できるのは python の特徴であるかと思いますが、ここまでくると、ほぼ標準装備といっていいような気がします。

あとは形ばかりのエラー処理(ひどい)なんかを入れて

#! /usr/bin/env python
# -*- coding: utf8 -*-

import operator

def mapBetween( list, func ):
    try:
        return map( func, list[:-1], list[1:] )
    except:
        # Todo: Implement error handling
        return []

def main():
    a = [1,2,3,4,5]
    print a
    print mapBetween( a, operator.add )
    print mapBetween( a, operator.sub )
    print mapBetween( a, operator.mul )
    print mapBetween( a, operator.div )
    print mapBetween( a, lambda x,y: y%x )

if __name__ == '__main__':
    main()

と書くと良いような気がします。実行結果は

[1, 2, 3, 4, 5]
[3, 5, 7, 9]
[-1, -1, -1, -1]
[2, 6, 12, 20]
[0, 0, 0, 0]
[0, 1, 1, 1]

となります。

世の中には色々なプログラミング言語がありますが、適材適所で便利なものを選びたいですね。

新しいブログのご紹介

ということで新しい 2012 年がスタートしたわけですが、この新年に新しいブログが立ち上がりました。




Masafumi Ohta さんとは実は OpenSolaris のコミュニティで知り合い、EeePC に OpenSolaris を載せてしまう Hack で世界中に名前を轟かせ、海外のイベントやコミュニティにも積極的に参加してきた非常にアクティブな方でございます。当時私も OpenSolaris LiveUSB Creator でにわかに世界的にブレイクしてきたこともあり、意気投合してことあるごとに議論を交わしてきました。

OpenSolaris そのものについては不本意ながらプロジェクトそのものが崩壊してしまいましたが、その後も折にふれこの業界の動向やエンジニアとしてどのように生きればよいのかといったことを議論したり、OSCなどのイベントでは一緒に結託してしょうもないネタをかましたりと、いろいろツルんでいたりします。

そのような Masafumi Ohta さんですが、pid0.org ブランドで待望の日本語からくち(?)ブログ開設、しかものっけから官僚のお話と非常に興味をそそられる部分がございます。

このブログのグダグダなテイストに飽きたらぜひ「昨日の明日のために。ていう名前のブログ」もチェックしてみてください。

2012年1月2日月曜日

あけましておめでとうございます

あけましておめでとうございます。
今年もよろしくお願いいたします。

昨年非常に印象的だった出来事はいうまでもなく東日本大震災であることは間違いないのですが、震災そのものよりもその後一体何ができるのかというのを何度も考えさせられる、そういった年であったと思います。そのような中で Hack for JapanA3 TOGETHER などを通じて志のある方々と知りあうことができた年であったのではないかと思います。もちろんこういった活動は年が変わったから終わるようなものではなく継続してとりくまなければならない課題ですので、引き続き注力していきたいと思います。

昨年「ハレとケガレのweblog 本店」の方で2011年の展望を書きましたが、こちらでは IT に関連する部分で 2012年の展望を書いてみたいと思います。

ソーシャルの力


今年は昨年以上に「ソーシャル」という概念が意識される、また意識せねばならない年になるのではないかと考えています。これは Twitter や Facebook のようなソーシャルネットワークサービスがより広まるということ以上に、人と人との繋がりがキーポイントになるということです。 Hack for Japan で私が参加して印象的だったのは、効率であるとかテクノロジといったものよりもニーズを掘り起こしてそれにアプローチをするアイディアを一緒に考え議論するということが非常に大きな役割を果たしてたということでした。

Hack for Japan 自体は震災をトリガーとしたコミュニティではあるのですが、うまくコミュニティが機能しているものは相応の輝きを持っているというごくあたり前のことを再認識させることとなりました。オープンソースのコミュニティでもコミュニティが活きているか否かでプロダクトそのものの輝きが大きく左右されるということを身を持って知りました。

単なる技術的な部分だけでなく、ソーシャルの力、コミュニティをいかに育てていけるのかというのが、この業界の鍵になってくるのではないかと思います。逆にソーシャルやコミュニティが下手なプロダクトやプロジェクトは逆境の時を迎えるのではないかと予想します。

いかに小回りができるのか


小回りがきく手法を身につけるということは今年大きな鍵になるのではないかと思います。震災の復興支援の議論では日に日に状況が変化する中で何ができるのかということが課題となることが多かったのですが、状況に即応するために小回りが利く瞬発力、hacker力というのが色々な場面で試されるそういう段階にきているのではないかと思います。

今までは仮に小回りが聞いたとしてもそれをユーザに伝える手段がなかったり、そもそも小回りどころではないリソースを費やさなければステージにすら立てないという状況でしたが、Android アプリや Web サービスであれば、 Android marketChrome Webstore などを使い、ソーシャルネットワークサービスで告知を行うことで簡単にアプリやサービスをローンチして使ってもらうことが可能な状況になりました。

企画を立案して各所にプレゼンをして資金計画を立てて開発要員も確保してようやく着手するといったビジネスのやりかたが、もしかしたら通用しづらくなってくるのではないかと思います。世の中の動向が安定しているような場合であればセオリーとかしきたりとか今までの成功体験といったものからなんとなくプランを立てることができましたが、そういったものの中に実は根拠のないまやかし的なものが多いことが露呈してしまったこともありますし、復興という名前の変化をより早いスピードで行うことが大切な状況では小回りが利くというのは非常に重要な要素になりうるのではないかと思います。

クールでないものは衰退する


あとは如何に洗練するかというのがプラスアルファで重要になるのではないかと考えています。小回りが利くということそれ自体がクールであるのですが、洗練されたものやより注目すべきものが今後増えてくるのではないかと思います。そのような中で震災前と同じような製品は埋没し市場で評価されなくなっていくのではないかと思います。

ある意味色々なものが出てくるチャンスがでてきた一方で、旧態依然のものは光を失っていくそういう時代になりつつあるのではないかと思います。

そんな中、何がクールなのかという大きな課題が目の前につきつけられているわけですが、そういったものを見分ける感覚であったり実装する能力なにを磨きつつどんどん世に問うことが重要な気がします。

そんなことをやるためのヒントとして、昨年9月にフランスのシューズブランド Palladium が公開したドキュメンタリー動画 Tokyo Rising を貼りつけておきたいと思います。ITについては触れられていませんが、大いに刺激される、私のお気に入り動画です。

Tokyo Rising: Part 1 - Pharrell's return to Tokyo

(Part 2 以降は「もっと読む」からどうぞ)