[haskell]ディレクトリのリストを出力する

ディレクトリのリストを出力する。ファイル内容を出力する時と同じ要領で作ることができた。

  • dirsから”.”と”..”を除いたリストに対しmapM_でputStarLnをマップしている

haskell事始め

haskellをはじてみる。まずはファイルを扱えるようになることから。以下のコードでファイルの内容を出力するプログラムができる。

  • getArgsは引数を[String]で返してくれる。'<-‘は結果をargsに束縛する。
  • case args of は条件分岐
  • argsが'[]’空リストなら getContentsアクションの結果をputStrアクションに渡す。
  • それ以外なら、argsの各要素に無名関数(\x -> readFile x >>= putStr)をマップ

参照サイト

設計するということ

Z3 – guide

興味あってZ3のチュートリアルをやってみた。設計や検証に使えるのかを知りたかったので。

関数の定義や取りうる値の範囲を決めるところなど、なんとなくソフトウェア設計そのものをやっているみたいだ。しかも、設計をしながら検証を同時におこなえる。

設計の検証をいつでもおこなえるというのはとても良いことではないだろうか。

中原 美野

年末に飛び込んできたジャズピアニストの1stアルバムリリースニュース。USアマゾンで試聴できる。

A Ray of Light – Yoshino Nakahama

サイトはこちら

YOSHINO NAKAYARA

大学卒業後に就職したあと音楽に転向。アルバムリリースまでも数年ある。志の強さが伺える。個人的にはかなり共感できる経歴だ。

作曲、編曲とも曲調はゆったり。インテリア、雑貨ショップのバックグラウンドにはとても良いと思う。

惜しいかなピアノ演奏ではもう少し前に出て良いような気がする。

これからリリースされる曲が楽しみだ。

nvidia-304 デスクトップが表示されない

症状

ubuntu 14.04LTSのアップデートし、再ログインするとデスクトップが表示されない。

原因

カーネルモジュール”nvidia_304″のモジュール名を”nvidia”をとしているため、ロードできていない。

対策

副作用と参照透過性

副作用

副作用とは「ある機能がコンピュータの(論理的な)状態を変化させ、それ以降で得られる結果に影響を与えることをいう。」とある。要件は以下である。

  • 副作用を受ける処理には、暗黙に参照している変数がある
  • 副作用を与える処理には、暗黙に代入している変数がある

暗黙に値を参照する処理の出力は想定外のものになる。そのため機能は意図していない結果を出力する。

参照透過性

参照透過性とは「式の値はその構成要素(例えば変数や関数)によってのみ定まるということを言う。具体的には変数の値は最初に定義した値と常に同じであり、関数は同じ変数を引数として与えられれば同じ値を返すということになる。とある。要件は以下である。

  • 同じ条件を与えれば必ず同じ結果が得られる
  • 他のいかなる機能の結果にも影響を与えない

参照透過性のある処理の出力は想定内となる。そのため機能は意図した結果を出力する。

機能に欠陥が無いことは入力に対し、意図した出力となっている事で確認できる。つまり、副作用がある構造となっているものはその確認ができない。であるが、実際には暗黙に参照している変数も処理に必要なものである。つまり暗黙に参照している変数も想定内として意図した出力となることを確認すればよい。

しかしながら、暗黙に参照している変数を想定内にしていくことは容易ではない。グローバル、モジュール変数は共有のしやすさから大変便利であり、利用しているソフトウェアは多い。これらは暗黙となり易く、機能追加により肥大化しやすい。

参照透過性を制約として導入している言語は多数あるが、保守すべきソフトウェアはそうでない場合が多いだろう。だから暗黙とならない様に工夫をしていく必要がある。例えばグローバル、モジュール変数は直接参照せず関数の戻り値として受け取る。これにより関数の差し替えを行うことで意図した入出力が行えているか確認することができる。

参考文献

SIMロック解除後の携帯端末事業環境

2014年6月28日毎日新聞はSIMロック:解除を義務化へ 15年度にも実施 総務省という記事を公開した。記事で「2015年度」にも解除を「義務化」となっているが、6月30日総務省のICTサービス安心・安全研究会は、消費者保護ルールの見直し・充実に関するWGにおいて、中間取りまとめ(案)を公表し、この中でSIMロック解除のルール化において「総務省において対象端末及び解除方法並びに実行の確保を含む具体的な運用方針やスケジュール等を明らかにすることが適当である。」としている。

2015年度かどうかは定かではないが、「実行の確保」という言葉から義務化ととれる。

SIMロック解除できることが一般的になると、通信/サービスと端末の結びつきを強制することができなくなる。これについて事業者からの指摘を中間取りまとめ(案)のなかで述べているが、総じて消費者の自由を尊重する内容で「実行の確保」としている。

では、これが実現した状況を考えてみる。

まずは端末である。端末と通信/サービスを結びつけることができなくなった以上、価格競争にさらされ、そしてコモディティ化が促進されると考えられる。現在でもスマートフォンの性能を比較してみると判るがその兆候が見られる。そうなると、市場規模は拡大しても消費者が投下するコストの伸びは減っていくだろうから儲からないビジネスとなり、端末作る企業は限定されてしまうだろう。いくつかの企業で寡占化状態となり、新たに大きな付加価値をハードで実現する方法を見つけなければ新規参入のうまみはない。あるいはソフトウェアが買い替えを促進するモデルが再来する。

消費者は現在一般的に行われている販売奨励金による端末価格の割引を受けることができなくなる可能性があり、そうなれば一時的に出費が嵩むことになる。しかし、端末を今よりも長く使おうという心理がでてくるはずで、通信/サービスに支払う金額と合わせると長期的に見てコストが下がる。ただし、PCのようにOSや基幹となるソフトウェアの更新や、もしくは更新停止により端末を使いつづけることができなくなる可能性がある。

次は通信/サービスである

自由に通信/サービスを選ぶことができるようになったら消費者としてどのような選択をするか。大きくは以下のような理由だろう

  • 安い
  • 通信品質が良い(つながりやすい/速い)
  • サービスが良い(使いたいサービスがある/アフターがよい)
  • 通信事業者が販売奨励金モデルも維持しつつ、ユーザが持ち込んだ端末へも通信/サービスを提供するならば、こちらも価格競争について行けなくなる可能性がある。販売奨励金は全体として販価を押し上げるからだ。

    通信インフラを持つ事業者の救いは通信とサービスを分離することである。

    通信は品質確保と徹底したコストダウンでMVNOに振り向いてもらえるようにする。ここは一定の利益を確保できる部分である。

    サービスは差別化がまだ可能な分野である。MVNOにない規模を生かしたもの売りにする。auウォレットなど最たるものだろう。これに加え乗り物、公共施設、公的機関との連携などが考えられる。音楽や映像コンテンツといった規模が生きる分野は押さえて置くべきだろう。また、端末のアフターについて代理店のような役割を行い、アフター料を得ることができるかもしれない。消費者は安心感にコストを払う。

    MVNOも通信性能だけで競争するのは危険である。通信性能は大差がつかなくなる可能性が高い。競争するべき土俵は今後サービスになるであろう。

    さて、ここまで書いた内容をみると、携帯端末事業環境はそうとうに楽観できない状況だ。今後利益を生み出すにはいろいろな工夫が必要となるだろう。それに早く気がついて大きく舵を切れるかどうかにかかってくるのではないだろうか。

    エスケープシーケンス2

    先日のエスケープシーケンスBNFを修正。
    これでうまいこと字句解析できそうだ。