2012年9月29日土曜日

留学生活振り返り(Financial Statistics)

はじめに

おはようございます。当ブログにアクセス頂き、ありがとうございます。
統計には前から興味のあった、たなけんです。
本エントリでは、留学中に学んだ統計学について記載します。

学んだこと

確率、分散など統計の基礎となる数学から、t検定、χ二乗検定、回帰分析、重回帰分析といった統計手法を学びました。これまでも概念は理解していたのですが、実際に演習で手を動かしたことによって、統計手法を『理解している』から『使える』レベルに引き上げることが出来たと思います。
他の科目でも、統計知識が求められることも多く(学術誌の結果を解釈する際など)、この科目から学んだことは、その後の授業でも非常に役立ちました。

思い出

他の学科の生徒も取得する、共通系科目だったため、200席程ある映画館の様な教室(実際に夜は映画を上映していました)での授業でした。講師は、同年代あるいはやや年下ではないかと思われる、若い男性だったのですが、100人以上の学生を前に、非常に堂々と講義を進めていました。優秀な人間は年齢に関係なく、選抜されて登用されるのだということを印象付けられた講義でした。

授業タイトル一覧


  • Introduction
  • Descriptive statistics
  • Probability
  • Random variables
  • Continuous probability ad distributions
  • Sampling and sampling distributions
  • Estimation
  • Hypothesis testing
  • The comparison of two populations
  • Analysis of variance
  • Chi-squared test
  • Simple liner regression and correlation
  • Multiple regression


今回の作業は以上。最後までお読み頂き、ありがとうございました。
たなけん(作業時間15分)

2012年9月28日金曜日

留学生活振り返り(Electronic Commerce for Managers)

はじめに

おはようございます。当ブログにアクセス頂き、ありがとうございます。
留学前は、ソフトウェアエンジニアをしていた、たなけんです。
本エントリでは、留学中に学んだITの授業について記載します。

学んだこと

授業は下記の3つの要素から構成されていました。
基本的なITシステムの概念(入力、処理、出力)
個別のシステムの説明(Eコマース、SNS、ナレッジマネジメント、ERP、BIなど)
システム導入(セキュリティ、設計、見積もり、プロジェクトマネジメント)
授業名はElectronic Commerce for Managersですが、ECに特に特化しておらず、業務にITシステムを取り入れる際に必要となる知識全般をカバーしている内容でした。
システムの種類が体系的に分類され、それぞれに事例が紹介されたため、既知の知識を再構成することが出来ました。

思い出

事例についてディスカッションが思い出深いです。システムについての知識は他の学生よりもあったので、ディスカッションの中で言いたいことはたくさんありました。しかし、語学力がついていかず、上手く説明出来ないもどかしさに苦しんだことはいまでもはっきりと覚えています。
その時を知るクラスメイトからは『この1年で健太は英語話すの上手になったよね。あの時は何を言っているか95%分からなかったよ。』と言われたりもします。下手なりにも一生懸命話したことから、クラスメイトと仲良くなるきっかけにもなった、そんな授業でした。
最近は英語での議論にも慣れて来ましたが、英語が上手く話せるようになったというよりも、自分のアイデアを簡略化して表現することに慣れたのだと思います。(日本ではA->B->C->Dの順と話していた事をD->Aと結論から先に述べて、簡単な説明でとりあえず済ますイメージ。相手が理解していなければ、さらに質問してくるので、そのタイミングでB、Cの内容は話す。)

授業タイトル一覧

Introduction
Information systems concepts and overview
Managing data and knowledge
Electronic business, E-Commerce and M-Commerce
Communications and social networks
Enterprise and inter-organizational systems
Business intelligence and managing decisions
Risks and security
Design and acquisition
The economics of IT
Information system ethics and impacts

今回の作業は以上。最後までお読み頂き、ありがとうございました。
たなけん(作業時間15分)

留学生活振り返り(Financial Statements and Reporting)

はじめに

おはようございます。当ブログにアクセス頂き、ありがとうございます。
複式簿記はわりと得意な、たなけんです。
本エントリでは、留学中に学んだ財務会計について記載します。

学んだこと

財務会計全般をカバーする内容の濃い科目でした。
複式簿記の付け方、そして簿記のデータから損益計算書、貸借対照表およびキャッシュフロー報告書といった財務諸表の作成まで、この授業で叩き込まれました。
会計を学ぶ上で、避けては通れない概念を体得することが出来たと思います。

思い出

とにかく試験が厳しく、『○月○日誰それから材料をつけで購入』などの取引の説明文が60項目あり、それをまず複式簿記で記録、そこから総勘定元帳へ転記し財務諸表を作成するものでした。試験時間も短く、生徒はマシーン状態でひたすら書き続け、計算し続ける、非常に緊張感のある試験でした。
教授によると公認会計士試験より難しくしたとのことでした。教授は『ANUはオーストラリアのトップ校なのだから一般の試験(公認会計士試験)より難しくて当然』仰っていました。オーストラリアの公認会計士の試験は日本ほどは難しくない(学部か大学院で会計を専攻していないと受験出来ないが、合格率は高い)とは言え、厳しかったです。
後日談となりますが、例年と難易度が異なり過ぎた為に生徒からのクレームも多く、その教授は翌年ANUを去ることとなりました。
履修が大変な科目でしたが、結果として、取引内容を見れば即座に、『これは貸方○○で借方××、結果として貸借対照表の負債が増える』と回答できるようになり、会計の感覚を体に染み付けるという意味では有意義な科目でした。

授業のタイトル一覧(1授業で平均2トピック履修)


  • Introduction
  • Financial statements for decision making
  • The accounting equation
  • The basics of double entry accounting
  • Journal entries
  • General ledgers
  • Accounting for GST
  • Adjusting entries
  • Completion of the accounting cycle
  • Accounting for retailing
  • Accounting for inventory
  • Accounting systems
  • Control accounts
  • Accounting for partnerships
  • Accounting for companies
  • Analysis & interpretations of financial statements
  • Cash management
  • Accounting for receivables
  • Accounting for non current assets
  • Regulation and the conceptual framework
  • Accounting for liabilities
  • Presentation of financial statements
  • Preparing the statements of cash flows

本日の作業は以上。最後までお読み頂き、ありがとうございました。
たなけん(作業時間15分)

2012年9月13日木曜日

第3イテレーションの振り返り

はじめに

おはようございます。当ブログにアクセス頂き、ありがとうございます。
肩甲骨のストレッチの効果か、姿勢が良くなったと最近言われた、たなけんです。
本エントリでは、第3イテレーションを振り返ります。

Datomicおよび各種ライブラリを利用した所感

長所

Clojureで書かれている製品である為、クエリにそのままClojureの式(自作の関数も含む)を使う事が出来る

Clojureで書かれている製品である為、Clojureのデータをそのまま収納する事が出来る

原理的にはスケールアウトが可能
クエリおよびデータの追加、変更がほぼClojureのS式である(Clojureネイティブである)点が唯一にして最大の長所だと思います。RDBMSを利用していると、例えばSELECT文ではSQLの書式に従い、SQLの関数を利用して結果を得て、そこからClojureのデータに束縛し直す必要があります。しかし、Datomicではfindの条件にそのままClojureの関数が使えるため、SQLとClojureのデータを行き来するような処理は必要なく、手早く開発することができました。

短所


  • 無料版ではfreeおよびmemプロトコルのみであるため、スケールアウト性能を検証することができない
  • BIツールのように複数のテーブルを結合するなど、様々な角度からデータを解析する方法が確立されていない
  • 集約系の関数など、自力で実装しなくてはならない

RDBMSであればスタースキーマなど、分析対象のデータを多次元的に扱う手法が確立されています。Datomicの柔軟なクエリ構築力を考慮すると、恐らく良い実装方法があるのだろうと、ぼんやりとそのポテンシャルは感じたのですが、今の時点では具体的な方法までは見えていません。

短所としてBIツールの様な多次元表の利用を挙げましたが、「プログラマブルなクエリが書ける、マクロも書ける」というDatomicの潜在能力を引き出せば、SQLを使うよりもスマートにこれらのソフトウェアを実装することができると(根拠は薄弱ですが)直観しています。

Webアプリケーションを一通り書いてみて気付いたこと(およびClojure愛)

これまで、主なClojureの使い道はツール作成でした。しかし、今回はプレゼンテーション層からパーシステント層までClojureを用いて、小さいながらもWebアプリケーションを完成させることができました。そこで気付いたことを振り返りたいと思います。

自転車あるいは糊

Clojureは私にとって最も手に馴染んだプログラミング言語です。そのしっくり来る感じを例えると「自転車」です。気軽に、どこへでも、最短距離で移動できる乗り物です。
他のプログラミング言語を同様に例えるとすれば、Cは飛行機、Javaは鉄道、Pythonはバスでしょうか。それぞれに利点はありますが、家の裏の公園に行く為に、飛行場を作ったり、線路を引くのは、得たい結果に対して労力が釣り合わない気がします。その点Clojureは行きたい場所へ、そこが車さえも入り込めない路地であっても、最短経路でたどり着くことができます。
また、目的地が遠ければ、鉄道や飛行機を乗り継いで行けばいいのです。駅と飛行場の間は自転車で移動し、最後のバス停から終着地点までの間だけ自転車に乗る事もできます。これは必要に応じてCやJavaで書かれたアプリケーションやライブラリをClojureから使って、目的の機能を実現している時の、僕の頭の中にあるイメージです。
実際、ブログでも紹介したTesseractやImagemagickをClojureから操作し、H2 Database Engineへデータを格納後、帳票を出力するツールの実装は、この乗り継ぎの比喩の良い実例と言えるでしょう。そしてWebアプリケーションに関しても、一から書いたコードは少なく、殆どはライブラリが提供する機能をつなぎ合わせたものでした。
多くの人はこう言うでしょう。「それは自転車ではなくて糊だよ」と

マクロ

自転車の例えはまだ続きます。車のエンジンをバラしてまた組み挙げられる人はどれくらい居るでしょうか、またそれに掛かる時間は?工具は?
バラして組み直す事、これはすなわち言語そのもののハックのしやすさの比喩といえます。
Clojureはシンプルです。特殊形式とマクロと関数しかルールが無いと言っても良いでしょう。構造が簡潔であり、なおかつユーザが手を加える余地を十分に残しています。マクロは、簡単に言えば言語の構文を規定し直す機能です。私は多用はしませんが、「いざとなればマクロでなんとでもできる」という信頼感があります。メカニズムを把握していて、そこに手を入れることができる感覚、それは自転車いじりに似ています。自動車のエンジンや、電車のモーターは、固そうですし、私には複雑過ぎます。
マクロの存在がClojureをシンプルかつ柔軟にしており、マクロがあるため僕はClojureを信頼して使い込む事ができています。この感覚が、やはり私にとって自転車なのです。

万人の自転車へ

Clojureが私にとって自転車である事、それは多くの人にとってどうでも良い話だと思います。しかし、Clojureは他の人にとっても自転車となり得る言語だとしたら?
私はJavaのアプリケーションやライブラリを鉄道に例えました。同様にClojureのライブラリは地下鉄や高速道路網と例えても良いかもしれません。多くの人が利用する点から点への移動には、より効率よく移動するための道が敷かれるからです。そして、それら全ての乗り物に、だれでも自転車を携えて乗ることができます。
このブログを読まれた方が、「Clojure使ってみようかな」と思ってもらえるように、これからもClojureの魅力を伝えていきたいと思います。

私に足りないもの

自転車は簡単に乗れますが、奥が深い乗り物です。フォームの善し悪しで、疲労度が大きく変わります。
私はこれまで、全くの我流でコードを書散らしてきました。自転車で言えばがむしゃらに漕いでいる状態です。
Webアプリを設計、開発する中で何度も「どう書くのが関数型言語の特性を活かしているのか?」と自問しつつも、まず動く物を優先して、ここまで漕ぎ進めて来ました。
当初の目標であったプレゼンテーション層からパーシステント層まで実装を終えた今、次に何をすべきかと考えました、私には何が足りないのだろうか?と。
そこで考え至った結論が、フォームの改善です。プログラミングの基礎です。

年内の目標

コンピュータ書の古典"SICP(計算機プログラムの構造と解釈)"の原著が本家サイトから無料で読む事ができます。関数型プログラミングのエッセンスを掴むべく、このSICPの原著を年末までに読み切りたいと考えています。
学習記録をブログに綴る事で、読者の皆様にも関数型言語でのプログラミングの公理のようなものをお伝えできればと考えています。

運用フェーズに向けて

Webアプリの開発フェーズはほぼ終了しましたが、まだこのプロジェクトは終わっていません。そうです、Herokuにデプロイしてサービスを公開、運用ノウハウを蓄積するというタスクが残っています。また、運用しながらメンテナンス性を高める為にリファクタリングしたり、ログ解析ツールそして機能追加など、改修のアイデアはまだまだあります。
SICPリーディングと平行して、Webアプリプロジェクトも継続していきます。

今回の作業は以上。最後までお読み頂き、ありがとうございました。
たなけん(作業時間1時間)


Datomicの利用(3)

はじめに

おはようございます。当ブログにアクセス頂き、ありがとうございます。
テストコードを書く時、気持ちの昂りを抑えきれない、たなけんです。
本エントリでは、Datomicを利用したClojureアプリケーションのテストについて記述します。

本体の改修

テストコードを実行した際、想定した通りにデータの改廃がされていなかったため、本体コードを改修しました。
元のソースでは、定数connの宣言部で一度だけt/connect関数を呼び、その接続を他の関数内で利用していました。しかし、この場合、データベースが削除されても接続(peer)のキャッシュにデータが乗っているため、検索が可能な状態でした。
テストコードでは、各テストの前にデータベースを削除し、全てのデータを初期化する必要があったため、find-all関数などに含まれている接続オブジェクトも更新(具体的にはt/connect関数の呼び直し)が必要となりました。
そこで、接続オブジェクトを各関数の引数とし、接続オブジェクトの更新が必要無い本体コードでは、一度だけ宣言したconnを、テストコードでは毎回呼び直したオブジェクトを利用する様変更しました。


単体テスト

事前条件として、peerのGC、データベースの削除、追加、スキーマの作成を行っています。その後データ挿入、検索のテスト。再度条件を初期化し、利用制限確認関数の境界値テストを実施するようにしました。


結合テスト

手動でテストを実施しました。
データベースを初期化、限界件数を1にした状態で、画面を操作し、1度目の検索は正常に実行され、2度目の検索でsorryメッセージが表示されることを確認しました。

今回の作業は以上。最後までお読み頂き、ありがとうございました。
たなけん(作業時間30分)

Datomicの利用(2)

はじめに

おはようございます。当ブログにアクセス頂き、ありがとうございます。
西川きよし師匠の「小さなことからこつこつと」に、とても共感している、たなけんです。
本エントリでは、ClojureアプリケーションでのDatomicの利用について記載します。

仕様

今回のWebアプリケーションでは、利用制限のある外部APIを使用します。そのため、一日の間に、一定回数を超えるアクセスがあった場合、外部APIへの利用を止める処理が必要となります。
そこで、アプリケーションから外部APIへ問い合わせた内容を永続化しておき、次のアクセスの前に、その日のAPIコール回数を(データベース/Datomic)確認し、利用制限を超えている場合は、その旨をユーザに伝えることとします。
APIへの問い合わせ内容として、まずは検索した単語と検索した日時を記録します。
また、調べられている単語や、アクセスされている日時の傾向を把握する為に、入力された全ての履歴を表示する画面も追加します。

実装

実装の大部分は、thearthurさんのgithubのコードを参考にさせて頂きました。

プロジェクトファイル


Datomicのクライアント(Datomic用語でpeer)であるcom.datomic/datomic-freeおよび、時間計算に便利な(Joda Time LibraryのClojureラッパ)ライブラリであるclj-timeを追加しました。

ns マクロ


プロジェクトファイル同様Datomicおよびclj-timeライブラリの利用を宣言します。

  • use節: datomic.apiのうちdbとqは名前空間を付けずに呼び出せ、他の関数は名前空間のエイリアスにdを仕様
  • require節: clj-time.coreおよびclj.time.coerceの名前空間のエイリアスを設定


データベースおよびスキーマの作成(DDL)


データベース及びスキーマを定義します。無料版のDatomicではメモリにデータを保存するmemプロトコルと、H2 Database Engineを内部で利用し、ファイルにデータを保存するfreeプロトコルを利用することができます。
Datomicのスキーマ定義はRDBMSとはやや異なり、属性毎に個別に定義を宣言することでエンティティ全体を組み立てる形式となります。
具体的には、上記ソースでは、エンティティがworkで、wordとtimeがworkの属性として宣言されています。(それぞれ型はstringとinstant(日時))
RDBMSでの定義を(単純化して)考えると、テーブル名がworkとなり、wordとtimeはテーブルworkの中の列となります。
RDBMSのようにトップダウンでスキーマを定義する訳ではなく、逆にボトムアップでスキーマを定義して行きます。
実際、列の型を変えるなど、プログラミングしながら、属性を追加したり、削除したのですが、スキーマ変更に伴い、わざわざ既存のデータを変更(エクスポート&インポート)しなくても良かった点には驚きました。(RDBMSを利用している場合は、スキーマを変更した場合は、データのインポートが必須となるので)
データモデルを固める前に、いろいろと試すことができる、柔軟であるといった意味では、開発時に余計な作業でプログラマの時間を奪わない工夫がされていると感じました。
その一方、データ型が不揃いであることから、検索時の性能劣化、柔軟すぎて不整合が発生しないだろうかなど、運用時に考慮すべき課題も目につきました。

  • d/create-database関数: 引数のurlをアドレスとするデータベースを作成(データベースを作成していないと、コネクション作成時に例外が発生する点に注意が必要)
  • d/connection関数: 引数のurlで指定されたデータベースへの接続を確立する
  • d/transact関数: 引数の式をトランザクションとして実行する


データの追加および検索(DML)


スキーマの定義が管理用領域への(メタ)データの書き込みであるのに対し、データの追加はユーザ領域へのデータの書き込みとなります。(どちらも "d/transact conn データ" と書かれているのはその為です。)
add-a-work関数では、引数に単語と日時を取り、workエンティティを追加します。
find-all関数では、登録されている全てのworkエンティティを取得します。q関数の引数となっているクォートされたベクタがSQLで言う所のSELECT文に相当します。
:findに続く?n ?tは、SQLのSELECTに続く列名の様なものです。しかし、SQLとは異なり属性定義(スキーマ)に紐付いている訳ではなく、任意の文字列が利用可能です(?nameなど)。
?nおよび?tが何を表わしているのかは、続くwhere節で定義されます。
”[?e :work/word ?n]”は「任意のエンティティ?eの属性:work/wordの値は?nである」ということを宣言しています。言い換えると、任意のエンティティ?eは、属性に:work/wordを持ってることになります。つまり「?nは属性に:work/wordをもっているとあるエンティティの:work/wordの値である」ということを表わしています。
"[?e :work/time ?t]"も同様に、「?tは属性に:work/timeをもっているとあるエンティティの:work/timeの値である」となります。
では複数ある:work/wordの値と:work/timeの値が、それぞれ同一エンティティに紐付いていることはどのように示されているのでしょうか?(SQLでテーブルを結合する際に、結合する基準となる列を指定するようなイメージ)
実はDatomicでは特にキーを指定する必要がありません。なぜなら前の式”[?e :work/word ?n]”の?eと、後の式"[?e :work/time ?t]"の?eは、任意ではあるが同一のエンティティと見なすからです。Datomicのクエリで使用される名前(?nなど)は、同じ名前であれば同じオブジェクトを指していると見なされます。この結果、find-all関数の結果として、属性に:work/wordと:work/timeを持っているエンティティの、それぞれの値の集合が返されます。この仕組みをDatomicでは論理プログラミング(Logic programming)と呼んでいます。

  • time/now関数: 現在日時を取得
  • time/within?: 引数のintervalの中に引数の日時が含まれて入ればtrueを返す
  • time-coerce/to-date: Jodaのdatetime型からjava.util.Date型へ変換
  • time-coerce/from-date: java.utils.Date型からJodaのdatetime型へ変換


クライアントからのアクセスのコントロール


外部APIにアクセスする前に、その日のアクセス総数を取得し、制限を超える場合は、検索をせずにsorryメッセージを返すよう、limit?関数を追加、call-api関数を変更しました。

全履歴を取得する管理画面


httpクライアントからfind-allを呼ぶインターフェースを追加しました。

今回の作業は以上。最後までお読み頂き、ありがとうございました。
たなけん(作業時間2時間)

Datomicの利用(1)

はじめに

おはようございます。当ブログにアクセス頂き、ありがとうございます。
日本語であるにも関わらず、ロシアからのアクセスが最も多いブログを書いている、たなけんです。
本エントリではClojureアプリケーションでのDatomic利用方法(インストールまで)を記載します。

Datomicとは

Datomicとは、私が愛用しているClojureの作者である、Rich Hickey氏が開発している、新しいタイプのDBMSです。
現在では、これまで主に利用されてきたRDBMSだけではなく、KVSなどもごく普通に利用されるようになってきましたが、それらのデータベースと異なる点は何か、少し見てみましょう。

リードに重点を置いたデータ分散システム

データが更新されたタイミングで、クライアント側に持たせているキャッシュが同期されます。そのため、ノードは分散されていますが、検索前に必要なデータに関連するキャッシュを更新し検索するため、高速にデータの読み込みが可能です。その反面、データの一貫性を保証しながら書き込むため、ライトには多少のオーバーヘッドがかかります。

クライアント側でクエリを解析

通常のRDBMSではクライアントから投げられたSQL文をサーバで解釈してから、実行するのですが、Datomicはクエリの解釈をクライアントで行います。その結果、サーバ側の負荷が通常のRDBMSよりも軽くなり、少数のサーバで多数のクライアントからのアクセスを、軽快に捌くことができます。

柔軟なクエリ

ClojureひいてはLispの根本思想である『全てのプログラムはデータであり、全てのデータはプログラムである』をDatomicは体現しています。
先述の通り、クライアント側でクエリを解釈するということもあり、クエリそのものがプログラムであることを許容しています。
プログラム可能なクエリという発想は、識者をして「Datonicは10年先のテクノロジーを先取りしている」と言わしめている理由のひとつかもしれません。

インストールとトランザクタープロセスの起動

Datomicのダウンロードページより無料版をダウンロードし、任意のディレクトリに解凍します。解凍先のディレクトリに移動し、シェルに下記を入力しトランザクタープロセスを起動します。

bin/transactor config/samples/free-transactor-template.properties

デフォルトではポート4334が接続待ち受けポートとなります。
ポートやその他設定を変更するには、config/samples/free-transactor-template.propertiesファイルを編集します。

今回の作業は以上。最後までお読み頂き、ありがとうございました。
たなけん(作業時間30分)

2012年9月5日水曜日

留学生活振り返り(概要)

はじめに

おはようございます。当ブログにアクセス頂き、ありがとうございます。
奥さんの努力のおかげで、少しずつ体重が減少しつつある、たなけんです。
本エントリでは、留学生活の振り返りとして、学んだ事やキャンベラでの生活について記載します。(書いている時点では、まだ卒業していませんが。。。)
1エントリにまとめるのは難しいので、今回は概要のみ記載したいと思います。

概要

2010年6月にオーストラリアはキャンベラにあるThe Australian National University(通称ANU)に入学し、主に英語、会計そしてマネジメントについて勉強してきました。
留学した動機は、

  • ビジネス面でも専門と言える強みを持ちたい(エンジニアとして働いていましたが、会社自体はITコンサルと呼ばれる業種だったので。。。)
  • エンジニアを続ける上でも英語が出来るようになっておきたい

というものでした。
半年間語学コースで英語を学んだ後、大学院会計学科にて主に会計を、そして選択科目でMBAコースの授業を取得しました。時系列で振り返ると以下のようになります。

2010年6月〜11月(語学コース)

英語(Reading, Writing, Listening, Speaking)

2010年11月〜2011年2月(夏休み)

バイトおよび3度目、4度目の引っ越し
スラムダンクやバガボンドが図書館に置いてあったので、英語の勉強と称して漫画を読みふけっていました。

2011年2月〜11月(大学院一年目)

1年目は学部共通の授業が多かったです。

前期
Financial Statements and Reporting (共通)
Commercial Law (共通)
Electronic Commerce for Managers (共通)
Financial Statistics (共通)

後期
Management Accounting and Cost Analysis (会計)
Business Association Law (会計)
Managing the Global Supply Chain (MBA)
Financial Markets and Systems (共通)


2011年11月〜2012年2月(夏休み)

シドニーのホテル(Sheraton on the park)の財務会計部にてインターンシップ

2012年2月〜11月(大学院一年目)

1年目は会計の必須科目とMBAの授業が多かったです。

前期
Contemporary Issues in Accounting (会計)
Taxation Law (会計)
Corporate Accounting (会計)
Organisational Behaviour (MBA)

後期

Business Economics (共通)
Auditing and Assurance Services (会計)
Corporate Strategy (MBA)
A Management Framework For Business Projects (MBA)

所感

こうして振り返ってみると、なかなか考えられたカリキュラムですね。
共通科目では会計、法律、統計、財務、経済の基礎を学び、
会計専門科目では、より深く会計と法律について学びました。
MBAの授業は、様々な切り口でビジネスを理論的および実践的に理解することができたと思います。
留学で学んだことの棚卸しとして、各授業の概略を今後振り返ってみようとおもいます。
興味のある方は是非、ご一読下さい。

今回の作業は以上。最後までお読み頂き、ありがとうございました。
たなけん(作業時間15分)

2012年9月2日日曜日

私のClojure情報収集方法(Planet Clojure)

はじめに

おはようございます。当ブログにアクセス頂き、ありがとうございます。
テスト勉強で机に向かうと、机の隅々まで掃除したくなり、結局あまり勉強時間がとれない、たなけんです。
本エントリでは、私のClojure情報収集方法と、そこで目に留まった情報について記載します。

RSSフィード

RSSフィードの購読は少ない労力で、日常的に情報を摂取するには良い方法かと思います。
多いときは1日1000以上の記事に目を通していた(どんだけ暇。。。)ほどRSSジャンキーだった(※1)私ですが、今はインプットよりもアウトプット、質よりも量を意識して情報を収集および発信しています。
Clojureに関しては、Planet ClojureというサイトのRSSフィードを購読しています。
Planet Clojureの運営者Baishampayan GhoseさんとAlex Ottさんで、内容は彼らが購読しているClojure関係のブログ記事の中から、よりすぐりの記事を転載したものとなっています。
運営者の目利き力のおかげか、自力では到底見つけられない様な記事も、タイムリーに掲載されるため、非常に重宝しています。
Planet Clojureの記事は、主に以下の4カテゴリに分けられると思います。

  • Clojure本体および主要ライブラリのリリース
  • Clojureで作ったサービスの紹介やライブラリのチュートリアルなど実用系
  • On LispやSICPの例題およびProject Eulerの解答などアルゴリズム系
  • 他言語との比較など言語仕様討論系

Planet Clojureの雰囲気を掴んで貰える様、最近記憶に残った記事を手短に紹介したいと思います。

リリースメモ系

Clojure weekly Aug 17-24 2012
この記事ではClojure1.4.0で導入されたinstant literalsマクロ(他4トピックス)を紹介しています。Clojureの標準ライブラリに含まれるマクロで該当する処理ができるにも関わらす、そのマクロの存在を知らずに自分で書いてしまうことがあります。(いわゆる車輪の再発明)
RSSを通じて、こういったリリースメモ系(新規で追加されたマクロなど)に日常的に目を通しておくことで、車輪の再発明を未然に防ぎ、開発効率を高めることができるかと思います。

実用系

Building School Seating Charts in Clojure and Clojurescript
ClojureとClojurescriptを使って、Google App Engine上で稼働するWebアプリケーションを構築した際の、良い点、悪い点、便利だったライブラリを紹介した記事です。
記事の著者と同様、私もClojureとClojurescriptを使ってWebアプリケーションを構築しているので、役に立つ情報満載の記事でした。特に利用したライブラリ一覧の中で紹介されていた、セッション管理ライブラリなどは、「何かいいものないかな」と探していたところだったので、個人的にヒットでした。また、テストライブラリなども今まで知らなかったものが紹介されており、利用候補ライブラリをひとつ(どころが沢山)増やすことができました。

Using the Datomic free edition in a lein based project
こちらはClojureで書かれたデータベースDatomicのチュートリアルです。
知識ゼロの状態からでも理解できるように丁寧な解説されており、参考になりました。
DatomicについてGoogleで検索しても、バズワード的に概念だけを取り上げた記事が多く、公式のドキュメントもまだ出揃っていない状態の中、こうした良質のチュートリアルに出会えたのも、Planet Clojureのおかげだと思います。

アルゴリズム系、言語議論系はさらっと目を通す程度で、あまり読み込んでいないので、
今回は記事の紹介は控えたいと思います。

今回の作業は以上。最後までお読み頂き、ありがとうございました。
たなけん(作業時間30分)



※1 RSSジャンキーだった頃はどうしても全文をRSSリーダで読みたいという欲求がおさえきれず「まるごとRSS」の様な簡易ツールだけではなく、Yahoo pipesを使ったり、webをクロールして記事内容をRSS化するスクリプトを書いたりしていました。。。