<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>海外でも通用するエンジニアになる</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/" />
    <link rel="self" type="application/atom+xml" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/atom.xml" />
    <id>tag:el.jibun.atmarkit.co.jp,2019-03-18:/kaigaiengineer//43</id>
    <updated>2016-04-28T00:41:30Z</updated>
    <subtitle>海外IT企業で働いていた純日本人エンジニアがいろいろと考えてみる。</subtitle>

<entry>
    <title>Scala Days 2011に行ってきた(2)</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2011/06/scala-days-2011-53e2.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2011:/kaigaiengineer//43.2878</id>

    <published>2011-06-14T15:00:08Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　どうも、鹿島和郎（かしまかずお）です。最近ではScalaもいろいろな人からdi...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="技術動向" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　どうも、鹿島和郎（かしまかずお）です。最近ではScalaもいろいろな人からdisられる程度にメジャーになってきたようなので、個人的には嬉しく思います。今回は<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2011/06/scala-days-2011-4018.html">前回</a>に引き続き<a href="http://days2011.scala-lang.org/">Scala Days 2011</a>のレポートを書こうと思います。</p>



<p>　ところで、今回のイベント中、メモがてら現地からTwitterで実況中継をしていたのですが、それを @hishidama さんが Togetter にまとめてくれました。本原稿を書く際にこのまとめは非常に役に立ちましたので、ここでお礼を述べたいと思います。</p>

<ul><li><a href="http://togetter.com/li/143927">Scala Days 2011（1日目）</a></li>

<li><a href="http://togetter.com/li/144207">Scala Days 2011（2日目）</a></li></ul>

<p>　今回は予告どおり、Akkaの話を中心に書こうと思います。

</p>

<p><span style="font-size: 1.2em;"><strong>■Akka</strong></span></p>

<p><strong>○並列・分散時代の高機能ライブラリ</strong></p>

<p>　今回のScala Daysではconcurrencyというキーワードがかなり強調されていて、それに関連するセッションも多くみられました。Scalaの開発側としては世間で耳目を集める「concurrency」に対する答えとしてScalaを普及させていきたいという考えが見えました。また、Scalaを使う側としてもその部分に注目して使っている人が多いように思えます。</p>

<p>　Akkaに関して簡単に説明しますと、AkkaはもともとScalaとJavaで使える汎用ライブラリで、以下のような機能を備えています。</p>

<ul><li>Actor (含Remote Actor)</li>

<li>STM (Software Transactional Memory)</li>

<li>Agent</li></ul>



<p>　各機能に関してはAkkaの<a href="http://akka.io/">Webサイト</a>を見ていただきたいのですが、分散環境で必須となる耐障害性、負荷分散が組み込まれた高機能なライブラリとなっています。</p>

<p>　前回も少し書いたとおり、Scala界隈では約1カ月前にScalaの開発チームが中心となってTypesafeという会社を立ち上げたというニュースが話題になりましたが、そのTypesafe社にAkkaの開発チームが参加していることから、今後はAkkaの機能がScala本体に取り込まれていくものと思われます。</p>

<p>　さて、今回Akka関連のセッションは3つあったのですが、そのうちの2つを見てきました。</p>

<p><strong>○Above the Clouds: Introducing Cloudy Akka</strong></p>

<p>　「Cloud」に対応したAkkaの紹介、という感じでしょうか。内容としては最初の10分くらいはAkkaの基本的な機能のうち「分散」に関連するものの説明でした。この辺りはAkkaのサイトにあるドキュメントを読んでいれば知っている事なので、特に目新しいことはありませんでした。</p>

<p>　その後Akka 2.0で導入予定の新機能についての紹介があったのですが、こちらはかなり期待できそうな内容でした。</p>

<p>　ところで、Actorに関してご存じない方もいらっしゃるかと思いますので、ここで簡単に説明します。Actorとは、他からメッセージを受け取ってそれに応じて処理をする、1つの独立した処理のユニットです。Actorの利用者はActorに対してメッセージを投げ、結果が返ってくるまで待ってもいいですし(同期処理)、非同期で後続の処理に進み結果が返ってきた時点でそれに対する処理を実施する、ということもできます。</p>

<p>　Javaで並列処理を書こうとすると、 生のスレッドを直接扱う事が多いかと思いますが（※）、Actorモデルの場合、Actorでの処理は自動的に別スレッドで動くことになり、抽象化のレベルが一段階高くなっています。スレッドを意識しないことにより、簡潔かつ安全な並列処理が書けるようになる事が期待されます。</p>

<p><span style="font-size: 0.8em;">※その他、EJBで処理を記述してアプリケーションサーバーのスレッドプールで並列化する方法などもありますが。</span></p>

<p>　また、AkkaのRemote Actorは、その名の通りActorを分散環境で実現したものですが、プログラマーはActorがローカルにあるのかリモートにあるのかを全く意識せずに扱うことが出来ます。ノードへのActorの割当て、フェイルオーバー、ロードバランスなども下のレイヤーで行われるようで、プログラマとしては分散処理を行うシステムを従来より楽に作れるようになると思われます。</p>



<p>　なお、本稿執筆時点ではScala Days 2011の公式サイトには発表者のスライドやビデオがアップされていないのですが、このセッションのスライドは（本人の？）Dropboxにすべにアップロードされていましたので、<a href="http://t.co/VuSxoCd">リンク</a>を紹介しておきます。</p>

<p>　実は、先日<a href="http://www.scala-users.org/shibuya/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8">Scala勉強会</a>で時間をいただいてこのセッションの紹介をしたのですが、その時に</p>

<p>　「Message Driven Bean（MDB）とどう違うのか」</p>

<p>という質問がありました。先ほどの資料を見てみると、Akka 2.0で実現しようとしている機能のうち、Java EEアプリケーションサーバーやその他のミドルウェアで実現している機能と重なる部分が結構あることに気づきます。</p>

<p>　複数の選択肢の中からある1つの技術を選択するというのは、色々な要素が絡んできますし知識と経験が求められる所だと思いますが、Akka 2.0に関しては今後もう少し調査して、使いどころを見極めていきたいと考えています。</p>

<p><strong>○The Promising Future of Akka</strong></p>

<p>　こちらは前のセッションとは打って変わって、プログラミングに関するもので、&quot;<a href="http://akka.io/docs/akka/1.1.2/scala/futures.html">Future</a>&quot;というクラス（正確にはtrait）に関する説明・紹介でした。</p>

<p>　FutureはAkkaのActorを使用したプログラミングの際によく出てくるもので、Actorに対してメッセージを投げると（正確には !!! メソッドで投げた場合）Futureクラスのインスタンスが返されます。名前から想像できるとおり、将来Actor側での処理が終わった段階で、Futureクラスには処理結果がセットされます。</p>

<p>　これを使用すると、例えば2つのActorに異なるメッセージを投げて、2つの処理が完了した時点で次に進む、というような処理が簡潔に記述できます。（上述のAkkaのドキュメントから例を抜粋します）</p>

<pre>// 以下の2行はnon-blockingな処理<br />val f1 = actor1 !!! msg1 // actor1 に msg1 を投げ、Futureを得る<br />val f2 = actor2 !!! msg2 // actor2 に msg2 を投げ、Futureを得る<br /><br />// この時点では actor1, actor2 の処理は終わっていない<br /><br />// f3 は actor3 にメッセージを投げた結果のFuture<br />val f3 = for {<br />&nbsp; a: Int&nbsp; &nbsp; &lt;- f1&nbsp; // actor1 からの処理結果を a に入れる<br />&nbsp; b: Int&nbsp; &nbsp; &lt;- f2&nbsp; // actor2 からの処理結果を b に入れる<br />&nbsp; // actor1, actor2 の処理が終わった時点でactor3 に a+b を投げる<br />&nbsp; c: String &lt;- actor3 !!! (a + b)<br />} yield c<br /><br />val result = f3.get() // actor3 の処理が終わった時点で、result に結果が入る</pre>

<p><span style="font-size: 0.8em;">※ソース中のコメントは筆者が入れたもの。間違いなどがあればご指摘ください。</span></p>

<p>　ActorやFutureを使用したプログラミングは従来のプログラミングスタイルと異なる部分も多く、これも「パラダイム・シフト」の一つなのだと思います。我々プログラマとしては、そうした変化に付いていかないと仕事が無くなる確率が高くなるので、日々勉強が必要だと感じました。</p>

<p><span style="font-size: 1.2em;"><strong>■その他のセッション</strong></span></p>

<p>　最後に、Akka以外のセッションもいくつか紹介します。</p>

<p><strong>○Rogue: A Type-safe Query Language for MongoDB</strong></p>

<p>　ここ1～2年でRDBMSではない新しい形のデータストアが注目されていて、それらはまとめてNoSQLと呼ばれている事はご存知だと思いますが、<a href="http://www.mongodb.org/">MongoDB</a>はその中でもドキュメントDBと呼ばれているものの1つです。</p>

<p>　MongoDBの主な特徴としてはスキーマレスで、データはJSONを拡張したBSONという形式で保存されます。ただ、「スキーマレス」とは言え実際に使う場合には何らかのモデルクラスを用意して扱う事が殆どですし、データ自体は何らかの構造を持っているはずです。<a href="https://github.com/foursquare/rogue">Rogue</a>はそうした構造化されたデータに対して、型安全な形で問い合わせなどを行うためのライブラリ(DSL)です。</p>

<p>　Rogueを作ったのはFoursquareの開発チームなのですが、本発表はFoursquareの開発リーダー(細かい肩書きは忘れました)のJorge Ortizさんが行いました。</p>

<p>　スライドはSlideShareで既に<a href="http://www.slideshare.net/jorgeortiz85/scala-days-2011-rogue-a-typesafe-dsl-for-mongodb">公開</a>されています。</p>

<p>　上述のスライドからの例を引用しますが、以下のようなデータの場合を考えます。</p>

<pre>{<br />&nbsp; &quot;_id&quot; :<br />&nbsp; &nbsp; { &quot;oid&quot; : &quot;4ddbd194686148110d5c1ccc&quot; },<br />&nbsp; &quot;venuename&quot; : &quot;Starbucks&quot;,<br />&nbsp; &quot;mayorid&quot; : 464,<br />&nbsp; &quot;tags&quot; : [&quot;coffee&quot;, &quot;wifi&quot;, &quot;snacks&quot;],<br />&nbsp; &quot;latlng&quot; : [39.0, -74.0]<br />}</pre>

<p>mayoridには整数のみ、venuenameは文字列のみが入って欲しいところです。それに対して、Scala側で以下のようなスキーマを定義する事により、型安全な問い合わせが可能です。</p>

<pre>class Venue extends MongoRecord[Venue] {<br />&nbsp; object _id extends ObjectIdField(this)<br />&nbsp; object venuename extends StringField(this)<br />&nbsp; object mayorid extends LongField(this)<br />&nbsp; object tags extends ListField[String](this)<br />&nbsp; object latlng extends LatLngField(this)<br />}</pre>

<p>　私自身は実際にMongoDB + Rogueは使ったことないのですが、Rogueのコードサンプルを見る限りでは非常に使いやすいライブラリのようですし、他の言語でのコードと見比べても型安全かつ分かりやすいという点で、他の選択肢に引けを取らないように見えました。MongoDBの使用を検討している場合にはScala + Rogueは選択肢に含めてもいいと思います。</p>

<p>　また、MongoDBは日本のコミュニティも積極的に活動しているようです。何かあったときに誰かに聞けるというのはある技術を選ぶ際の大きな要素ですので、Scala + MongoDB + Rogueという組み合わせは今後注目していきたいと思います。</p>

<p><strong>○Node.scala - Implementing Scalable Async IO using Delimited Continuations</strong></p>

<p>　ここ最近各所で話題になっているnode.jsですが、Scalaで似たような事をやってみました、という発表。</p>

<p>　非同期I/O＋イベントドリブンというのはnode.jsと一緒ですが、それにScalaの限定継続を組み合わせることにより、node.jsのような機能を見通しがよいコードで実装できるという内容でした。</p>

<p>　本プログラムはまだ実験段階のようですが、Scalaという言語自体の潜在能力の高さを証明していると思います。</p>

<p><strong>○Porting my own programming language Onion's code from Java to Scala</strong></p>

<p>　日本人唯一の発表者である水島さんの発表。彼が作ったオリジナルのプログラミング言語であるOnionをJavaからScalaに移植する際に発生した問題点や解決方法について発表しました。</p>



<p>　Onionは型推論を備えた静的型付け言語で、Javaのバイトコードにコンパイルされるとの事で、Scalaと似た面が多いとも言えます。ソースは<a href="https://github.com/kmizu/onion/">こちら</a>で公開されています。</p>

<p>　同時間帯に行われていた別のセッションが注目を集めるような内容だったため、残念ながら聴きに来た方は少なかったのですが、このようなプログラミング言語を作ることは、プログラミング言語、JVMの仕様についての高度な理解がないと難しいですし、研究としては面白い内容だと思いました。</p>

<p>　ただ、水島さん本人も仰っていたとおり、昨年に比べて今回のScala Days 2011は実用的な側面に焦点を当てたセッションが多く、参加者の多くもそうしたものを期待していましたので、研究寄りのセッションの発表者にとっては若干厳しかったようです。</p>

<p><strong>○Managing Binary Compatability in Scala</strong></p>

<p>　1日目のKeynoteでもScalaのバージョン間でのバイナリ非互換についての話があり、バイトコードの非互換を検知してそれを書き換える事によって互換性を持たせると言っていたのですが、2日目のこのセッションではそれを実現させるための具体的な方法に関して説明があったようです。</p>

<p>　私は本セッションは聞いていないので、後日公開される予定のビデオを楽しみに待とうと思います。</p>

<p><span style="font-size: 1.2em;"><strong>■2日間の感想</strong></span></p>

<p><strong>○Scalaを「どのように使うか」という段階に入っている</strong></p>

<p>　いくつかのセッションの所でも述べた通り、海外ではScalaを単に使うだけでなく、「どのように使うか」、「他の技術に対するアドバンテージはどうか」と言った話が話題の中心であり、日本より少し先を行っているという印象を受けました。</p>

<p>　日本でも徐々にScalaの適用事例が出ているようですが、今後さらに事例が出て来る事を期待すると共に、そうした情報を積極的に公開していってもらえればと思います。よく例に出されるFoursqureは、Scalaを使った開発を行って事例を随時公開すると共に、前述のRogueのようなオープンソースソフトも公開してコミュニティに貢献していますが、そういった面も期待したいです。</p>

<p>　私自身の話をしますと、Scalaは実験的なプロジェクトでしか使っていないので、今後は実際のプロジェクトに適用していき、成果をコミュニティにフィードバックできるようになりたいと考えています。</p>

<p><strong>○Scala, Akkaは要注目の技術</strong></p>

<p>　昨年のScala Daysと異なり、「実用的」な点を強調したセッションが多かったと書きましたが、サーバーサイドを中心にScalaは一気にブレークしたという印象があります。初日のKeynoteでOdersky博士も触れていた通り、Scala関連の書籍がここ1年で随分増えてきており、日本語の書籍だけでも10冊近く出ています。</p>



<p>　Scala関連の求人は<a href="http://www.indeed.com/jobtrends?q=scala%2Cgroovy%2Cjython%2Cf%23&amp;l=">まだまだ少ない</a>ですが、ここ最近は順調に伸びているようですし、今後も注目していきたいと思います。</p>

<p>　そうした賑わいを見せるScala関連の中でも、とりわけAkkaは注目に値すると思います。上の方でも触れたとおり、Typesafe社のリソースの約半分をAkkaに投入しているそうですが、並列・分散に対するニーズの高まりの中、Akkaに対する期待は高まっているようです。</p>

<p>　実際、Scala Days 2011でのAkkaに関するセッションは部屋がほぼ満員になってました。また、上で少し触れたScala勉強会 in 秋葉原でも、Akkaに関して興味を持っている方が多いようでした。</p>

<p><strong>○日本ではあまり話題になっていない技術に触れられた</strong></p>

<p>　具体的にこれ、という名前は挙げませんが、日本では殆ど注目されていない技術をいくつか知ることが出来たのも良かったです。恐らく、日本にいても色々アンテナを張っていればそうした情報に触れられたのかもしれませんが、日本のトレンドと海外のトレンドが違うことが往々にしてありますので、たまに海外の状況を見に行くというのはなかなか有意義だと思います。</p>

<p><span style="font-size: 1.2em;"><strong>■まとめ</strong></span></p>

<p>　Scala、アツいです。日本でも海外でも。</p>

<p>　Scalaは日本のコミュニティもそこそこ活発なので、まだ試していない方は是非体験してみて下さい。日本の各所で勉強会が実施されてますので、都合が付けば参加してみてはどうでしょうか。知ってる範囲（※1）で以下にいくつか紹介します。</p>

<ul><li><a href="http://www.scala-users.org/shibuya/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8">Scala勉強会in渋谷（＆秋葉原）</a>：Scalaが絡めば何でもありの勉強会。私はほぼ毎週参加してます。</li>

<li><a href="http://atnd.org/events/14177">Scala本読書会</a>：関Javaというアイドルプログラマーの方達が始められた勉強会で、関西で月一程度で実施していくようです。@IT仲間の<a href="http://el.jibun.atmarkit.co.jp/daisukekasuya/">粕谷さん</a>も参加しています。</li>

<li><a href="http://groups.google.co.jp/group/NagoyaScala">名古屋Scala勉強会</a>：日本の関数型言語のメッカ（※2）である名古屋で頻繁に開催されている勉強会です。</li>

<li><a href="http://tenryo-kurashiki-scala.appspot.com/">天領倉敷Scala勉強会</a>：岡山で開催されている勉強会。大都市以外の勉強会は「人が集まりにくい」という共通の悩みがあると想像されますが、定期的に開催されているようです。</li>

<li>Scala勉強会 横浜：月1程度で実施のようです。</li>

<li><a href="http://sites.google.com/site/scalatohoku/">Scala勉強会＠東北</a> （現在お休み中）：2008年から毎週圧倒的な質で実施されているオンライン勉強会。毎週欠かさずあの質の高さを保つのはスゴいの一言。東日本大震災の影響で現在はお休み中ですが、復活が待たれます。</li></ul>

<p>　それではまた。<span style="font-size: 0.8em;"><br /><br />※1 ここに載っていない勉強会の関係者の方、私が知らないだけなんですみません。</span></p>

<p><span style="font-size: 0.8em;">※2 どういう経緯でメッカになったのかはよく知りません。</span></p>]]>
        
    </content>
</entry>

<entry>
    <title>Scala Days 2011に行ってきた</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2011/06/scala-days-2011-4018.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2011:/kaigaiengineer//43.2877</id>

    <published>2011-06-09T02:42:08Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　どうも、鹿島和郎（かしまかずお）です。前回のコラムを書いたのが例の大震災直後だ...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="技術動向" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　どうも、鹿島和郎（かしまかずお）です。前回のコラムを書いたのが例の大震災直後だったので、約3ヶ月ぶりとなりますが、皆様はいかがお過ごしだったでしょうか。私の方はというと、地震直後は何となく気分がそわそわして仕事にあまり集中できず、4月くらいからようやく落ち着いてきたと思ったら、今度は仕事で忙しくなってしまい、ずるずると6月になってしまいました(正直ネタが切れてたのもあります)。</p>

<p>　さて、突然ですが、この原稿は羽田空港でサンフランシスコ行きの飛行機を待っている間に書き始めたものです。6月2日～3日の2日間、アメリカのスタンフォード大学で開催された<a href="http://days2011.scala-lang.org/">Scala Days 2011</a>というイベントに参加するためです。</p>

<p>　本コラムを読んでくださっている方はご存じかもしれませんが、昨年の9月に思い立ってScalaというプログラミング言語を勉強し始めて半年以上が経ちました。Scalaを勉強し始めて1週間も経たないうちに参加したScala座というイベントでは<a href="http://days2010.scala-lang.org/">2010年のScala Days</a>に参加した方の発表があって、それ以来Scala Daysには興味は持っていたのですが、今回仕事でちょうどキリが良かったということもあり、思い切って参加することになりました。</p>

<p>　2日間に渡って開催された本イベントのうち、個人的に興味のあるセッションを中心に紹介したいと思います。プログラムは<a href="http://days2011.scala-lang.org/program">こちら</a>。</p>

<p><span style="font-size: 1.2em;"><strong>■Keynote by Martin Odersky</strong></span></p>

<p><strong>○実用段階に入ったScala</strong></p>

<p>　Scala Days 2011は、Scalaの作者であるMartin Odersky博士のState of ScalaというタイトルのKeynoteで始まりました。まずScalaの歴史を簡単に紹介して、その後現在のScalaの状況と今後の展開について話しました。去年も同じような内容の話を少ししていましたが、去年に比べてScalaが使われている場面が随分増えてきて、実際、スライドで紹介されていたScalaを使っている企業のリストには、今までこの手の話では必ず取り上げられていたfoursquareなどに加えて、VMwareやAmazon.comなどが加わっていて、Scalaが今までより一般的になってきたように見えます。</p>

<p>　彼のScalaを作ったキッカケの1つが、関数型プログラミング(FP)とオブジェクト指向プログラミング(OOP)を1つの実用的な言語として実現させる事だったという話がありましたが、ここ数年で注目を集めている新しい言語の中でも、とりわけScalaは「実用的」という部分に大きな重点を置いているように思えます。</p>

<p><strong>○並列化という大きなトレンドの中でのScala</strong></p>

<p>　本Keynote、そして今回のScala Daysの他の発表を見ると「並列化」というのが1つの大きなキーワードとなっています。今世紀初頭まではHWのCPUクロックの上昇という形で処理性能力の向上が進んできたのですが、ここ数年で一気にマルチコア化という方向にシフトしてきており、マルチコアをいかに効率よく使っていくかというのが、現代のコンピュータ言語に求められている大きな要件の1つとなっています。</p>

<p>　OOPが今のように広く使われるようになった理由の1つとして、GUIという領域に対する問題解決の手法として、それまでの方法よりもOOPの方が優れていたというのがあったのですが、FPに対する並列コンピューティングというのがまさにOOPに対するGUIにあたり、今後、並列コンピューティングの重要性が増すにつれてFPの重要性・利用シーンが増してくると話していました。</p>

<p>　これからの並列化に対するアプローチとして挙げていたのが、メッセージパッシングを使用したActorモデル、エージェントモデル、Software Transactional Memory（とスレッドの併用？）の3つで、従来のスレッド+共有リソースに対するロックという方式は、今後はあまり使われなくなると話していました。</p>

<p>　並列化関連ではScala 2.9で取り入れられた「並列コレクション（※）」に加えて、「分散コレクション(distributed collections)」という単語も出てきました。本機能のリリーススケジュールは未定との事でしたが、実現すれば興味深い機能だと思います。</p>

<p><span style="font-size: 0.8em;">※JavaでいうListやMapに対する処理を並列で実行できるもの。例えば、Listのすべての要素に対して何かの処理をする際、Javaであればfor文で各要素に対して処理しなければいけないが、Scalaの並列コレクションでは、Javaのfor文の中で行うような処理を並列化できる。</span></p>

<p><strong>○Scalaのさらなる普及のために</strong></p>

<p>　並列化以外にもいくつかの話が出ていて、開発環境の重要性などについても触れていました。開発環境は、Scala利用者の多くから出ていた不満の１つで、ここ最近ではScala開発チームが多くのリソースをEclipseのScalaプラグインに投入していて（※）、実際、最近のベータバージョンではかなり安定して使えるようになっているので、今後が期待できると思います。</p>

<p><span style="font-size: 0.8em;">※別のセッションでの質疑応答によると、Scala開発チームなどが元となって立ち上げた<a href="http://typesafe.com/">Typesafe</a>社のリソースの約半分を投入しているそうです。</span></p>

<p>　また、本Keynoteの最後で質疑応答がいくつかあったのですが、日本人の水島さんが</p>

<p>　「日本では関数型言語は難しいという印象を持たれているが、それに対してはどう考えているか」</p>

<p>という質問をしました。それに対するOdersky博士の回答の中で、</p>

<p>　「FPが難しいという意見は別に日本に限った話ではなく、世界中で聞かれる事だ。FPはパラダイム・シフトだから(多くの人には)難しく見える。OOPがでた時も同じような意見が出たが、それはOOPもパラダイム・シフトだったからだ。」</p>

<p>というようなことを言っていました。</p>

<p><strong><span style="font-size: 1.2em;">■TT Session 4: Scala enterprise experiences</span></strong></p>

<p>　今回のScala Days 2011で「並列」と共に大きなキーワードとなっていたのが「enterprise」で、Scalaが研究者やプログラミング言語のファンのためだけでなく、実際に企業でどう使っていくかという内容のセッションがそれなりにありました。</p>

<p>　2日目最後のパネルディスカッションのタイトルが「Scala in the Enterprise, What will it Take?」でしたので、「実用的な言語」としてScalaを企業でどう使っていくのか、というステージに入っているという点が昨年とは違うと感じました。</p>

<p><strong>○Scala on Android: Real-world Experience at Bump Tehnologies</strong></p>

<p>　まずはBumpという人気のスマートフォンアプリのAndroid版がScalaを使っているようで、実際にどう使われているのかという話をtipsや問題点などと絡めて紹介していました。</p>

<p>　「なぜScalaを使うのか」に関しては、開発者の生産性の向上、そして優秀な開発者を雇うため、という2つを挙げていました。シリコンバレーでは優秀な開発者を雇うのが非常に難しいそうですが（※）、新しい技術・言語を使う事が、それらの技術・言語に興味のあるレベルの高い技術者を集めることにつながると話していました。</p>

<p>　ただ、実際にScalaでAndroidアプリを作るにはいろいろ厄介な問題もあるようで、Scalaはしばらくはサーバサイドを中心に使われていくものと思われます。</p>

<p><span style="font-size: 0.8em;">※実際に、企業に所属しているプレゼンターの殆どは、「We're hiring.」という内容を最初か最後のスライドに含めていました。</span></p>

<p><strong>○Pedestrian Scala: Applying Scala to Performance Challenges in the Cable TV Industry</strong></p>

<p>　2番目がケーブルTV会社向けのシステムでScalaを使ったプロジェクトの話でした。ここの会社ではCATV向けの広告配信のシステムでScalaを使ったとの事です(視聴者の属性に合わせて広告を配信するような感じでした)。それまで使っていた、Java, Groovy, Hibernateを使った「レガシー」なシステムではパフォーマンスに関する問題があったそうですが、Scalaに切り替えたことによってそれは解消されたとのこと。</p>

<p>　また、Scalaを使ったシステムに切り替えたことによるメリットを、顧客からの立場と技術的な面の2通り説明していました。</p>

<p>　顧客の立場からのメリットとしては、以下が挙げられていました。</p>

<ul><li>要求された時間内に処理が完了するシステムができた</li>

<li>(処理速度向上により)ハードウェアコストを下げられた</li>

<li>Javaに比べてコードの行数が減ったため、開発コストを下げられた</li>

<li>メンテナンス性が増した</li></ul>

<p>　技術的なメリットとしては、以下を挙げていました。</p>

<ul><li>Scalaの並列関係の機能を使うことによるパフォーマンス向上</li>

<li>Javaのようにスケーラブルで、かつ、Groovyのように素早い開発速度</li>

<li>ビジネス課題の数学的な部分に対する解決の為のFPの適用</li>

<li>開発者の熱意が得られる(enthusiasm)</li></ul>

<p>　最後の質疑応答では、</p>

<p>　「Hibernateは何に置き換えたのか」</p>

<p>という質問に対して、</p>

<p>　「ORマッパーをいくつか検討したが、結局生のJDBCを使うことにした」</p>

<p>と回答していました。一応補足すると、ScalaからもHibernateやJPAは使うことができるのですが、どうしてもコードがJavaっぽくなってしまうと思うので、Scalaで違和感なく使えるORMが出てくるのを期待したいところです。</p>

<p>　また、どうやって上司を説得したのかという話が本編中でも質疑応答の時にも出ましたが、彼の場合は直接の上司が保守的でOKしなかったため、その上のマネージャーに話を通して、OKしてもらったそうです。また、プロジェクトの結果が上々だったので、その上位のマネージャーが現在では会社内でScalaのサポーターになってくれていて、他のプロジェクトにも使おうという動きになっているそうです。</p>

<p>　我々技術者は(組織に属している場合は特に)、新しい技術を使うことで何をもたらすことが出来るかというメリットを明確に提示しつつ、必要に応じてこうした根回しもする必要があると再認識させられました。</p>

<p>　また、社内の技術者で抵抗する人はいなかったのかという質問に対しては、チーム全体にScalaの使用を強要するのではなく、Scalaに興味のある人を集めてチームを作ったのでそうした抵抗はなかったとのこと。先程の上司に対する根回しもそうですが、開発リーダー・マネージャ層がうまくプランを練って導入することが成功の秘訣だと感じました。これは新しい技術の導入に限った話ではありませんが。</p>

<p><strong>○Scala at Bizo</strong></p>

<p>　3番目が、Bizoという会社でのScalaを使ったプロジェクトの話でした。Google Analyticsのような広告関連のプラットフォームだそうです。毎月2-3百万のリクエストを捌いていて、また毎年400％のペースで増加しているとの事ですので、データの規模としてはかなりの規模と言って良いと思います。</p>

<p>　プログラミング言語はScala, Ruby, Java, JavaScriptを適材適所で使っているそうですが、インフラはすべてAmazon Web Services上に載せているとの事でした。</p>

<p>　必ず聞かれる「Why Scala?」に対しての答えとして、生産性、そして並列化(が容易にできる事)とパフォーマンスの3つを挙げていました。</p>

<p>　最初はRubyでプロトタイプを作ったのですが、本番のシステムをScalaで書き換えてからは約15倍高速になったそうです。ただ、これはScalaに限った話ではなく、JVM上で動作する言語であれば、大体同じような結果になると思われます。</p>

<p>　使っている技術に関しては、従来通りivyなども使っていて、必ずしも一度に全てを新しい技術に置き換える必要はないと言っていました。これは他の発表や、去年のScala Daysの発表などでも聞かれた話で、各組織の状況に応じて柔軟に進めていく必要があるという事だと思います。</p>

<p>　JavaとScalaの相互運用性に関しての話も出ていて、ScalaからJavaのコードを呼ぶのは全く問題がないとのことで、これは自分も同感です。JavaからScalaに関しては色々面倒なようで、彼らは基本的にはthriftを間に挟んでRPC経由でScalaの機能を使っているようです。</p>

<p>　その他、 Scalaの標準ライブラリにバグがあった時の対処方法については</p>

<ul><li>その機能を使うのを避ける</li>

<li>同等の機能を自分で実装する</li>

<li>ライブラリの問題点を修正する(そして開発チームにパッチを送る)</li>

<li>Typesafe社から有償サポートを受ける</li></ul>

<p>という選択肢を挙げていましたが、彼らは自分たちで修正するという選択肢を選んだそうです。その修正が必ずしも本体のソースに取り込まれてリリースされるとは限らないため、彼らは独自でScalaのライブラリをビルドして使っているそうです。このへんはearly adopterならではの悩みという感じがします。</p>

<p><strong><span style="font-size: 1.2em;">■終わりに</span></strong></p>

<p>　長くなりましたので、今回はここまでにします。次回は分散関連の機能が大幅に強化される予定の<a href="http://akka.io/">Akka</a>についてのセッションを中心にレポートします。話を聞いた限りではかなり期待できそうで、分散処理が必要なシステムを開発しているのであれば、Scala + Akkaは検討すべき選択肢だと言えます。</p>

<p>それではまた。</p>]]>
        
    </content>
</entry>

<entry>
    <title>新しい双方向参加型エンターテインメント</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2011/03/post-ed43.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2011:/kaigaiengineer//43.2876</id>

    <published>2011-03-17T10:58:57Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　どうも、鹿島和郎（かしまかずお）です。まず、先日の東北関東大震災で被災された方...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="コミュニティ活動" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　どうも、鹿島和郎（かしまかずお）です。まず、先日の東北関東大震災で被災された方々にはお見舞いを申し上げます。ここ1週間はテレビもネットも地震一色で、暗い気分の方も多いかと思います。正直、地震に関する話題を避けようかどうか少し迷ったのですが、今回だけは少し地震関連で話を書こうと思います。もううんざり、という方は今回はスキップしてください。</p>

<p><span style="font-size: 1.2em;"><strong>■海外生活中に災害の当事者となったら</strong></span></p>

<p>　海外生活をしている時に災害が起きたら、どうなるでしょうか。主に2つのパターンがあると思いますので、それぞれについて少し書きます。</p>

<p><strong>○自分のそばで災害が起きたら</strong></p>

<p>　カナダに住んでいた時の知り合いの何人かが、日本に来て英語の先生をやっているのですが（真面目な先生です）、地震発生数日以内に2名ほどが日本を離れました。また、他の数名も離日を検討中ですし、しばらく西日本に行くと言って東京を離れた人や検討中の人も数名いて、彼らの不安な心境が窺えます。</p>

<p>　その中には結構仲の良かった人もいて、話を聞いた瞬間は何となく自分や自分たちが見捨てられたような、子供っぽい感覚にとらわれたのですが、ちょっと考えてみると多くの人にとって外国で暮らすというのはそれなりに不安があるものなので、自国に帰るというのは当り前の選択肢の1つなのでしょう。</p>

<p>　私が海外に住んでいた間は特に大きな災害、政変、戦争などもなく、大きな出来事と言えるのは身内が病気になったこととリーマンショックの2つくらいだったと記憶しています。ただ、実際のところ、その2つが私の帰国理由のそれなり部分を占めていましたので、もし私が外国にいる間に今回の大災害のようなことが起きたとしたら、恐らく帰国していたでしょう。</p>

<p>　海外に住んでいる方の中には、もう日本に戻る気がない方もそれなりにいますが、そうでない方は日本に戻った場合の生活についてある程度考えておいた方がいいかもしれません。</p>

<p><strong>○身内・知り合いの側で災害が起きたら</strong></p>

<p>　逆に、自分がもし今外国にいるとしたら、家族や友人の事で心配だと思います。私は語学の勉強も兼ねて、海外のニュースサイトをちょくちょくチェックするのですが、どこの国のサイトでも悲惨な映像をこれでもかというぐらい載せています。大半の外国人は日本の地理についての知識がほとんどありません。冗談ではなく、日本と中国の区別が付いていない人もそれなりの数がいます。そうした人たちが、日本人全員がこのような惨状に陥っているかのような錯覚を覚えたとしても不思議ではありません。</p>

<p>　日本人であれば、震源地は東北地方で大きな被害が出たのは東北と北関東の一部、という状況は大体理解していると思いますが、それでも情報が少なかったり海外のメディアの報道で混乱したりしている人も多いようです。</p>

<p>　私は地震発生から数日後に、主に外国に住んでる友人向けにFacebookで簡単なメモを書きました。たいした内容でもなく、以下のようなものです。</p>

<ul><li>状況

<ul>
<li>東北は大変。</li>

<li>関東は揺れたけど大したことない。</li>

<li>関西以西は問題なし。</li>
</ul></li>

<li>やめてほしいこと
<ul>
<li>回線が逼迫しているので電話しないで。</li>

<li>現地に行って救助活動ってのは邪魔なだけだからやめて。</li>

<li>食料や衣類を送らないで（代わりにお金を送って）。</li>
</ul>
</li>

<li>お願い

<ul><li>友達とかを励ましてあげて。</li>

<li>日本に住んでる人は節電して。</li>

<li>お金に余裕があったら寄付して。</li></ul>

</li></ul>



<p>　こんな内容ですら、「こっちのメディアの情報だと状況が良く分からないから助かる」とか言われるぐらいなので、いかに混乱しているかが分かるかと思います。</p>

<p><span style="font-size: 1.2em;"><strong>■非当事者の場合</strong></span></p>

<p>　上の話に出てくる人たちは、いずれもある種の当事者ですが、もちろん全員が全員当事者のわけではありません。</p>

<p><strong>○Facebook上でのとある出来事</strong></p>

<p>　私が海外に住んでいた時にはすでにFacebookはみんな使っていて、私のFacebookの友達リストには仲のいい友達からちょっとした知り合い程度の人までいろんな人がいます。Twitterであれば1人で複数アカウントを持つことが可能なので、「仕事用」「個人用」とか分ける事ができるのですが、Facebookでは複数アカウントは規約で禁止されているためそうはいきません。人数が少ない間は気にならなくても、いろんな人がFacebookの「友達」に入ってくると余計なことまで気を配らなければいけません。</p>

<p>　実際に（多分）一度しか会ったことがない人から、地震の数日後にFacebookのチャット機能で話しかけられました。短いのでコメント付きで全部載せます。</p>

<p><strong>その人：</strong>hello<strong><br /></strong></p>

<p><strong>鹿島：</strong>hi <span style="font-size: 0.8em;">（誰こいつ？）</span><strong><br /></strong></p>

<p><strong>鹿島：</strong>how are you? <span style="font-size: 0.8em;">（誰か知らんけど一応挨拶しとくか）</span><strong><br /></strong></p>

<p><strong>その人：</strong>good<strong><br /></strong></p>

<p><strong>その人：</strong>too bad what is happening in Japan<strong><br /></strong></p>

<p><strong>その人：</strong>is your family ok?<strong><br /></strong></p>

<p><strong>鹿島：</strong>yeah <span style="font-size: 0.8em;">（自分も家族も問題なしって何回も書いてるんだけどなぁ。やれやれ）</span><strong><br /></strong></p>

<p><strong>鹿島：</strong>our family is near tokyo, which is far from the epicenter. <span style="font-size: 0.8em;">（うちは震源地から遠いって一応説明しとこう）</span><strong><br /></strong></p>

<p><strong>その人：</strong>I heard it is pretty bad... <span style="font-size: 0.8em;">（普通、glad to hear that ぐらい言うだろ……）</span><strong><br /></strong></p>

<p><strong>その人：</strong>it is horrible what is happening <span style="font-size: 0.8em;">（人の話を聞く気はまったくないな……）</span><strong><br /></strong></p>

<p><strong>鹿島：</strong>yes, it is in northern japan.<strong><br /></strong></p>

<p><strong>その人：</strong>ok friend<strong><br /></strong></p>

<p><strong>その人：</strong>I am out<strong><br /></strong></p>

<p><strong>鹿島：</strong>bye</p>

<p>　この人が、私や私の家族のことを気にかけていないのは文面からも明らかだと思います。「大変だった」とか「怖かった」とかそういう反応を期待していたのではないでしょうか。</p>

<p><span style="font-size: 0.8em;">※もちろんこういう人だけでなく、ちゃんとしたの友達からも暖かいメッセージをいくつももらって、そっちはありがたかったです。</span></p>

<p><strong>○広がった世界と希薄な現実感</strong></p>

<p>　この会話の直後は非常に腹立たしかったのですが、よく考えるとこうしたことが起こるのは彼だけの責任ではないようにも思えます。上の方で触れたとおり、海外メディアでは「見栄えのいい」ニュースを大きく扱っています。瓦礫で埋め尽くされた町、途方にくれる人、原発の爆発事故、メルトダウンの「可能性」、さまざまな悲劇（と一部の心温まる話題）などなど。</p>

<p>　もう20年も前になりますが、湾岸戦争は史上初めてTV中継された戦争ということで、当時いろいろと論議を巻き起こし、しばしば「TVゲームのような」とか「ワイドショー」という言葉で形容されていました。私もその時のテレビ映像を何となく覚えていますが、たくさんの人命が失われていたのは確かなのですが、とにかく現実感がなかったように記憶しています。</p>

<p>　インターネットや交通網が発達し、人間の行動範囲や情報を得られる範囲が格段に広がりましたが、人間の処理能力・認知能力というのはそれほど変わっていないはずで、人間が「現実」として認知できる世界の広さというのはそれ程広がっていないのではないかと思います。</p>

<p>　私自身、東京で激しい揺れは経験しましたが、特に怪我もなく自宅も特に大きな被害はありませんでしたし、あまりに現実離れしていて映画のようだったせいなのかもしれませんが、TVでの東北の映像を見ても何となく現実感を感じませんでした。</p>

<p>　私の場合、それでも知り合いに宮城出身の人がいたり、親戚が福島で被災したりしたので、心配したり不安な気持ちになりましたが、東北地方の方々と同じような言葉で「大変だった」とか「不安だった」とか私が語るのは不誠実に思えます。また、福島の親戚の無事を聞いてからは、なおさら東北で起きている現実と、東京で比較的平穏に暮らしている自分を結びつけることが難しく感じました。</p>

<p>　もちろん、個人差はありますし、私は良く言えば「図太い」、悪く言えば「無神経な」人間ですが、東京に住んでいる人間がこんな感じですので、例えば九州出身で東北には知り合いが1人もいない人、さらには外国に住んでいて日本人の親しい友人がいない人、そうした人達にとってはあまり現実味がない出来事なのではないかと思います。</p>

<p><strong>○無関心→片方向→双方向</strong></p>

<p>　昔であれば、新聞で「ヨーロッパの××という国で内戦があった」という記事を見ても、「大変そうだな」という感想を持つか、せいぜいその国から輸入している資源なりの供給を心配する程度だったと思います。対岸の火事、無関心と一言で言ってもよいかもしれません。</p>

<p>　現在でも、人間のその辺りの感覚は根本的には変わっていないと思いますが、今と昔で違うことは、地球の裏の状況が映像化され、しかも「見栄えのいい」ある種のエンターテインメントとして提供されている点です。これは地球の裏に限らず日本国内のテレビでも同様で、津波の映像を繰り返し流したり、悲しみにくれる被災者の表情を執拗に追って、悲劇をエンターテインメントとして提供しています。</p>

<p>　また、ここ最近では映像などの「エンターテインメント」を享受するだけでなく、Facebook、Skype、Twitterなどの双方向メディアでその「エンターテインメント」の一部となることができます。今回の東北関東大震災が、被害地から離れたところでは、双方向参加型エンターテインメントとして機能しているのです。なかなか残酷な社会になった、と感じざるを得ません。前述の彼は、悲劇映画のいちシーンになったような感覚で、日本人「被災者」の私に声をかけてきたものと思われます。</p>

<p>　災害発生地から遠く離れた場所にいる人が、災害をあまり現実として感じないのはどうしようもないことですし、彼らに「被災者の気持ちになってみろ」と言うのは無理な要求です。ただ、そうした「外野」が災害をネタにした「エンターテインメント」を楽しむことこそ「不謹慎」ですし、さらには無神経に「エンターテインメント」の参加者として楽しもうというのは厳に慎むべきでしょう。</p>

<p><span style="font-size: 1.2em;"><strong>■我々外野がすべきこと</strong></span></p>

<p><strong>○エンターテインメントの一部となる事を拒否する</strong></p>

<p>　今回の事件では多くの方が被害を受けました。そうした方々に対して有形無形の援助の仕方があると思いますし、可能な限りそうしたことを行うべきでしょう。</p>

<p>　ただ、私を含め、多くの日本人は被災者ではありません。我々「外野」は自分が外野である事を認識し、そうした援助を行う際には自分の行動が「エンターテインメント」の一部になっていないかを常に気にしつつ行う必要があると思います（自戒の意味も込めてます）。</p>

<p><strong>○同情するなら金をくれ</strong></p>

<p>　伝え聞くところによると被災者の方々の状況は相当、過酷なようです。そんな被災地東北では安っぽいドラマや同情は、誰も必要としていないのではないかと思います。そうした状況下、自衛隊でもレスキュー隊でも医者でもない我々ITエンジニアができる一番効果的な援助は、間違いなく金銭的なものだと思います。</p>

<p>　100円でも200円でもいいですし、余裕があればもっと多額の寄付をする事が我々にできる一番の援助だと思います。</p>

<p><strong>○ITでできること</strong></p>

<p>　今回の大震災で、正直、ITができることの少なさを感じた人も結構いたかと思います（実際にはITに限らず、我々のほとんどが非力なのですが）。そんな中、災害情報のミラーサイトをいち早く提供したり、避難所情報とかをまとめたり、できる範囲で努力している方々も多くいたようで、そういう方々には頭が下がる思いです。</p>

<p>　今後IT関連で考えていかなければならないこととして、</p>

<ul><li>災害を想定した冗長化</li>

<li>古いサーバの集約（仮想化）による節電</li></ul>

<p>などがぱっと思い浮かびますが、それ以外にもいろいろな教訓が得られたかと思います。そうした教訓を今後に生かすのも我々がやらなければいけないことだと思います。これもITに限った話ではありませんが。</p>

<p><span style="font-size: 1.2em;"><strong>■終わりに</strong></span></p>

<p>　今回の大震災はあまりに大きな出来事で、いろいろ言いたいことがあるような気もしつつも、あまりまとまりません。私個人は徐々に平静を取り戻してきたので、次回以降は通常営業で行こうと思います。</p>

<p>　それではまた。</p>]]>
        
    </content>
</entry>

<entry>
    <title>海外に住みたい！？</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2011/03/post-f0cb.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2011:/kaigaiengineer//43.2875</id>

    <published>2011-03-03T14:45:11Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　どうも、鹿島和郎（かしまかずお）です。エンジニアライフのコラムニストにも海外で...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="ワークスタイル" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　どうも、鹿島和郎（かしまかずお）です。エンジニアライフのコラムニストにも海外でお仕事をされている方が増えているようで、「海外エンジニア」というカテゴリができていますが、業界全体としても否応なしに海外との関わりが強くなっていると思います。</p>

<p>　ITエンジニアである皆さんの海外（海外の方）との関わるケースとしては、主に以下のようなものが挙げられるかと思います。</p>

<ul><li>仕事</li>

<ul>
<li>日本企業勤務</li>
<ul>
<li>業務の海外へのアウトソーシング（含オフショア開発）</li>

<li>自社あるいは顧客の海外進出</li>
</ul>
<li>（国内の）外資系企業勤務</li>
<ul>
<li>本社、他国の支社との会議、出張</li>

<li>転勤</li>
</ul>
<li>（国外の）外資系企業勤務</li>
</ul>

<li>仕事以外</li>
<ul>
<li>旅行</li>

<li>移住</li></ul>
</ul>

<p>　アウトソーシングに関しては、専門の方がいろいろいらっしゃいますし、海外での勤務に関しては以前に<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/all_entrylist.html">本コラム</a>でも少し取り上げたかと思いますので、今回は少し趣を変えて、ITエンジニアの人生設計における1つの選択肢として、「海外移住」というのを私個人の経験・考えなどを中心に書いていこうと思います。</p>

<p>　個人的な話が多く、あまり万人に役に立つ内容ではない事を、あらかじめお断りしておきます。</p>

<p><strong><span style="font-size: 1.2em;">■理由</span></strong></p>

<p>　海外移住を目指す理由はいろいろあると思います。</p>

<ol><li>「○○の本場」で働きたい</li>

<li>日本の労働環境に馴染めない</li>

<li>日本の（今の会社の）先行きに対する不安・悲観</li>

<li>「海外に住む」という事自体に何となく興味がある</li>

<li>退職後にのんびりしたい</li></ol>

<p><strong>1．「ITの本場」</strong></p>

<p>　やはり、IT業界で働く人にとってはシリコンバレーというのは憧れの地と言ってもいいかと思いますので、「本場のIT企業で働きたい！」というのは、海外（この場合はシリコンバレー）移住の理由としては大きなものだと思います。</p>

<p>　また、先日公開された「<a href="http://www.socialnetwork-movie.jp/">ソーシャルネットワーク</a>」を観て、海外で働きたいと思った方も多いのではないでしょうか。私が良く参加している<a href="http://www.scala-users.org/shibuya/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8">Scala勉強会 in 渋谷</a>でも、何名かの方は海外で働いてみたいと話しています。</p>

<p>　IT業界でもさらに分野を絞ったり、あるいは特定の働きたい企業がある場合には、シリコンバレー以外の場所を目指すことになるかもしれません。例えば、私が以前住んでいたモントリオールでは、3D CGソフトのSoftimage社や、ゲームソフトメーカーのUbisoft社の開発拠点があったりして、割とゲーム関係の仕事をしている人が多かったので、そういう分野の人にとっては、目的地となり得るかもしれません。</p>

<p><strong>2．日本の労働環境に馴染めない</strong></p>

<p>　最近ではエンジニアライフでも<a href="http://el.jibun.atmarkit.co.jp/jibunlove/2010/08/post-55bd-3.html">メンタルヘルス特集</a>が組まれたりして、この問題の認知度が高まってきています。鬱病などの原因がすべて労働環境に起因するわけではありませんが、仕事というのは生活の大きな部分を占めますので、職場での問題から病を患う方も多いと思います。</p>

<p>　そうした方々にとっては、もしかしたら日本で働くより海外で働いた方がいいケースも考えられます。海外は海外でストレスの原因の元はたくさんあるのですが、それに関しては後ほど述べます。</p>

<p><strong>3．日本の先行きに対する不安・悲観</strong></p>

<p>　日本の将来に何となく不安を持っている人は多いようです。その不安感が具体的な根拠に基づくものなのか漠然としたものなのかは置いておくとして、実際にその様なことを言う人は周りにも結構います。</p>

<p>　希望あふれる（ように見える）他の国で生活してみたい、というのも十分自然な理由だと思います。</p>

<p><strong>4．「海外に住む」という事自体に何となく興味がある</strong></p>

<p>　私が海外に移った時の理由は大部分がこれです。ずっと日本に住んでいると、やはり外国での生活に興味が湧きますし、憧れみたいなものもありました。こうした理由で海外に住むというのもありかと思います。</p>

<p><strong>5．退職後にのんびりしたい</strong></p>

<p>　前項と少し関連しますが、退職後は好きな場所でのんびり、あるいは憧れの地で暮らしたいという人は多いかと思います。最近はどうか知りませんが、メディアで田舎暮らしがちょっとブームになった事がありましたが、それの延長で退職後に海外に住む方もそれなりにいらっしゃいます。</p>

<p>　東南アジアでは、そうした退職者向けの特別なビザの制度がある国がいくつかあります。私が一時期住んでいたフィリピンのセブ島では、日本食レストランとかも結構あって、退職して現地に在住している方々や現地駐在員などでそれなりに繁盛していました。</p>

<p><strong><span style="font-size: 1.2em;">■方法</span></strong></p>

<p>　海外移住の方法ですが、現実的には2種類に限られると思います。</p>

<ol><li>現地企業に就職して数年間働き、その後永住権を取得</li>

<li>前述の退職者向け永住ビザを取得</li></ol>

<p>　念のため書きますと、永住権≠国籍です。</p>

<p>　「○○の永住権を取得する（した、したい）」と言う方に対して「日本を捨てるのか！」みたいな反応をされる方がたまにいらっしゃいますので。</p>

<p><strong>1．就労ビザ → 永住権</strong></p>

<p>　現地企業、あるいは日系企業の現地支社に採用され就労ビザを取得。そこで数年間働いてその間に永住権を取得する、という方法です。実務経験、そこそこの語学力がある方は、この方法が選択肢になるかと思います。</p>

<p>　就労ビザの取得方法、各国の転職市場は国によって大きく異なるので、まずは行きたい国をいくつか候補に挙げて、それらの国について調べることをお勧めします。</p>

<p>　私自身はアメリカで働いた経験はないのですが、知り合いの話ではビザ取得が大変かつ面倒で、永住権（グリーンカード）の取得もかなりの長い道のりのようです。</p>

<p>　私はお隣のカナダで3年位住んでいたのですが、当時はIT業界向けの優遇措置があって就労ビザが取りやすかったのですが、現在その制度は基本的には終了したようです。ただ、どこの国でも優秀なIT技術者は不足していますので、他の国でも同様の優遇措置があるかもしれません。</p>

<p>　ビザに関しては私の<a href="http://www.kaigai-engineer.com/blog/?tag=%E3%83%93%E3%82%B6">ブログ</a>の方にも書いていますので、よければそちらもご覧になってください。</p>

<p>　また、現時点では英語力が足りない人には、インターンも選択肢になりうると思います。アメリカの場合はインターンは就労ビザとは別のカテゴリーになっていますし、そこで業務経験・語学力を磨いて次のステップに、というのも割と自然な流れだと思います。</p>

<p>　なお、（最近は数は多くありませんが）私自身もインターンの紹介・サポートなどを行っていますので、ご興味のある方はお問い合わせください。</p>

<p><strong>2．退職者向け永住ビザを取得</strong>

</p>

<p>　東南アジアでは、一定の金額を預けることによりその国の永住権がもらえるという、主に退職者向けの制度を持っている国がいくつかあります。</p>

<p>　具体的にはフィリピン、タイ、インドネシアがそうです。国によって細かい点は異なりますが、大体以下のような条件です。</p>

<ul><li>一定年齢以上（50歳～55歳）の人が対象</li>

<li>（為替により異なりますが）200万円前後を預ける必要がある</li></ul>

<p>　フィリピンの場合は、35歳以上の人も同ビザを取得可能です。その場合の預ける金額は400万強（$50,000）に増えますが。</p>

<p>　200万円というのは、車の購入や豪華な結婚式をあきらめれば、何とか手の届く金額ではないかと思います。もちろんそれ以外にも月々の生活費がかかりますので、実際には年金などがないと難しいかもしれませんが。</p>

<p>　私も何かで一発大もうけをして、東南アジアかどこかのビーチリゾートでのんびり暮らしたいなぁと思ってますが、なかなか難しそうです。</p>

<p><strong>3．その他</strong></p>

<p>　永住ではありませんが、大学生であれば、学校によっては交換留学プログラムがありますので、そういうのに応募してみてはどうでしょうか。</p>

<p>　一度就職してから海外に住もうと思うと、ほとんどの人は仕事を辞める必要があるでしょうし、結構リスクが高いと思います。大学生の交換留学、短期留学でしたら、そうしたリスクを気にせずに海外での生活を経験できるので、そうした機会があればぜひお勧めしたいです。</p>

<p><span style="font-size: 1.2em;"><strong>■環境の違い</strong></span></p>

<p><strong>○日本でダメなら海外でもダメ？</strong></p>



<p>　前の方で、日本の労働環境に馴染めない方が多くいるという事を少し書きました。そうした人が海外に行く（行きたい）と口にすると、</p>

<p>　「日本でダメなやつはどこに行ってもダメ」</p>

<p>　とか言い出す人がいます。</p>

<p>　言わんとすることは分かりますし、50％ぐらいは正しいのかもしれませんが、少なくとも50％は間違いです。</p>

<p>　以前の<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/06/it2-f18b.html">コラム</a>で、日本で勉強した事や業務経験は、海外でも生かせることが多い、という内容を書きました。裏を返すと、技術不足・経験不足のために日本であまり評価されていないエンジニアの場合、海外に行っても活躍できる可能性はそれ程高くないと思われます。</p>

<p>　そういった意味では上述の言葉は（ある程度）正しいのですが、仕事に求められるのは技術・経験だけでなく、コミュニケーションが占める割合も多いと思いますが、コミュニケーションの仕方、作法が日本と海外（※）では大きく異なります。技術や経験があっても、日本では対人関係でストレスを感じてしまう人が、他の国に行ってのびのびと実力を発揮できるようになるケースも実際にあります。</p>

<p><span style="font-size: 0.8em;">※海外の場合も、もちろん国によっても異なります。</span></p>

<p><strong>○日本の方が合う人も</strong></p>

<p>　ただし、逆のケースも当然ありえます。短期での滞在では気にならない様な事も、長期滞在あるいは永住の場合にはストレスになったりします。</p>

<ul><li>母国語で会話できない</li>

<li>料理が口に合わない</li>

<li>文化に馴染めない</li>

<li>家族、古くからの友達が周りにいない</li></ul>

<p>　海外就職、海外移住に関してはとかく、いい面ばかりが表に出てきがちです。海外に出て水を得た魚のように活躍している方々がいる一方、水が合わずに帰国した人、海外に住んでいるものの日々ストレスを感じながら生活をしていて、しかも諸般の事情から帰国したくても帰国できない人たちがいる事も事実です。</p>

<p><strong>○お試しするのが一番だけど……</strong></p>

<p>　過去の似たような話題の時と同じような結論になってしまい申し訳ないのですが、やっぱり本格的に海外移住の前に一度試してみるのが一番だと思います。</p>

<p>　ただ、その機会を作るのがなかなか難しいのも承知しています。大学生であれば交換留学や自費での短期留学ができますし、若い方なら会社を辞めて1年くらい日本を離れてもまだやり直しが利きやすいですが、現状ですと30を過ぎたあたりから選択肢がだんだん少なくなっていきます。</p>

<p>　最近ではGREEの海外進出が話題になりましたが、同じように日本の会社がどんどん海外に進出して、日本人が海外で働く機会が今より増えてくるといいですね。</p>

<p><span style="font-size: 1.2em;"><strong>■まとめ</strong></span></p>

<p>　まとまりの無い話をつらつらと書いてきたので、まとめるのも難しいのですが、一応まとめです。</p>

<p>　望む望まざるに関わらず、今後は海外との関わりが増えてくると思います。そうした中、仕事をする場所の選択肢として日本以外の国を加えるとともに、生活の拠点に関しても海外を選択肢にしてみてはどうでしょうか。</p>

<p>　それではまた次回。</p>]]>
        
    </content>
</entry>

<entry>
    <title>コネで実現する海外就職</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2011/01/post-95cc.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2011:/kaigaiengineer//43.2874</id>

    <published>2011-01-30T09:47:00Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　どうも、鹿島和郎（かしまかずお）です。前回のコラムで、「次回は英語勉強会の報告...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="キャリア" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　どうも、鹿島和郎（かしまかずお）です。前回の<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2011/01/post-e542.html">コラム</a>で、「次回は英語勉強会の報告を～」みたいなことを書きましたが、勉強会をやってみたところ、それほど書く内容がありませんでした。ということで、勉強会の報告は<a href="http://www.kaigai-engineer.com/blog/?p=87">ブログ</a>の方に書いて済ますことにして、今回は違ったネタで行こうと思います。</p>

<p>　以前、「エンジニアの方々には『海外就職』という選択肢もあるので、検討してみてはどうか」という内容を書きましたが（<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/03/post-13f6.html">これ</a>や<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/06/it2-f18b.html">これ</a>）、具体的な方法についてはあまり触れていなかったと思いますので、今回は具体例をいくつか挙げようと思います。</p>

<p><strong><span style="font-size: 1.2em;">■海外就職実例1</span></strong></p>

<p>　自分語りはあまり好きではないのですが、一応私の就職までの経緯を書いておきます。</p>

<p>　一言で言うとコネです。「隣の芝は青く見える」なんて諺がありますが、こと海外生活、海外就職に関してはその傾向が強いようで、以下のような誤解をしている方もたまに見受けられます（以前のエントリとかぶる部分もありますが）。</p>

<ul><li><strong>海外って実力主義だから、年齢なんて関係ないでしょ？</strong><br />→ 年齢に応じて自動的に昇給したり、基本的には年齢が上の人から順に昇格するといった仕組みはありません。ただ、日本ほど酷くはないですが、若い人の方が就職に有利、年を取ると転職しづらくなる、というのはあります。</li>

<li><strong>海外って実力主義だから、人種差別なんてないでしょ？</strong><br />→ 人種差別がまったく存在しなければ、黒人やその他マイノリティの方々が、人種差別に関する問題提起や抗議行動を行うなんてことはないはずです。</li>

<li><strong>海外って実力主義だから、コネ就職なんてないでしょ？</strong><br />→ コネがあると有利なのは万国共通です。</li>

<li><strong>海外って実力主義だから（ry</strong></li></ul>

<p>　自分の場合のコネは、別に親が国会議員でとかそういうスゴイものではなく、当時の英語の先生の従兄が会社の社長だったというものです。</p>

<p>　「え、コネなんてないんだけど」っていう人もそれほど心配する必要はありません。なければ作ればいいだけですので。</p>

<p>　肝心のコネの作り方ですが、簡単にいうといろんな人と会って仲良くする、それに尽きると思います。うろ覚えですが、私の場合は大体以下のような感じだったと思います。</p>

<ol><li>カナダ人と日本人の夫婦がルームメートを募集しているところに見にいく</li>

<li>結局そこにはしないで、そこから歩いて1分くらいの所に住むことに決める</li>

<li>でも、近所なのでその夫婦と仲良くなる</li>

<li>その夫婦の知り合いが英語の先生</li>

<li>その人に英語を教わることにした</li>

<li>英語の先生の従兄が会社の社長で、そこでプログラマを募集しているという話を聞く</li>

<li>面接</li>

<li>採用</li></ol>

<p>　これだけだと「え、運が良かっただけじゃん」って言われそうですので、いろんな人に会う方法をいくつか紹介します。</p>



<p><strong>○コネ作りの方法その1：パーティー</strong></p>

<p>　以前にも少し<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/11/post-7070.html">書いた</a>通り、まぁ飲み会です。日本との違いは、友達とかを連れてくるのも割と一般的というところでしょうか。お酒が飲めない人はソフトドリンクで参戦すると良いと思います。</p>

<p>　重要なことは、最初は頑張っていろんな人に声をかける、顔を出すことに意義があるので忙しくてもちょっとだけは顔を出す、くらいでしょうか。</p>

<p><strong>○コネ作りの方法その2：ローカルコミュニティ</strong></p>
<p>　これは以前紹介した「アプレンティスシップパターン」に載っていた方法ですが、ある程度の規模の都市であればコンピュータ関係のコミュニティの1つや2つはあると思います。日本で言う○○ユーザー会とか××勉強会とかその類のものです。そういうのに参加すれば、もろ同じ業界の人たちと知り合いになれますので、仲良くなってくれば仕事を募集している話とかが聞けるかもしれません。</p>

<p>　もしそういうコミュニティがなければ……分かりますよね。自分で作ればいいのです。</p>

<p>　なお、コミュニティやそういうのに興味がある人を探すには、<a href="http://www.facebook.com/">Facebook</a>とか<a href="http://www.craigslist.org/about/sites">craigslist</a>とかを使うといいと思います。</p>

<p><strong><span style="font-size: 1.2em;">■</span></strong><strong><span style="font-size: 1.2em;">海外就職</span></strong><strong><span style="font-size: 1.2em;">実例2</span></strong></p>

<p>　さて、昨年後半に知り合った別の方の例を紹介したいと思います。ニックネームHALK RICEさんは、以前から海外での就職に興味を持っていて、それがきっかけで知り合ったのですが、彼の場合も就職のきっかけはコネだったようです。</p>

<p>　昨年の夏に彼が勤めていた会社が黒字倒産し、最初は東京で外資系の会社での仕事を探していたようですが上手く行かなかったようです。以下、彼のメールから引用します。</p>

<blockquote><p>2カ月間、東京で就職活動しました。どうせやるなら、英語を使った職に就きたい。ちょっと欲が出過ぎたかもしれません。無理でした。何せ、TOEICの点数が375点です。どこも、相手にはしてくれませんでした。</p></blockquote>

<p>　彼はそこで一念発起して、友人が住んでいるフィリピンに渡って仕事を探すことを決意し、結論から言うと現地でIT関係の仕事を得ることができました。</p>

<p>　彼がフィリピンを選択した理由も色々聞いていますが、まとめると以下の通りです。</p>

<ul><li>ご友人が住んでいる</li>

<li>英語圏（公用語の1つ）である</li>

<li>物価が安い</li>

<li>経済が比較的安定してて、日本語の需要も多い（筆者注：日系企業が多数進出しているからでしょうか）</li>

<li>以前何度か訪れたことがあって、生活スタイルが合っている</li></ul>

<p>　彼の就職までの経緯は以下の通りです。</p>

<ol><li>東京で就職活動しつつ、海外就職のセミナーなどにも参加（いい講師に出会っていろいろアドバイスをいただいたそうです）</li>

<li>前述の通り、東京での就職活動に失敗。10月頭に実家に帰省</li>

<li>フィリピンの日系企業（N社）に連絡して、役員の方と会う連絡を取り付ける</li>

<li>10月下旬フィリピンに渡航</li>

<li>現地で、友達から人材紹介会社（J社）を紹介してもらう</li>

<li>現地到着後2日後にJ社からコールセンターの仕事を紹介してもらう（内定）</li>

<li>N社には断りの連絡を入れる</li>

<li>業務開始となるまで待つが、予定の日になっても連絡はなし。こちらから連絡してもなしのつぶて（※）</li>

<li>J社には見切りをつけ、一度断りを入れたN社に再度連絡を取る</li>

<li>一度断ったにも関わらず面接してもらい、無事合格</li>

<li>12/1より勤務開始</li></ol>

<p>　ちなみに、就職が決まるまでにかかった費用は20万円弱だそうです。</p>

<p>　彼の場合、技術はしっかりしたものがありましたが、TOEIC 375点ということからも分かるように、英語力は全然高くありませんでした。それでも仕事を得ることをできた理由は、私は以下のように考えています。</p>

<ul><li>友達、セミナーの講師とのつながり</li>

<li>下調べ等の事前準備</li>

<li>何より行動力</li></ul>

<p>　最後に、HALK RICEさんのメールから再度引用して、2つ目の実例紹介を終えたいと思います。</p>

<blockquote><p>私の一番の柱となったのは、セミナーでも教えてくださった、ネットワーキングです。私個人の力だけでは、フィリピンで職を見つけることは、叶わなかったでしょう。友達や知人が助けてくれた。このことがやはり、一番大きいです。</p></blockquote><p><span style="font-size: 0.8em;">　※このように人を食い物にするような業者はフィリピンに限らずどこの国にもいますので、注意が必要です。</span></p>

<p><span style="font-size: 1.2em;"><strong>■成功率はどの程度</strong></span></p>

<p>　これも何回か書いているように、「海外に行けば何でも解決する」とか「TOEIC 375点でも何とかなるんだし、何も考えずにとりあえず海外に行ってみるべき」とかを無責任に言う気はありません。今回は海外で仕事を得た例を2つほど紹介しましたが、海外就職を希望して実際に就職できる人の割合というのはどの程度なのでしょうか。</p>

<p>　「海外就職 割合」などで検索してみましたが、具体的な数字は見つかりませんでした。韓国での同様の調査を紹介している<a href="http://blog.livedoor.jp/microphone9/archives/50174421.html">ブログ記事</a>みたいなのは見つかって、それによると韓国では海外求職申請者は24429人に対して就職できた人は1446人で、成功率5.9％という数字が出ていました。情報源が「韓国産業人力公団」としか書いてないので、正確な内容は分からないですが。</p>



<p>　また、日本人の方が韓国人より英語力は低い→ 日本人の場合はさらに成功率が低いはずだという若干乱暴な論理展開をしているブログも見つかりました。</p>

<p>　私はいくつかの理由によりその意見には賛成できませんが、いずれにしても日本人の海外就職成功率が30％とか50％という数字ではないことは確かなようで、せいぜい10％程度と考えるのが自然だと思います。</p>

<p>　10％というとかなりの低確率のように思えますが、私はこの数字だけを見て怯む必要もないと思います。</p>

<p>　数字というのは（基本的には）嘘はつかないですが、トリックが隠されていることが往々にしてあります。例えば日本の失業率は4.9％です。（完全）失業率＝（完全）失業者/労働力人口 ですが、この「完全失業者」の定義を知ると、世間一般の「失業者」の感覚と若干違うというのに気付くかもしれません。</p>

<p>　同様に、海外就職の成功率の分母と分子はなんでしょうか。分子は海外で就労ビザやそれに類するステータスを取得して就労している人であまりブレはなさそうですが、分母にどういう人を取るかで成功率が大きく変わってきます。分母に以下のような人を含むと、成功率の数字はがくっと下がると思います。</p>

<ul><li>海外就職にちょっと興味があって、数社にレジュメを送ってみたけど反応がなくてあきらめた</li>

<li>ボストンキャリアフォーラム（※）にとりあえず日本から参加してみたけど内定をもらえなかった </li></ul>

<p>　逆に、（曖昧な言い方になってしまいますが）事前にしっかり準備して就職活動をした方の就職率は、前述の数字よりは高いはずですし、実際に私の周りでも海外で就職した方はそれなりの人数がいます。</p>

<p>　海外に住むこと、海外で働くことのメリット（とデメリット）については以前少し書きましたが（<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/02/it-c73e.html">英語編</a>、<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/05/it-ef42.html">待遇編</a>）、若干のリスクを取ってでも多くの方（特に若い方）に挑戦して欲しいと思います。</p>

<p><span style="font-size: 0.8em;">　※ボストンで毎年開催されている、主に日本人留学生向けの就職フェアみたいなのです。</span></p>

<p><span style="font-size: 1.2em;"><strong>■リスク</strong></span></p>

<p>　では、海外に行くことによるリスクとは何でしょうか。</p>

<p>　一番のリスクは、行ってみたはいいけど仕事が見つからず時間が過ぎてしまうことだと思います。お金もかかり職歴にも穴が開いてしまいます。</p>

<p>　対策として一番最初に挙げるべきこととしては、（これに限った話ではないですが）バックアッププランを考えておくことだと思います（英語だとPlan Bなんて言います）。例えば、海外就職に失敗して戻ってきたときに、知り合いの勤めている会社に潜り込めないか、今勤めている会社に復帰できる可能性はないか、などを事前に探っておくと良いと思います。</p>

<p>　後は以前も少し書いたとおり、インターンで経験を積む、あるいは自分経歴と比較して少しレベルの低いポジションで仕事を探す、という方法もあるかと思います。後者の場合、resumeの書き方で気をつけないとoverqualificationで落とされるケースもあるようですので、そういうことも含めて情報にしっかり収集をしておくと、成功の可能性が高まると思います。</p>

<p>　仮に海外就職に失敗したとしても、それほど悲観する必要はないと思います。海外就職のために各国の労働市場・環境の調査、英語や足りない技術の勉強を行ったことは別の場所でも生かされると思います。</p>

<p>　また、個人的な意見になってしまいますが、仮に私が採用担当として面接を行う場合には、そうしたリスクを取って何かに挑戦したという点は評価すると思いますし、同じような考えの方は少なくないと思います。</p>

<p><strong><span style="font-size: 1.2em;">■まとめ</span></strong></p>

<p>　海外就職の成功率は数字だけ見ると低いですが、しっかりとした事前準備＋ちょっとの行動力があれば意外と道が開けるかもしれません。その際に、人との繋がり（コネ）はいざという時に重要ですので、色んな人と会って仲良くしておくといいと思います。</p>

<p>　また、残念ながら就職ができなかったとしても、その過程での勉強・経験などはその後に役に立つはずですし、「挑戦した」という事実を評価してくれる人もいるかもしれません。</p>

<p>　次回は最近増えている企業の海外進出について書こうと思います。それではまた。</p>]]>
        
    </content>
</entry>

<entry>
    <title>海外でも通用するコミュニティになる（？）</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2011/01/post-e542.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2011:/kaigaiengineer//43.2873</id>

    <published>2011-01-08T05:20:00Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　あけましておめでとうございます。鹿島和郎（かしまかずお）です。年末年始は餅で喉...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="コミュニティ活動" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　あけましておめでとうございます。鹿島和郎（かしまかずお）です。年末年始は餅で喉を詰まらせないようにビクビクしながら過ごす毎日でしたが、皆様はいかがお過ごしだったでしょうか。2011年も月に1回くらいは本コラムを書いていこうと思いますので、本年も宜しくお願い申し上げます。</p>

<p>　新年最初のコラムということで、ありきたりですが昨年の総括及び今年の抱負について少し書こうと思います。何か有益な情報を期待している方は、次回以降に期待していただければと思います。</p>

<p><strong><span style="font-size: 1.2em;">■海外ネタはどこに行った？</span></strong></p>

<p>　昨年は他のコラムニストの方と直接お会いする機会が何度かあり、何名かの方が「コラムのタイトルと内容が合わなくなってきた」と仰っていましたが、私自身も昨年後半はコミュニティ活動の内容が多く、あまり海外とは関係ないネタばかりだったような気がします。コミュニティ活動自体は面白く、自分のためにもなっていますし、今後も引き続きやっていこうと思っていますが、今年は少し海外関連のネタも書ければ、と思っています。ただ、「○○について書く」と言ったところで、まずはネタがないと始まりません。</p>

<p>　昨年は一度も日本を出ませんでしたし、海外との仕事も小さなのが2回あっただけなので、今年はネタ作りのためにも何かやらなければいけません（※）。昨年、</p>

<p>　「海外進出する企業、技術者をサポートするような仕事をしていきたい」</p>

<p>というようなことを<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/05/best-of-both-wo.html">書いた</a>ことがありましたが、今年はまさにそれをテーマに取り組んでいこうと思ってます。</p>

<p>　さて、意気込みだけ語って行動しないのもかっこ悪いので、早速実行に移すことにしました。が、その前にもう少しだけ背景などの話をします。</p>

<p><span style="font-size: 0.8em;">※ネタ作りのためにいろいろやるのは、エンジニアライフ執筆陣の多くの方に共通する病気のようです。</span></p>

<p><strong><span style="font-size: 1.2em;">■海外からのインプット、海外へのアウトプット</span></strong></p>

<p>　本コラムを読んでくださってる方はご存じかもしれませんが、有志の方と共に昨年9月からScalaという言語の勉強会をやっています。先人の方々のいろいろな努力のかいもあって、ここ最近では注目度も上がってきているようですが、依然日本語のドキュメントは少なく、ちょっと突っ込んだ内容を調べようとすると、英語のドキュメントを読む（あるいは直接ソースコードを読む）という作業は避けて通れません。</p>

<p>　Scala勉強会に来ている方は、英語のドキュメントを問題なく読める方が（世間一般と比べると）多いようですが、苦労している方も結構いらっしゃるようです。こないだの勉強会の後の懇親会でもそういう話が出て、何名かの方は「今年は英語を何とかしたい」という意気込みを語ってました。</p>

<p>　また、以前どなたかが、</p>

<p>　「海外の開発者と話した時に『日本人ユーザーは結構いるみたいだけど、声があまり聞こえてこない』というようなことを言われた」</p>

<p>というようなことをWebだかTwitterで仰っていたのですが（内容も含め、かなりうろ覚えで済みません）、これに関してはその通りだなと思わざるを得ませんでした。</p>

<p>　私自身、海外のオープンソースソフトを使う機会はかなり多いのですが、バグ報告やフォーラムでの回答とかは数える程しかしたことがありません（日本語でもあまりしたことないんですが……）。</p>

<p>　前述のScala勉強会の話に戻りますと、英語のドキュメントが問題なく読める方は結構いらっしゃいますが、海外に向けて何かをアウトプットしている方となると、かなり数が少ないのではないかと思います。技術的に素晴らしいものを持った方が多いだけに、少し勿体ないと感じることもあります。</p>

<p>　これらの話からも分かる通り、海外と日本の間の情報の流れには、どちらの方向もまだ量が少ないなというのが実感です。この辺りを改善することにより、海外に進出していく日本の技術者が増えることに（直接的ではないにしろ）つながるのではないかと思っています。</p>

<p><span style="font-size: 1.2em;"><strong>■技術者向けの英語勉強会をやることにした</strong></span></p>

<p>　で、結局何をやることにしたかと言いますと、とりあえず自分でできることということで、技術者向けに英語の勉強会を始めることになりました。といっても、単に先生役の人が何かを教えてその他の人が勉強するというのもやりたくないので、以下の形式で始めてみることにしました。</p>

<ul><li>海外の技術系フォーラムで、投稿されてる質問をみんなで読む</li>

<li>みんなで考える</li>

<li>誰かが代表で英語で回答する</li></ul>

<p>　技術的な勉強もしつつ、実践的な英語が勉強できるという、なかなかいいアイディアじゃないかと思ってるのですが、いかがでしょうか。</p>

<p>　こうしたことをやっていくうちに、英語でのバグ報告や英語でブログを書いたりできる方がどんどん増えてくるといいなと思っています。</p>

<p>　勉強会の詳細ですが、例のごとくスモールスタートということで、毎週水曜日のScala勉強会の後に懇親会の席の一角でやろうかと思ってます。仮に参加希望の方が増えるようでしたら、別枠でやっても良いかとは思いますが。</p>

<p>　英語勉強会に関してのご質問、参加表明などは以下でお気軽にどうぞ。</p>

<ul><li>本記事のコメント欄</li>

<li>あるいは、私のTwitterアカウント（ <a href="http://twitter.com/kaigaiengineer">@kaigaiengineer</a> ）</li></ul>

<p>　Scala勉強会に関しては<a href="http://www.scala-users.org/shibuya/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8">こちらのサイト</a>をご覧ください。 短縮URL: http://bit.ly/gryecG</p>

<p>　次回は英語勉強会の報告を来週くらいに書こうかと思います。それではまた。</p>]]>
        
    </content>
</entry>

<entry>
    <title>コミュニティ活動で世界は動くか</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/12/post-2a9b.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2010:/kaigaiengineer//43.2872</id>

    <published>2010-12-06T00:39:25Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　どうも、鹿島和郎（かしまかずお）です。先週末に、エンジニアライフでコラムを書い...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="コミュニティ活動" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　どうも、鹿島和郎（かしまかずお）です。先週末に、エンジニアライフでコラムを書いている人達が集まるオフ会第2回が神戸で開催され、東京で開催された第1回に続いて参加してきました（理由は省略しますが本イベントはリッツと呼ばれているので、以降はリッツと書きます）。イベントレポートは他の人に任せるとして、今回は自分のLTについて書こうと思います。</p>

<p>　生まれて2回目のLT。前回はなんとか言いたいことも言えたんですが、今回のLTは結論から言うと失敗でした。時間配分がまずくて、結論を言う前に時間切れになってしまいました。関西行きの新幹線の中で資料を作ったんですが、資料ができた時点で安心してしまい、発表の練習をしなかったのが敗因だと思います。</p>

<p>　さて、失敗は失敗として今後改善していけばいいとして、今回のコラム（※）ではLTで話したかった内容について書いていきます。</p>

<p><span style="font-size: 0.8em;">※私自身は「コラムを書く」とか「コラムニスト」いう言い方は何となく気恥ずかしい感じがするのですが、＠IT編集部の方は「ブログじゃなくてコラムだ！」と常々仰っているので、それに従おうと思います。</span></p>

<p><strong><span style="font-size: 1.2em;">■＠ITのコラムニスト</span></strong></p>

<p>　冒頭で書いた通り、今回のリッツにはエンジニアライフでコラムを書いている人たちが集まりました。<a href="http://el.jibun.atmarkit.co.jp/list.html">一覧ページ</a>を見ていただくと分かる通り、エンジニアの方、非エンジニアの方がいらっしゃいますし、エンジニアといってもいろいろな業種、職種の人がいます。構成は結構バラエティに富んでいるのですが、核として「エンジニア」というキーワードがあるので、何となく一体感もあるような気がします。</p>



<p>　そんな＠ITのコラムニストたちですが、本業を持っている人がほとんどのようです。本業の傍らコラムを書いて、コラムのネタ作りのために新しいガジェットを買ってみたり、デスマーチに自ら飛び込んでみたり、コミュニティ活動をしたり、そんな感じの方々です。</p>

<p>　「ネタ作り」のためというのは冗談ですが、コミュニティに参加されている方は比較的多いです。日本全国の勉強会を行脚している方、LTと言えばどこでも飛んでいく方といった極端な例は置いておくとしても、AAAユーザー会とかBBB勉強会といったものに積極的に参加している方などがいます。そもそもコラムを書くというのもある意味コミュニティ活動の一環とも言えるのではないかと思います。</p>

<p><strong><span style="font-size: 1.2em;">■コミュニティ活動</span></strong></p>

<p><strong>○私が行っているコミュニティ活動</strong></p>

<p>　先ほど「コミュニティ活動」というキーワードを出しましたが、私自身も今年の9月からコミュニティ活動を行っています。私の以前のコラムを読んでくださった方はご存じかと思いますが、Scalaという言語の勉強会を毎週行っています（※）。</p>

<p>　勉強会を始めた経緯に関しては<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/08/programming-sca.html">以前のコラムで</a>書きましたので、詳しくはそちらを参照していただくとして、ここでは簡単に説明します。</p>

<p>　8月末にいろいろな理由によりScalaを勉強しようと思い立って、最初は勉強会を探したのですが、東京近郊では勉強会の開催がなかったのでとりあえず自分で始めることにした、というのがそもそもの発端です。第1回勉強会は9月1日に行ったのですが、その直後の9月4日にたまたまタイミングよく開催されたScala座というイベントに参加して、そこで知り合った人を無理矢理勉強会に誘ったところ、彼らが運営にも協力してくれて今に至る、という感じです。</p>

<p><span style="font-size: 0.8em;">※以前の<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/11/post-7070.html">コラム</a>でも書きましたが、勉強会をやり始めたのは私ですが、いろいろな方々の協力によって成り立っている勉強会ですので、私は「主催者」ではなくせいぜい「運営者の1人」だと思っています。個人的には非常に大事なことだと思っているので再度書かせていただきました。</span></p>

<p><strong>○Scalaの流れが来ている？</strong></p>

<p>　今年の9月の時点では東京近郊でのScala勉強会は1つも存在しなかったのですが、3カ月経った今では何と3つも存在します。</p>

<ul><li>Scala勉強会 in 渋谷</li>

<li>WebプログラマのためのScala入門勉強会</li>

<li>Scalaを遊ぶ!会</li></ul>

<p>　1つ目は私が参加しているやつですので説明は省略します。2番目は、Scala座で知り合ってScala勉強会 in 渋谷の運営にも協力してくれている方が、初心者向けに新たに立ち上げたものです。最後の1つは、同じく前述のScala座に参加された方（私はまだお会いしたことがないのですが）が、Scala勉強会 in 渋谷の直後くらいに立ち上げられたようです。Scala座ではかなり高度な話題とかも出ていて、「これからScalaを勉強しようと思っている人にとっては入りにくいのではないか。もう少し取っつきやすい勉強会が必要じゃないか」という思いで始められたそうです。</p>

<p>　また、勉強会だけではなく、Scalaが媒体などで取り上げられる回数も以前に比べて増えてきているようですし、最近ではScala関連の本の出版が相次いでいます。</p>

<p>　実際にScalaを使っているシステムやWebサイトも徐々に増えてきていて、来年辺りからじわりじわりと広がっていくのではないかという、かなり確信に近い思いがありますし、そうした大きな動きを実感できる瞬間というのがかなり増えてきています。</p>

<p><span style="font-size: 1.2em;"><strong>■ソーシャルイノベーション</strong></span></p>

<p><strong>○大きな流れも最初は小さな動き</strong></p>

<p>　そんなことを考えていてふと思い出したのが、以前読んだ『誰が世界を変えるのか　ソーシャルイノベーションはここから始まる』という本です。本の詳しい内容は各書評を見ていただきたいのですが、この本では社会を変革した出来事・ムーブメント＝ソーシャルイノベーションをいくつか紹介しています。そうした大きな動きですが、どれも最初は1人～数人の小さな活動だったのが、周りの人物をどんどん巻き込んで徐々に大きくなっていき、ある臨界点（本書ではtipping pointと呼んでいます）のようなものを超えると爆発的に広がっていく、という話です。</p>

<iframe frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://rcm-jp.amazon.co.jp/e/cm?t=kaigaiengineer-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4862760368&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="width: 120px; height: 240px;"> </iframe>

<p>　Scalaに関して言うと、日本ではずいぶん前から精力的に活動している人が何名かいらっしゃって、そのうちユーザー数が増えていき、日本初（？）のScala関連イベントとなる前述のScala座が開催され、そこに参加した人が新たに勉強会を立ち上げて……という感じでどんどんコミュニティが大きくなっています。また、今回のリッツでは、関西の方が2名ほどScalaに興味を示していて、来年から大阪で勉強会を開催しようという話になっています。</p>

<p>　そろそろtipping pointを超えて爆発的に広がっていく可能性があるScalaですが、前述の通り最初のころから普及活動をしていた人は、それほど多くなかったはずです。</p>

<p><strong>○まずは動いてみる</strong></p>

<p>　大きな流れはいずれも最初は小さな動きです。世の中やある状況がこんな風になればいいな、という思いを持つことは誰でもあるかと思いますが、それと同時に「自分1人の力じゃ何も変わらない」と思ってしまう人も多いことと思われます。</p>

<p>　「世界は、自分が頑張れば動かしていけるものだ」という考えは心理学では「全能感」と呼ばれるようで、俗に中二病などとも呼ばれますが、私はそういうことを主張したいわけではありません。ただ、個人がまったく無力かというとそうではなく、個人の小さな活動が世界を動かす「可能性」があるという認識を持つことは、結構重要ではないかと思います。</p>

<p>　前述の『誰が世界を変えるのか　ソーシャルイノベーションはここから始まる』の原題は“Getting to Maybe　How the World Is Changed”で、直訳すると「『かもしれない』へ向かって　どのように世界が変わるか」という感じでしょうか。世界が動くかどうかは分かりませんが（Maybe）、まずは動いてみることが必要だと思います。</p>

<p><strong>○人とつながる</strong></p>

<p>　『誰が世界を変えるのか　ソーシャルイノベーションはここから始まる』では、社会の複雑性を理解してそれを受け入れるということについても書いています。社会・他者との関係性の中で自分も変化し周りも変化していく、自分という存在は社会という系の一部である、という考えも重要なポイントだと思います（この辺の話があまりしっくり来ない方は、複雑系関連の書籍を一度読んでみるといいかもしれません。と書いている私も2～3冊ぐらいしか読んだことはないですが）。</p>

<p>　複雑系では自己相似というのもキーワードの1つですが、人がある人と会ってその人に影響を与え、自分もその人から影響を受けるということは、社会変革のプロセスの一番小さいバージョンである、というのは言い過ぎでしょうか。人と会って影響を与え合うというのはそのぐらい重要なことだと私は思っています。</p>



<p>　人が集まるということは、本当に大きな力を生み出す「可能性」があります。今回のリッツは第2回でしたが、第1回は主催の森姫さんがいろいろ動いてくださり、また編集部の方なども巻き込んで、アイティメディアの会議室をお借りして開催されました。そこで生まれたいい流れを継続して、第2回は関西方面の方々がいろいろと動いてくださり、神戸にて無事に開催されました。</p>

<p>　他のコラムニストの方たちとは、何名かはTwitter上で絡んだりということもあったのですが、今回初めてお会いする方が半分以上です。そうした方々との新しい繋がりというのは、直接的か間接的かは分かりませんが、今後の私の人生にいい影響を及ぼすものと思います。</p>

<p>　また、前述の通り、今回の集まりによって関西に新しいScala勉強会が立ち上がりそうな気配です。人と繋がることによって新たな小さな動きが生まれた実例と言えるでしょう。</p>

<p><span style="font-size: 1.2em;"><strong>■まとめ</strong></span></p>

<p>　そろそろまとめます。世界を動かすためには、まずは動き始めること、そして人とつながることが必要条件だと思います。</p>

<p>　もちろん世界が実際に動くかどうかは分かりません。行動したとしても動くかどうかはmaybe （or maybe not）ですが、もし動かなければ決して動きません（never）。何かを変えたいのならまずは動いてみてはどうでしょうか。</p>

<p>　人とつながると、すごいことが起きる可能性があります。何かを変えたいと思っている人は、機会があればそうした場・コミュニティにどんどん参加してみてください。そうしたコミュニティがなければ自分で作るのも1つの手段だと思います。</p>

<p>　そうしたコミュニティ活動が世界（は大きすぎとしてもIT業界）を変えるとしたら、そして自分がそれにかかわれるとしたら……面白いと思いませんか。変わるかどうかはMaybeですけど。</p>

<p>　最後になりましたが、今回出会いの場を作ってくださった第2回リッツの幹事の皆さまに、この場を借りてお礼を申し上げます。ここから何か新しい動きを作っていきたいですね。＞参加者、そしてコラムニストの皆さま</p>

<p>　それではまた次回。</p>

<p><span style="font-size: 1.2em;"><strong>■補足</strong></span></p>

<p>　Scala勉強会 in 渋谷にご興味のある方は、ぜひお気軽にご参加ください。詳しくは勉強会の<a href="http://scala-users.org/shibuya/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8">Wiki</a>で。</p>]]>
        
    </content>
</entry>

<entry>
    <title>パーティーと勉強会</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/11/post-7070.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2010:/kaigaiengineer//43.2871</id>

    <published>2010-11-04T08:00:00Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　どうも、鹿島和郎（かしまかずお）です。私が子どものころにはまったくなじみがなか...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="コミュニティ活動" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　どうも、鹿島和郎（かしまかずお）です。私が子どものころにはまったくなじみがなかったHalloweenですが、日本でもここ5～10年くらいで急速に認知されるようになり、先週末は至るところでハロウィーンパーティーが開かれていたようです。お菓子業者などがもうけるネタ作りに必死になっている様子が、垣間見えたようです。</p>

<p>　さて、今年の9月に思いつきで始めたScala勉強会ですが、皆さまのご協力のおかげで開始してから約2カ月が経ち、だんだん軌道に乗ってきたように見えます。今回は「パーティー」と「勉強会」という、一見何の関連もなさそうな2つのことについて書いていこうと思います。それらの共通点はというと、</p>

<p>　<strong>「人が集まる」</strong></p>

<p>です。さらにいうといろんな人が集まります。</p>

<p><span style="font-size: 1.2em;"><strong>■Party, Party, Party！</strong></span></p>

<p><strong>○飲み会（≒パーティー）のスタイルあれこれ</strong></p>

<p>　もともとそういう文化なのか、人を呼べるほどの広さがないという（大都市の）住宅事情が影響しているのかは分かりませんが、日本では「知り合いを家に招いて食事をする」のはそれほど一般的ではないように思えます。（私は未経験ですが）結婚前に婚約者を家に呼んで親に紹介するとか、結構改まった場面でないと、食事会はやらない気がします。</p>

<p>　飲み会にしても、学生などがお金を節約するために部屋飲みをするのを除くと、普通は居酒屋で集まるのが一般的だと思います。</p>

<p>　それに対し、北米では（多分ヨーロッパも）家に友だちを呼んで食事会やパーティーを行うのが割と一般的です。もちろん、国や文化、年齢によってスタイルは大きく異なりますが。</p>

<p>　中でも、皆が食べものや飲みものを適当に持ち寄って集まる「potluck」は、ごく一般的に行われているようです。</p>

<p><strong>○ホームパーティーをやってみて</strong></p>

<p>　私が住んでいたモントリオールはそれほど大きな都市ではなく、徒歩圏内、あるいはせいぜい電車＋徒歩で30分以内のところに住んでいる友だちが大半だったため、よく友だちを家に呼んでホームパーティーをやっていました（極度の出不精で、外に出るのがめんどくさいので友だちを家に呼んでいたという理由もありますが）。「パーティー」というとなんだかおしゃれな感じがしますが、実態は集まって飲んで話すだけの単なる飲み会です。</p>

<p>　ただ、居酒屋で飲むのとの大きな違いは、以下の2点だと思います。</p>

<ul><li>席の移動が自由なので、いろいろな人と話しやすい</li>

<li>友だちを連れて来てもOKというのが一般的なので、新しい知り合いができやすい</li></ul>

<p>　向こうに引っ越して一番最初のホームパーティーは、友達4人と自分の計5人でのこぢんまりとしたものだったのですが、3年後ぐらいになると知り合いが増えてきて、毎回30～50人ぐらいが集まっていました。</p>

<p>　別に人数が多ければいいわけではないですが、毎回楽しみにしてくれる人もそれなりにいたので、飲み会の幹事（≒パーティーのホスト）としてはまぁまぁうまくやっていた方なのかなと思います（※）。</p>

<p><span style="font-size: 0.8em;">※念のため書いておきますと、（直接面識のある方はご存じかと思いますが）私自身は別にparty animalというタイプではなく、単にお酒が好きな普通のエンジニアです。</span></p>

<p><strong><span style="font-size: 1.2em;">■勉強会、始める前と始めた後</span></strong></p>

<p>　さて、話は変わって勉強会です。私は今年の夏まで、勉強会をはじめとするそのほかコミュニティ活動は、運営する立場はおろか、参加したことすらありませんでした。なぜ勉強会をやろうと思い立ったかについては、以前の<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/08/programming-sca.html">コラム</a>に書きましたので、そちらを参照していただくとして、ここではまず、以前の私がコミュニティ活動に関して対して思っていたネガティブな印象、参加をためらわせていたことについて少し書こうと思います。</p>

<p><strong>○難しそう。初心者に厳しそう</strong></p>

<p>　1番目はこれです。</p>

<p>　「勉強会って詳しい人がたくさん集まって難しい話をしてそうだし、自分みたいな初心者が参加してもいいのか？」</p>

<p>なんて思ってました。自分みたいなよく分かってない輩が参加したら、白い目で見られたり、あるいは「もっと勉強してこい！」みたいに怒られたりしないか、という不安も若干ありました。勉強会などへの参加をためらっているかなりの人が、これと似たような印象を持っているのではないかと思います。</p>

<p>　では、勉強会に参加した後に先ほどの先入観がどのように変わったかですが、「詳しい人がたくさん集まって」という部分はあまり変わっていません。勉強会に参加するのはスキル向上に意欲的な人が多く、当然スキルの高い人が多いように見えます。</p>

<p>　ただ、そうした詳しい方々の多くは初心者などにも寛容で、勉強する意欲のある人たちに対してはアドバイスをしたりしていて、その点は少し印象が変わった部分です。</p>

<p>　ちょっと考えてみると、世の中にこれだけ技術系のブログとかがたくさんあって、そういう人たちが自分たちの知識・技術を惜しげもなく公開していることからして、そういう人たちの多くがほかの人にいろいろ伝えたいと思っていることが分かるかと思います。</p>

<p>　多分、見せ方の問題なのかな、と思います。</p>

<p><strong>○何か内輪で盛り上がってる</strong></p>

<p>　「勉強会って、何か小さなコミュニティに閉じていて、新しく来た人が入りづらそう」</p>

<p>　こんな風にも思っていました。意を決して勉強会に参加しても、ほかの人たちが何か内輪ネタで盛り上がっていたらちょっと悲しいですよね。</p>

<p>　私はそれほど多くの勉強会・セミナーの参加経験があるわけではないので（3つ）あまり確かなことは言えませんが、それほど疎外感は感じませんでした。この辺は各勉強会の主催者が心がけているところなのではないかと個人的には推測しています。</p>

<p>　ただ、周りは当然知らない人ばかりなので、最初はそれなりに不安ではありました。隣に座った人に話し掛けたりして話相手ができると、一気に落ち着くのですが。</p>

<p><span style="font-size: 1.2em;"><strong>■共通点、自分なりのコツ</strong></span></p>

<p>　最初に、パーティーと勉強会には「人が集まる」という共通点があると書きましたが、それらをうまくやるコツにも共通点があるのではないかと思います。</p>

<p>　「こういう勉強会だといいな」と私自身思った経験も踏まえ、以下に、私が考える「勉強会をうまくやるコツ」を書きたいと思います。</p>

<p><strong>○全員が主役。全員が貢献</strong></p>

<p>　勉強会は有志が集まって勉強する会なので、参加者全員の貢献によって成り立っていると思います。Scala勉強会 in 渋谷を始めたのは確かに私なのですが、「主催者」みたいにいわれるのはちょっと違うかなと思います。回を重ねてきて、最近では技術や発表の面でも運営面でも、ほかの人の貢献が非常に大きくなっているのが、そう思う理由です。そして、参加者全員が何らかの形で貢献しているのが健全な勉強会なのではないかとも思います。</p>

<p>　パーティーでもそうで、料理を作ってきてくれる人、ビールを作ってきてくれる人（注：日本では違法です）、デザートを持ってきてくれる人など、いろいろいますし。それ以外にも、早めに来て部屋の片付けを手伝ってくれたり、途中でお皿とかグラスを洗ってくれたりしてくれる人、面白い話で場を盛り上げる人、CDとかたくさん持ってきて音楽を流してくれる人、友だちを連れてきてくれる人、いろいろな人によって成り立っていると思います。</p>

<p><strong>・いろいろな形での貢献</strong></p>

<p>　一口に『貢献』と言ってもいろいろな形があると思います。「何か調べて発表する」というのはもちろんそうですが、「質問する」というのも貢献になると思います。いろいろなレベル・いろいろな視点を持つ人が集まるので、単に質問するだけで、他人にとっては気付きになったり議論のネタになったり、いろいろなよい効果を及ぼすので、「貢献」と言えるでしょう。もちろん「質問に答える」のも貢献です。</p>

<p>　そのほか、勉強会の告知・宣伝をしてくれるというのもありがたいです。勉強会に来た方には大体、</p>

<p>　「もしよければ、今度は友だちや同僚とかもご一緒にどうですか？」</p>

<p>と声をかけるようにしています。</p>

<p>　本勉強会には<a href="http://www.scala-users.org/shibuya/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8">Wiki</a>があるのですが、そこに書き込むのも貢献だと思いますし、自分のブログに勉強会の感想や技術的な補足などのエントリーを書くのも、フィードバックという点で重要だと思っています。</p>

<p>　参加してくれた方が、上に挙げたようなこと（あるいはそれ以外でも）をどれか1つでもやってくれれば、それでOKかなと思ってます。</p>

<p><strong>・いろんな人に話しかける</strong></p>

<p>　私がしている貢献はこれくらいです。皆さんが発表された後の質疑応答のときにいろいろな人の意見を引き出す、あるいは勉強会の前後の時間に初めて来た人に話し掛ける、いままで発表したことのない人に「何でもいいんで発表しませんか？」とお願いしてみる、などです。</p>

<p>　小さな勉強会なので、参加している皆さんも、是非いろいろな人に話し掛けて交流を深めてもらいたいと思っています。</p>

<p><strong>○多様性</strong></p>

<p>　いろいろな勉強会のスタイルがあるので、これに関しては千差万別なのかとも思いますが、本勉強会では「Scala」というキーワードが絡めば何でもあり、ということにしています。</p>

<p>　主な理由として、Scalaはそれほどメジャーな言語ではないので、範囲を絞ると参加者が少なくなってしまうというのが挙げられます。また、勉強会は毎週開催しているのでネタ切れを防ぐ意味合いもあります。</p>

<p>　<a href="http://www.scala-users.org/shibuya/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8">Wiki</a>の過去の発表内容を見てもらえば分かると思いますが、周辺ツールの使い方、フレームワークの説明、言語自体に関する考察など多岐にわたりますし、レベルも比較的初心者向けから割と高度な内容まで幅広いと思います。</p>

<p>　参加者の方を見ても、Scalaを実際に仕事で使っている人、これから使おうとしてる人、単に興味があるだけの人がいますし、バックグラウンドもJava、C++、Ruby、Perl、Erlang、Pythonなどいろいろです（私のようにプログラムがメインの仕事でない人もいます）。いろいろな人が、独自の視点で意見を出すのが面白いと思ってます。</p>

<p>　また、最近は外国人の方も1名参加してくれています。今後はそういう状況がどんどん増えていくのではないでしょうか。</p>

<p>　パーティーにおいても、「多様性」は重要だと思ってます。やっぱりいろんな人が集まった方が面白いです。もちろん、たくさん集まればあまり話の合わない人も出てくるとは思いますが、その場合はその人との会話は適当に切り上げて別の人と話せばいいだけですし。勉強会も、毎回参加する必要はなく、興味のある会だけ参加すればいいというところはそれに似ているかなと思います。</p>

<p><strong><span style="font-size: 1.2em;">■まとめ</span></strong></p>

<p>　長くなってきたのでまとめます。パーティーと勉強会には意外と共通点が多いのではないかと思いますし、うまくやっていくコツみたいなものも結構共通してるのではないかと思います。</p>

<p>　私が考える「理想的な勉強会」は</p>

<ul><li>いろんな人が集まって</li>

<li>いろんな意見が出て</li>

<li>参加者全員が何らかの貢献をする</li></ul>

<p>というものです。そのために必要なことは、</p>

<ul><li>いろんな人を誘って</li>

<li>いろんな人に声をかけて</li>

<li>各自の貢献を促す</li></ul>

<p>ではないかと考えています。</p>

<p>　Scala勉強会 in 渋谷は、毎週水曜日20時から開催していますので、ご興味のある方のご参加をお待ちしております。何かご質問などがありましたら、以下までお気軽にどうぞ。</p>

<p>　Twitter: <a href="http://twitter.com/kaigaiengineer">@kaigaiengineer</a></p>

<p>　メール: kashima あっとまーく shibuya どっと scala-users どっと org</p>

<p>　それではまた。</p>]]>
        
    </content>
</entry>

<entry>
    <title>日本と海外の在宅勤務事情</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/10/post-1efa.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2010:/kaigaiengineer//43.2870</id>

    <published>2010-10-18T07:00:00Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　どうも、鹿島和郎（かしまかずお）です。ここ最近はScalaとi18nという技術...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="ワークスタイル" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　どうも、鹿島和郎（かしまかずお）です。ここ最近はScalaとi18nという技術ネタを続けて書いてきましたので、そろそろIT技術者として認知されてきたのではないかと思います。ということで、今回は久しぶりに技術から離れた軽いネタでいこうと思います。</p>

<p>　ちょっとネタが古くなってしまいましたが、1カ月前位くらいにCNET Japanで「<a href="http://japan.cnet.com/sp/businesslife/story/0,3800105598,20419583,00.htm">在宅勤務のよくない点</a>」という記事がありました。CNET Japanは海外の記事の翻訳が多いので、英語があまり得意でない方には便利なのですが、その反面、単に英語の記事を翻訳するだけなので日本ではまったく当てはまらない内容の記事もあったりします。</p>

<p>　「在宅勤務のよくない点」というのがまさに「日本ではまったく当てはまらない内容の記事」なのですが、結構面白いので、この話題について少し書こうと思います。</p>

<p><strong><span style="font-size: 1.2em;">■北米における在宅勤務</span></strong></p>

<p><strong>○CNETによる「アメリカでの典型的な在宅勤務風景」？</strong></p>

<p>　以前のコラムで少し触れたとおり、アメリカでは日本に比べると在宅勤務が一般的です。CNET Japanの記事によると、「年次スタッフミーティング」や「大型のアップグレードのために、オフィスに呼び出され」る以外ではオフィスに行かないというケースもあり、その結果「上司の顔を忘れ」ることがよくあるようです。</p>

<p>　また、アメリカは国土が広いので、「普段、時差があるところに住んでいる」人同士が同じプロジェクトで働くという事も割と一般的だそうです。</p>

<p>　CNETの元記事は恐らく若干誇張しているとは思いますが、それでもこういった話がまったくのフィクションではなく、それなりの現実味を持ってとらえられるというところを見ても、アメリカの在宅勤務の状況が日本とは異なることが分かるかと思います。</p>

<p><strong>○実例</strong></p>

<p>　わたしが北米の中小企業に勤めていた時は在宅勤務ではありませんでしたが、向こうっぽい経験をすることが二度ほどありました。</p>

<p>　一度目は、取引先のアメリカ企業（A社）が開発しているシステムの一部を担当するようになった時のことです。A社の社員は実質2名で、彼らは普段アメリカ中部のどこかの州の違う町に別々に住んでいて、打ち合わせはSkypeやWebEx（テレビ会議システム）を使っていました。</p>

<p>　システムは、わたしの会社とA社、A社の外注先のポーランドの会社（P社）の3社で開発したのですが、A社とP社とのやりとりも当然インターネット経由です。また、A社、P社、わたしの会社で三者通話の会議をすることも結構頻繁にありました。</p>

<p>　ちなみに、わたしがA社の2人と会ったのは、彼らが一度カナダに来た時の3日間だけで、P社の人とは会うこともありませんでした。</p>

<p>　二度目はわたしの会社が開発拠点をフィリピンに移した時です。わたしと同僚1名がフィリピンに転勤となり、現地開発者のチームに合流しました。それに伴い、カナダに残った開発者は基本的には自宅勤務となり、コミュニケーションはメールでのやりとりとなり、重要な話がある時だけSkypeを使う形になりました。</p>

<p>　わたしが北米で働いていたのは2年半ほどですが、その間に在宅勤務をしている人たちに2回会ったことからしても、日本より在宅勤務が普及していると言えるかと思います。</p>

<p><strong><span style="font-size: 1.2em;">■日本では15.3％が在宅勤務？</span></strong></p>

<p>　翻って、日本の状況はどうでしょうか。平成21年度テレワーク人口実態調査によると全体の15.3％が「テレワーカー」だそうです。「テレワーカー」の定義は以下の通りです。</p>

<ul><li>普段、収入を伴う仕事を行っている人の中で、仕事でITを利用している人</li>

<li>かつ、自分の所属する部署のある場所以外で、ITを利用できる環境において仕事を行う時間が1週間あたり8時間以上である人</li></ul>

<p>　この定義からしていくつか突っ込みどころというか疑問があります。</p>

<ul><li>週に2日はお客さまのところで作業するエンジニアの場合は該当するのか</li>

<li>自宅に仕事を持ち帰って、1日2時間以上家で仕事している人は該当するのか</li></ul>

<p>などなど。</p>

<p>　そもそも、15.3％が「テレワーカー」というのがまったく現実味のある数字として感じられません。世間一般の方が「在宅勤務」という言葉から想像する勤務体系で働いている人は、わたしの周りでは</p>

<ul><li>個人でたまにWebサイトのデザインをやっている主婦</li>

<li>企業に出向いて研修を行い、自宅で研修の報告書を作成するコンサルタント</li></ul>

<p>の2名だけです。株のデイトレーディングで生計を立てている1名を含めても3名です。</p>

<p>　もちろん「類は友を呼ぶ」ので、わたしの周りに在宅勤務の人が少ないだけという可能性もありますが、標本の偏りが少ないと思われる小学校・中学校の同級生を考えても、同じクラスのうち約3人が在宅勤務しているというのは、どうも考えにくいです。控えめに言っても「テレワーカー」≠「（世間一般で言うところの）在宅勤務者」ではないかと思います。</p>

<p><span style="font-size: 1.2em;"><strong>■IT業界でこそ普及させてほしい</strong></span></p>

<p><strong>○なぜ普及しないのか</strong></p>

<p>　日本で在宅勤務が普及しない理由の第一は、労務管理がしにくい（と思われている）ことが挙げられます。簡単な言葉で言うと、経営側が「社員は目の届くところに置いておかないとサボる」と思っていることです。</p>

<p>　少し話は変わりますが、IT業界ではいわゆる偽装請負、多重派遣、多重請負などが構造上の問題として存在することは、多くの方が認識されているかと思います。その理由の1つが、在宅勤務の場合とまったく同じ「人員を目の届くところに置いておきたい」ということだと思います。もし、在宅勤務の問題が解決すると案外、多重請負の構造も解決に向かったりするかもしれません。もちろん、多重請負の原因はそれ以外にもいろいろとあるのですが、ここでは触れません。</p>

<p>　また、情報漏えいを理由に在宅勤務に否定的な企業が数多くあります。一見すると正当な理由に思えますが、実際には導入にメリットを感じていない、あるいは単に検討するのも面倒、というところが多いような気がします。</p>

<p><strong>○まずは自分たちから使えば？</strong></p>

<p>　やれ業務改善のためのソリューション提供がどうのとかVPNが何だのという話を日常的にしている割に、日本の多くのIT企業では最先端のIT技術を活用しきれていないところが多いと思います。「紺屋の白袴」なんてよく言われますが、まずは自分たちの業務を改善してほしいと思うのですが、皆さんはどう思われますか。</p>

<p><span style="font-size: 1.2em;"><strong>■終わりに</strong></span></p>

<p>　完全在宅だとメリハリをつけづらいと思っている方も多いかと思いますが、週に2～3日出社とか昼の数時間のみ出社でOKとかであれば、受け入れられやすいのではないかと思います。</p>

<p>　今後、社会に在宅勤務がどんどん普及していってほしいですし、われわれITエンジニアは、在宅勤務をサポートする効率的な仕組みを提供していくことで貢献していきたいですね。</p>

<p>　それではまた。</p>]]>
        
    </content>
</entry>

<entry>
    <title>i18nしてますか？（symfonyその2）</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/10/i18nsymfony-3dc.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2010:/kaigaiengineer//43.2869</id>

    <published>2010-10-08T10:05:00Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>    This work is licensed under Creative...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="スキル" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<style type="text/css"> 
<!--
@import url("http://el.jibun.atmarkit.co.jp/kaigaiengineer/files/code.css");
-->
</style> 

<p><a href="http://creativecommons.org/licenses/by-sa/3.0/" rel="license" target="_blank"><img align="left" src="http://i.creativecommons.org/l/by-sa/3.0/80x15.png" alt="Creative Commons License" style="border-width: 0pt;" /></a>
This work is licensed under <a href="http://creativecommons.org/licenses/by-sa/3.0/" rel="license" target="_blank">Creative Commons Attribution-Share Alike 3.0 Unported License</a>.</p>

<p>　どうも、鹿島和郎（かしまかずお）です。秋の夜長にプログラムというのは平安時代からの日本の風景ですが、「<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/09/i18nsymfony-d3f.html">その0</a>」「<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/09/i18nsymfony-b39.html">その1</a>」とやってきたsymfonyでのi18nの説明も今回で最後となります。</p>

<p>　<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/09/i18nsymfony-b39.html">前回</a>は、symfonyでi18n対応アプリを作るための設定がほぼ完了しました。あとは、以下のような定常的な作業が残っているので、それについて説明します。</p>

<ul><li>ソースコード中のテキストを__()でくくる</li>

<li>テキストの抽出</li>

<li>テキストの翻訳</li></ul>

<p><span style="font-size: 1.2em;"><strong>■ソースコード中のテキストを__()でくくる</strong></span></p>

<p>　以前のコラム「i18nしてますか？（PHP+gettext）」（<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/08/i18ngettextphp-.html">その1</a>、<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/08/i18ngettextph-1.html">その2</a>）を読んで下さった方は文字列を_()でくくる作業を覚えていると思いますが、symfonyの場合には__()でくくります。アンダースコアが2つですのでご注意ください。</p>

<p>　例えばこんな感じです。</p>

<div class="m_code"><pre># 変更前<br />echo 'Hello World!';<br /># 変更後<br />echo __('Hello World!');</pre></div>

<p>　文字列中に変数が入る場合は、以下のようにします。</p>

<div class="m_code"><pre># 変更前<br />echo &quot;Hello, ${name}!&quot;;<br /># 変更後<br />echo __(&quot;Hello, %name%!&quot;, array('%name%' =&gt; $name));</pre></div>

<p>　変数が入る部分を%name%というプレースホルダーにして、そこに変数の値を入れるという形です。</p>

<p>　さて、前回の最後で以下のようなファイルを作成しました。</p>

<div class="m_code"><pre>&lt;!-- apps/frontend/modules/default/templates/indexSuccess.php --&gt;<br />&lt;h1&gt;Welcome to my i18n test page.&lt;/h1&gt;<br />Go to &lt;?php echo link_to('list page', 'post/index') ?&gt;</pre></div>

<p>　それを、以下のように変更します。</p>

<div class="m_code"><pre>&lt;!-- apps/frontend/modules/default/templates/indexSuccess.php --&gt;<br />&lt;h1&gt;&lt;?php echo __('Welcome to my i18n test page.'); ?&gt;&lt;/h1&gt;<br />&lt;?php echo __('Go to the %list_page%',<br />&nbsp; &nbsp;array('%list_page%' =&gt; link_to('list page', 'post/index'))); ?&gt;</pre></div>

<p><span style="font-size: 1.2em;"><strong>■テキストの抽出</strong></span></p>

<p>　次に、__()でくくったテキストを以下のコマンドで抽出します。概念としてはgettextと大体同じです。</p>

<div class="m_code"><pre>$ symfony i18n:extract frontend ja --auto-save</pre></div>



<p>　コマンドを実行すると、以下のファイルが作成されます。</p>

<p>apps/frontend/i18n/ja/messages.xml</p>

<p>　messages.xmlの中身は以下のようになっています。</p>

<div class="m_code"><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />&lt;!DOCTYPE xliff PUBLIC &quot;-//XLIFF//DTD XLIFF//EN&quot; &quot;http://www.oasis-open.org/committees/xliff/documents/xliff.dtd&quot;&gt;<br />&lt;xliff version=&quot;1.0&quot;&gt;<br />&nbsp; &lt;file source-language=&quot;EN&quot; target-language=&quot;ja&quot; datatype=&quot;plaintext&quot; original=&quot;messages&quot; date=&quot;2010-09-18T15:07:56Z&quot; product-name=&quot;messages&quot;&gt;<br />&nbsp; &nbsp; &lt;header/&gt;<br />&nbsp; &nbsp; &lt;body&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;trans-unit id=&quot;1&quot;&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;source&gt;Welcome to my i18n test page.&lt;/source&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;target/&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;/trans-unit&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;trans-unit id=&quot;2&quot;&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;source&gt;Go to %list_page%&lt;/source&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;target/&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;/trans-unit&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;trans-unit id=&quot;3&quot;&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;source&gt;list page&lt;/source&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;target/&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;/trans-unit&gt;<br />&nbsp; &nbsp; &lt;/body&gt;<br />&nbsp; &lt;/file&gt;<br />&lt;/xliff&gt;</pre></div>

<p><span style="font-size: 1.2em;"><strong>■テキストの翻訳</strong></span></p>

<p>　あとは、ひたすら翻訳するだけです。翻訳後のmessages.xmlは以下の通りです。</p>

<div class="m_code"><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />&lt;!DOCTYPE xliff PUBLIC &quot;-//XLIFF//DTD XLIFF//EN&quot; &quot;http://www.oasis-open.org/committees/xliff/documents/xliff.dtd&quot;&gt;<br />&lt;xliff version=&quot;1.0&quot;&gt;<br />&nbsp; &lt;file source-language=&quot;EN&quot; target-language=&quot;ja&quot; datatype=&quot;plaintext&quot; original=&quot;messages&quot; date=&quot;2010-09-18T15:07:56Z&quot; product-name=&quot;messages&quot;&gt;<br />&nbsp; &nbsp; &lt;header/&gt;<br />&nbsp; &nbsp; &lt;body&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;trans-unit id=&quot;1&quot;&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;source&gt;Welcome to my i18n test page.&lt;/source&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;target&gt;私のi18nのテストページにようこそ。&lt;/target&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;/trans-unit&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;trans-unit id=&quot;2&quot;&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;source&gt;Go to %list_page%&lt;/source&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;target&gt;%list_page%に行く。&lt;/target&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;/trans-unit&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;trans-unit id=&quot;3&quot;&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;source&gt;list page&lt;/source&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;target&gt;一覧ページ&lt;/target&gt;<br />&nbsp; &nbsp;&nbsp; &nbsp;&lt;/trans-unit&gt;<br />&nbsp; &nbsp; &lt;/body&gt;<br />&nbsp; &lt;/file&gt;<br />&lt;/xliff&gt;</pre></div>

<p>　変更したら、以下のコマンドでキャッシュをクリアしてください。</p>

<div class="m_code"><pre>$ symfony cc</pre></div>

<p><span style="font-size: 1.2em;"><strong>■完成＆その後</strong></span></p>

<p><strong>○動作確認</strong></p>

<p>　以上でi18n対応は完成です。下記URLにアクセスすると、</p>

<p>http://www.example.com/i18ntest/frontend.php/</p>



<p>このように日本語のメッセージが表示されるはずです。</p>

<p><a href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2010/10/05/i18nsymfonytopja.png" onclick="window.open(this.href, '_blank', 'width=553,height=391,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img width="300" height="212" border="0" alt="I18nsymfonytopja" title="I18nsymfonytopja" src="http://el.jibun.atmarkit.co.jp/kaigaiengineer/images/2010/10/05/i18nsymfonytopja.png" /></a>


</p>

<p>　言語切り替えのプルダウンが動作するかどうかも確かめましょう。</p>

<p><strong>○宣伝しよう、そうしよう</strong></p>

<p>　これでsymfonyアプリのi18nが完了しました。後は、海外のMLやFacebookとかで宣伝したり、Twitterで英語でつぶやいたりして、みんなに使ってもらいましょう。</p>

<p>メールの例文：</p><blockquote><p>Hi there,</p>

<p>I'm developing a small app for XX（用途、ターゲットユーザーなど）<br />and it's available at the following page.<br />http://www.example.com/super-cool-app-by-a-japanese-programmer.html</p>

<p>I hope some of you find it useful（ゲームとかならfunとか）.<br />Any feedback would be appreciated.</p>

<p>Thanks,<br />名前</p></blockquote><p><strong>○テキストの追加・修正</strong></p>

<p>　PHP+gettextのときに、ソースコード中のテキストが追加・修正された場合の対応方法について説明しましたが、symfonyの場合は面倒なマージ作業などは必要ありません。以下のコマンドを実行するとmessages.xmlが更新されますので、messages.xml内の翻訳を追加・修正してください。</p>

<div class="m_code"><pre>$ symfony i18n:extract frontend ja --auto-save</pre></div>

<p><strong><span style="font-size: 1.2em;">■まとめ</span></strong></p>

<p>　symfonyはそれなりの規模のサイト作成にも耐えられる本格的なフレームワークで、本コラムで示したような比較的簡単な手順でi18n対応できます。</p>

<p>　これから新規でサイトやサービスを作る場合には、symfonyは有力な選択肢となり得ると思いますが、その際に、最初からi18n対応しておくと最近ブームの海外展開がスムーズに行えると思います。</p>

<p>　さて、3回に渡って書いてきた「i18nしてますか？（symfony）」は今回で終了です。疑問点、間違いのご指摘などはコメントいただけると助かります。</p>

<p>　今回のコードはLaunchpad上に置いてありますので、興味のある方は以下のブランチを取得してください。</p>

<p>lp:~k4200/+junk/i18ntest-symfony</p>

<p>　次回は、技術から離れて久しぶりに軽い話題にしようと思っているのですが、若干ネタ切れ気味です。多分海外ネタで何か書きます。</p>

<p>　それではまた。</p>]]>
        
    </content>
</entry>

<entry>
    <title>i18nしてますか？ （symfonyその1）</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/09/i18nsymfony-b39.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2010:/kaigaiengineer//43.2868</id>

    <published>2010-09-28T09:30:00Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>    This work is licensed under Creative...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="スキル" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<style type="text/css"> 
<!--
@import url("http://el.jibun.atmarkit.co.jp/kaigaiengineer/files/code.css");
-->
</style> 



<p><a target="_blank" rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/"><img align="left" alt="Creative Commons License" src="http://i.creativecommons.org/l/by-sa/3.0/80x15.png" style="border-width: 0pt;" /></a>
This work is licensed under <a target="_blank" rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-Share Alike 3.0 Unported License</a>.

</p>

<p>　どうも、鹿島和郎（かしまかずお）です。日本では食欲の秋、プログラムの秋などとよくいわれますが、食欲旺盛（おうせい）なプログラマの皆さまはいかがお過ごしでしょうか。</p>

<p>　わたしの方はというと、エンジニアライフでコラムを書いている方々が集まるオフ会のようなものが先週末にあり参加してきました。その際に</p>

<p>　「みんなネタコラムばっかりで、技術的な事を書いている人ってほとんどいないですよね」「（一同うなずく）」</p>

<p>なんていう場面があったのですが、そんな逆風にも負けずに今回も技術ネタでいきます。内容は前回予告したとおり2回に渡ってsymfonyでのi18nについて説明していきます。具体的には以下の内容を説明します。</p>

<ul><li>設定ファイルの変更</li>

<li>URLにカルチャーを含める設定</li>

<li>ソースコードの修正</li>

<li>言語切り替えメニューの追加</li></ul>

<p><span style="font-size: 1.2em;"><strong>■設定変更（settings.yml）</strong></span></p>

<p>　取りあえずおなじみのfrontend/backendという2つのアプリケーションがあると仮定します。</p>

<p>　apps/frontend/config/settings.ymlに対する変更点としては以下の3つです。</p>

<ul><li>i18nの有効化</li>

<li>デフォルトのカルチャーの設定</li>

<li>I18Nヘルパークラスを有効にする</li></ul>

<p>　i18nの有効化は、単に1行設定を書くだけです。おまじない的なものなので、説明は省略します。</p>

<p>　デフォルトのカルチャーは、ハリウッドを目指すのであればen_US、まずは国内向けで展開するのであればja_JPです。</p>

<p>　ここまでは問題ないかと思いますが、3番目のI18Nヘルパークラスに関して少し説明します。</p>

<p>　I18Nヘルパークラスはその名の通り、i18n関係の処理をまとめたヘルパークラスで、具体的には、後述する__()などがI18Nヘルパークラスで提供される機能です。settings.ymlでI18Nヘルパークラスで有効にすると、すべてのページ（テンプレート）で使えます。settings.ymlで有効にしない場合は、I18Nヘルパークラスを使う際に以下のコードを書く必要があります。</p>

<div class="m_code"><pre>&lt;?php use_helper('I18N') ?&gt;</pre></div>

<p>　settings.ymlの最終的な変更点は以下の通りです。</p>

<div class="m_code"><pre># apps/frontend/config/settings.yml
all:
&nbsp; .settings:
&nbsp; &nbsp; i18n: true
&nbsp; &nbsp; default_culture: ja_JP&nbsp; # 又はen_US
&nbsp; &nbsp; standard_helpers: [Partial, Cache, I18N]
</pre></div>

<p><strong><span style="font-size: 1.2em;">■URLにカルチャー名を含める設定（routing.yml）</span></strong></p>

<p>　分かりにくい見出しですみません。要するに以下のようなURLでアクセスして言語が切り替わる設定です。</p>

<ul>
 <li>http://www.example.com/i18ntest/frontend.php/ja/</li>
 <li>http://www.example.com/i18ntest/frontend.php/en/</li>
</ul>

<p>　具体的には、routing.ymlの&quot;homepage&quot;以外のエントリに対して、以下のように:sf_cultureという文字列を追加します。</p>

<div class="m_code"><pre># apps/frontend/config/routing.yml
# 変更前
default_index
&nbsp; url:&nbsp; &nbsp; /:module
&nbsp; param:&nbsp; { action: index }

default:
&nbsp; url:&nbsp; &nbsp; /:module/:action/*
</pre></div>

<div class="m_code"><pre># 変更後
default_index
&nbsp; url:&nbsp; &nbsp; /:sf_culture/:module
&nbsp; param:&nbsp; { action: index }

default:
&nbsp; url:&nbsp; &nbsp; /:sf_culture/:module/:action/*</pre></div>

<p>　また、各国語用のホームページ（localized_homepage）も用意します。</p>

<div class="m_code"><pre>localized_homepage:
&nbsp; url:&nbsp; &nbsp; /:sf_culture/
&nbsp; param:&nbsp; { module: default, action: index }
&nbsp; requirements:
&nbsp; &nbsp; sf_culture: (?:ja|en)</pre></div>

<p><span style="font-size: 1.2em;"><strong>■ソースコードの修正</strong></span></p>

<p>　ここまでで、事前準備は大体完了しました。後はソースコードを少し修正する必要があります。もう一息ですのでお付き合いください。</p>

<p>　コードの修正内容は、基本的にはsymfonyチュートリアルの以下のページに載っているのものをそのまま使えばOKですが、違いがある場合のみ説明します。</p>

<p>　Day 19: Internationalization and Localization （<a href="http://www.symfony-project.org/jobeet/1_4/Doctrine/ja/19">日本語</a>、<a href="http://www.symfony-project.org/jobeet/1_4/Doctrine/en/19">英語</a>）</p>

<p><strong>○myUser.class.php</strong></p>

<p>　まずはmyUser.class.phpに初回アクセスかどうかを返すメソッド（isFirstRequest）を追加します。</p>

<p>　実装内容は、チュートリアルのページの apps/frontend/lib/myUser.class.php と同じで以下の通りです。</p>

<div class="m_code"><pre>class myUser extends sfBasicSecurityUser
{
&nbsp; public function isFirstRequest($boolean = null)
&nbsp; {
&nbsp; &nbsp; if (is_null($boolean))
&nbsp; &nbsp; {
&nbsp; &nbsp;&nbsp; &nbsp;return $this-&gt;getAttribute('first_request', true);
&nbsp; &nbsp; }
&nbsp; &nbsp; $this-&gt;setAttribute('first_request', $boolean);
&nbsp; }
}</pre></div>

<p><strong>○action.class.php</strong></p>

<p>　次に、routing.ymlの&quot;homepage&quot;で呼び出されるモジュールを修正します。わたしの場合、routing.ymlは以下のようになっています。</p>

<div class="m_code"><pre># routing.yml
homepage:
&nbsp; url:&nbsp; &nbsp;/
&nbsp; param: { module: default, action: index }</pre></div>

<p>　従って、修正するのは以下のファイルです。</p>

<p>　apps/frontend/modules/default/actions/action.class.php</p>

<p>　もしこのファイルが存在しない場合、symfonyのインストールされているディレクトリからコピーしてきて使いましょう。</p>

<div class="m_code"><pre>cp -R /usr/share/pear/symfony/controller/default/ apps/frontend/modules/</pre></div>

<p>　修正内容としては、初回リクエストの場合にはカルチャーをセットし、それ以外の場合はセットされているカルチャーの値に従って、localized_homepageを表示するようにします。</p>

<p>　実装内容は、チュートリアルのページの apps/frontend/modules/job/actions/actions.class.php と同じで以下の通りです。</p>

<div class="m_code"><pre>public function executeIndex(sfWebRequest $request)
{
&nbsp; if (!$request-&gt;getParameter('sf_culture'))
&nbsp; {
&nbsp; &nbsp; if ($this-&gt;getUser()-&gt;isFirstRequest())
&nbsp; &nbsp; {
&nbsp; &nbsp;&nbsp; &nbsp;$culture = $request-&gt;getPreferredCulture(array('ja', 'en'));
&nbsp; &nbsp;&nbsp; &nbsp;$this-&gt;getUser()-&gt;setCulture($culture);
&nbsp; &nbsp;&nbsp; &nbsp;$this-&gt;getUser()-&gt;isFirstRequest(false);
&nbsp; &nbsp; }
&nbsp; &nbsp; else
&nbsp; &nbsp; {
&nbsp; &nbsp;&nbsp; &nbsp;$culture = $this-&gt;getUser()-&gt;getCulture();
&nbsp; &nbsp; }
&nbsp; &nbsp; $this-&gt;redirect('localized_homepage');
&nbsp; }
}</pre></div>

<p><strong>○ここまでで動作確認</strong></p>

<p>　ブラウザで以下のURLにアクセスすると、</p>

<p>　http://www.example.com/i18ntest/frontend.php/</p>

<p>自動的に以下のURLにリダイレクトされればOKです。</p>

<p>　http://www.example.com/i18ntest/frontend.php/ja/</p>

<p><span style="font-size: 1.2em;"><strong>■言語切り替えメニューの追加</strong></span></p>

<p>　これで大体完了なのですが、もうちょっと頑張って、言語切り替えのプルダウンメニューを追加します。行うことは、基本的には本家チュートリアルの通りです。</p>

<p><strong>○sfFormExtraPlugin のインストール</strong></p>

<p>　これは問題ないでしょう。以下の通りインストールします。</p>

<div class="m_code"><pre>$ php symfony plugin:install sfFormExtraPlugin</pre></div>

<p>　※実はこのプラグインにはごく最近までバグがあったのですが、最近は直ったようです。</p>

<p><strong>○languageコンポーネントの作成</strong></p>

<p>　言語切り替えメニューは「コンポーネント」として実装します。その為に、最初にlanguageという名前のモジュールを作成します。</p>

<div class="m_code"><pre>$ php symfony generate:module frontend language</pre></div>

<p>　次に、apps/frontend/modules/language/actions/components.class.php というファイルを作成し、コンポーネントを実装します。チュートリアルのページの内容とほぼ同様ですが、今回対応するのは英語（en）と日本語（ja）ですので、コードは以下のようになります。</p>

<div class="m_code"><pre>&lt;?php
class languageComponents extends sfComponents
{
&nbsp; public function executeLanguage(sfWebRequest $request)
&nbsp; {
&nbsp; &nbsp; $this-&gt;form = new sfFormLanguage(
&nbsp; &nbsp;&nbsp; &nbsp;$this-&gt;getUser(),
&nbsp; &nbsp;&nbsp; &nbsp;array('languages' =&gt; array('ja', 'en'))
&nbsp; &nbsp; );
&nbsp; }
}
?&gt;</pre></div>

<p>　最後に、言語切り替え用のフォームを部品化します。パーシャルと同様の命名規則で、_language.php というファイルを作成します。</p>

<p>　実装内容は、チュートリアルのページの apps/frontend/modules/language/templates/_language.php と同じで以下の通りです。</p>

<div class="m_code"><pre>&lt;form action=&quot;&lt;?php echo url_for('change_language') ?&gt;&quot;&gt;
&nbsp; &lt;?php echo $form ?&gt;&lt;input type=&quot;submit&quot; value=&quot;ok&quot; /&gt;
&lt;/form&gt;</pre></div>

<p><strong>○アクションの作成</strong></p>

<p>　あとは、言語切替用のプルダウンの値が変更されたときに呼び出されるアクションを作成します。</p>

<p>　実装内容は、チュートリアルのページの apps/frontend/modules/language/actions/actions.class.php とほぼ同様ですが、ここでも対応するのは英語（en）と日本語（ja）ですので、コードは以下のようになります。</p>

<div class="m_code"><pre>// apps/frontend/modules/language/actions/actions.class.php
class languageActions extends sfActions
{
&nbsp; public function executeChangeLanguage(sfWebRequest $request)
&nbsp; {
&nbsp; &nbsp; $form = new sfFormLanguage(
&nbsp; &nbsp;&nbsp; &nbsp;$this-&gt;getUser(),
&nbsp; &nbsp;&nbsp; &nbsp;array('languages' =&gt; array('en', 'ja'))
&nbsp; &nbsp; );
&nbsp; &nbsp; $form-&gt;process($request);
&nbsp; &nbsp; return $this-&gt;redirect('localized_homepage');
&nbsp; }
}</pre></div>

<p>　次に、apps/frontend/config/routing.yml に以下のエントリを追加し、change_languageにアクセスされたときに、上で作成したアクションが呼び出されるようにします。</p>

<div class="m_code"><pre>change_language:
&nbsp; url:&nbsp; &nbsp;/change_language
&nbsp; param: { module: language, action: changeLanguage }</pre></div>

<p><strong>○layout.phpの編集</strong></p>

<p>　あとは apps/frontend/templates/layout.php の好きな場所に以下1行を追加し、どのページでも言語が切り替えられるようにします。</p>

<div class="m_code"><pre>&nbsp; &nbsp; &lt;?php include_component('language', 'language') ?&gt;</pre></div>

<p><span style="font-size: 1.2em;"><strong>■動作確認</strong></span></p>

<p>　今回のテストサイト用に、以下のようなトップページを作成しました。</p>

<div class="m_code"><pre>&lt;!-- apps/frontend/modules/default/templates/indexSuccess.php --&gt;
&lt;h1&gt;Welcome to my i18n test page.&lt;/h1&gt;
Go to &lt;?php echo link_to('list page', 'post/index') ?&gt; </pre></div>

<p>　http://www.example.com/i18ntest/frontend.php/</p>

<p>にアクセスすると、</p>

<p>　http://www.example.com/i18ntest/frontend.php/ja/</p>

<p>にリダイレクトされ、以下のようなページが表示されるはずです。</p>

<p>　<a href="http://el.jibun.atmarkit.co.jp/photos/uncategorized/2010/09/27/i18nsymfonytop.png" onclick="window.open(this.href, '_blank', 'width=471,height=395,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img height="251" border="0" width="300" alt="I18nsymfonytop" title="I18nsymfonytop" src="http://el.jibun.atmarkit.co.jp/kaigaiengineer/images/2010/09/27/i18nsymfonytop.png" /></a></p>

<p>　Languageが「日本語」になっているのが分かるかと思います。</p>

<p><span style="font-size: 1.2em;"><strong>■まとめ</strong></span></p>

<p>　ここまででsymfonyでのi18nの設定関連はほとんど完了しました。次回は、ソースコード中のメッセージをメッセージファイルに抜き出して、それを翻訳するところを説明します。</p>

<p>　それではまた。</p>]]>
        
    </content>
</entry>

<entry>
    <title>i18nしてますか？ （symfonyその0）</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/09/i18nsymfony-d3f.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2010:/kaigaiengineer//43.2867</id>

    <published>2010-09-16T08:30:00Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　どうも、鹿島和郎（かしまかずお）です。世間ではそろそろシルバーウィークだという...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　どうも、鹿島和郎（かしまかずお）です。世間ではそろそろシルバーウィークだというのに、わたしはいまだに夏休みすら消化できていません……。みなさまはいかがお過ごしでしょうか。

</p>

<p>　さて、ここしばらく「Programming Scala読書会」あらため「Scala勉強会 in 渋谷」の話題が続きましたが、久しぶりにi18n関係の話を書こうと思います。実は、今回のネタは結構前にある程度書きためてあったものの、公開するタイミングを逃していたものです。プログラム関係は油断するとネタがすぐ古くなってしまいますので、またi18nに戻ることにしました。</p>

<p><span style="font-size: 1.2em;"><strong>■日本発のWebサービスでハリウッドを目指す</strong></span></p>

<p>　今回はsymfonyでのi18nを説明します。詳細は割愛しますが、<a href="http://www.symfony-project.org/">symfony</a>はPHPでのWebアプリケーションフレームワークで、ほかのPHPのフレームワークに比べると比較的大規模なサイトでの実績が豊富にあるようです。</p>

<p>　PHPでのi18nを扱った以前のコラム（<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/08/i18ngettextphp-.html">その1</a>、<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/08/i18ngettextph-1.html">その2</a>）では</p>

<ul><li>gettextを使用して</li>

<li>日本語から英語に翻訳</li></ul>

<p>しました。</p>

<p>　実はsymfonyでもgettextを使用できるのですが（※）、symfonyのチュートリアルだとXLIFFを使った例を推奨してるように読めますので、今回のコラムではXLIFFを使用します。</p>

<p>　また、symfonyの場合、例えばdoctrine:generate-moduleを使って生成されるテンプレートはデフォルトでは英語のテキストが使われていますので、必然的に英語から日本語への翻訳となります。</p>

<p>　なお、symfony ＋ gettextに関しては、以下のページが参考になるかもしれません。</p>

<ul><li><a href="http://it.kndb.jp/entry/show/id/2372">symfonyでgettextを使って国際化（i18n）対応する方法</a></li>

<li><a href="http://labs.unoh.net/2007/10/symfony-i18n-with-gettext.html">ウノウラボ Unoh Labs: symfonyでgettext</a></li></ul>

<p>※というか、gettextが使えると知ったのはつい最近です。</p>

<p><span style="font-size: 1.2em;"><strong>■環境について</strong></span></p>

<p>　対象バージョンはsymfony 1.4.xとします。symfony 1.4系はPHP 5.2.4以降が必要なので、一部の環境（例えばCentOS 5.x）ではPHPのバージョンアップが必要かもしれません。　
</p>

<p>　自前のサーバやVPSの場合は、これを機にPHPのバージョンアップをしてはどうでしょうか。レンタルサーバの場合は……乗り換えも選択肢ですね。</p>

<p>　おすすめVPS・レンタルサーバはこちら！ とかいってアフィリエイトリンクを貼ってやろうかとも思ったんですが、面倒なのでやめておきます。</p>

<p>　わたしが契約しているのは、以下のものです。いずれもPHP 5.2以降が使えます。</p>

<ul><li><a href="http://vps.sakura.ad.jp/">さくらのVPS</a>（試用中）</li>

<li><a href="http://dream.jp/vps/">ServersMan VPS</a>（試用中）</li>

<li><a href="http://knownhost.com/vpshosting.html">KnownHost VPS</a>（割高感が出てきたので解約予定）</li>

<li><a href="http://www.arpnetworks.com/vps">ARP Networks</a> </li>

<li><a href="http://www.dreamhost.com/">DreamHost</a>（レンタルサーバ）</li></ul>

<p><strong>○UNIX系</strong></p>

<p>　CentOSの場合は&quot;Remi&quot;でググればバージョンアップ方法がすぐ分かるかと思いますし、Ubuntu 10.xは5.x.xなので問題ないはずです。そのほかのディストリビューションやFreeBSD、Solarisなどを使っている人の場合、初心者の方は少ないと思いますので説明は割愛します。</p>

<p><strong>○WindowsならXAMPPが簡単</strong></p>

<p>　Windowsの人は、VMwareなどを使用し、その上にLinuxを入れるのもよいですが、勉強用であればXAMPP（Webシステムに必要なパッケージをまとめたもの）を入れるのが便利だと思います。XAMPP 1.7.3だとPHP 5.3.1が入ります。</p>

<p>　ダウンロードは<a href="http://www.apachefriends.org/jp/xampp-windows.html">このへん</a>からどうぞ。</p>

<p><span style="font-size: 1.2em;"><strong>■基礎知識</strong></span></p>

<p><strong>○まずはチュートリアル</strong></p>

<p>　symfonyの素晴らしい点の1つにドキュメントの充実度が挙げられます。APIドキュメントだけではなく、チュートリアル類が非常に充実しているのは特筆に値すると思います。</p>

<p>　symfonyでi18nをやる場合には、チュートリアルのi18nの回ははずせません。<br /><a href="http://www.symfony-project.org/jobeet/1_4/Doctrine/en/19">Day 19: Internationalization and Localization</a> （<a href="http://www.symfony-project.org/jobeet/1_4/Doctrine/ja/19">日本語</a>）</p>

<p>　まずはこちらを一読されることをお勧めします。</p>

<p><strong>○カルチャー（Culture）</strong></p>

<p>　.NETでのi18nではCultureInfoというクラスを触ったりするのですが、symfonyでのi18nでもCultureという用語を使います。Culture≒ロケールと思ってもらえば問題ありません。</p>

<p>　ロケールに関しては以前の<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/08/i18n-0fc5.html">コラム</a>で少し書きましたので、そちらをご参照ください。</p>

<p><span style="font-size: 1.2em;"><strong>■作業の概要</strong></span></p>

<p>　ようやく本題に入りたいと思います。が、i18n対応に必要な作業の詳細説明に入る前に、まずは概要についてご説明します。</p>

<p>　最初に行う設定</p>

<ul><li>設定ファイルの変更</li>

<li>URLにカルチャーを含める設定</li>

<li>ソースコードの修正</li>

<li>言語切り替えメニューの追加</li></ul>

<p>　日々行う作業</p>

<ul><li>ソースコード中のテキストを__（）でくくる</li>

<li>テキストの抽出</li>

<li>テキストの翻訳</li></ul>

<p>　最初にやらなければいけない作業は、PHP + gettextより多いのですが、日々行う作業は、symfonyの方が楽だと思います。</p>

<p><strong><span style="font-size: 1.2em;">■終わりに</span></strong></p>

<p>　ちょっと短いですが、今回は「その0」ということで、この辺で終わりたいと思います。次回から（多分）2回にわたり、具体的に説明していこうと思います。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Programming Scala読もうぜ（3）</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/09/programming-s-1.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2010:/kaigaiengineer//43.2866</id>

    <published>2010-09-07T08:35:00Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　どうも、鹿島和郎（かしまかずお）です。本コラムの更新は基本的には1～2週間に1...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="コミュニティ活動" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　どうも、鹿島和郎（かしまかずお）です。本コラムの更新は基本的には1～2週間に1回程度の予定なのですが、最近はいろいろと動きがあったので若干更新頻度が高めです。旬のネタは勢いがあるうちに書いた方がいいですよね。単に暇なだけ、なんてことはありませんので誤解をなさらないようにお願いいたします。</p>

<p><strong><span style="font-size: 1.2em;">■勉強会関連</span></strong></p>

<p><strong>○会場確保</strong></p>

<p>　さて、前回の勉強会会場は「株式会社××」と伏字にしましたが、会員番号2番が会社の上層部の方に掛け合ってくれた結果、社名公開の許諾がおりました。株式会社××改め<a href="http://www.hde.co.jp/">株式会社HDE</a>さんの会議室を、毎週1回、勉強会会場として公式に使わせていただけることになりました。</p>

<p>　前回は何となくこっそりとやった感はあるのですが、次回は堂々と実施することができます。</p>

<p><strong>○ATNDにイベント登録した</strong></p>

<p>　上述のHDEの方からATNDで参加者を募ってはどうかと提案されましたので、早速イベント登録をしてみました。</p>

<p>　（わたしも含め）参加者の多くはScala初心者ですので、東京近郊でご都合の付く方はお気軽に参加していただければと思います。</p>

<p>　<a href="http://atnd.org/events/7695">Scala勉強会第2回 in 渋谷</a></p>

<p><strong>○Scala勉強会＠東北に参加した</strong></p>

<p>　Twitter上で<a href="http://sites.google.com/site/scalatohoku/">Scala勉強会＠東北</a>をオンライン配信しているという情報を得て、早速9月2日の回を拝聴しました。</p>

<p>　内容は「<a href="http://sites.google.com/site/scalatohoku/scala-watch">Scala Watch</a>」という、Scalaコミュニティの1週間を振り返るコーナー、そして2.8で新しくなった（らしい）コレクションクラスの説明です。個人的には「Scala Watch」が非常に役に立ちました。</p>

<p>　あと、画面配信には<a href="http://lift.jcraft.com/dstream/">独自のしくみ</a>（？）を使っていたようで、画面が鮮明でした。次回か次々回あたりから取り入れたいと思います。</p>

<p>　実は、Scala Watchでは第1回読書会もちょっと触れていただいたので、挨拶がてらTwitterでちょっと反応しようかと思ったのですが、小心者なので何もしませんでした。すみません。</p>

<p><strong>○発表者確保</strong></p>

<p>　後述しますが、9月4日にも<a href="http://scalaza.com/">Scala座</a>というScalaユーザーが集まるイベントに参加してきました。灼熱（しゃくねつ）の名古屋で開催されましたが、関東からの参加者も比較的多かったです。お話しした数名に勉強会の話をしたところ、興味を示したため、半ば強引に発表をお願いして引き受けてもらいました。</p>

<p>　家に引きこもらないで積極的にコミュニティに参加する、という今年の目標（？）はどうやら達成されたっぽいので、この積極性を女性に対しても発揮していくことが来年の目標となりそうです。</p>

<p><span style="font-size: 1.2em;"><strong>■Scala座</strong></span></p>

<p>　Scalaをはじめて約1週間。書いたコードの総行数は20行程度の素人にもかかわらず、日本全国からScalaの猛者が集まるイベントに参加してきました。</p>

<p>　発表内容は、理論的な話、事例紹介、デモ、ライトニングデバッグ、そして名古屋名物ライトニングデバッグと多岐に渡ります。レベルとしても、素人でも比較的分かりやすい話から結構専門的な話までいろいろあり、なかなか密度の濃いイベントだったと思います。</p>

<p>　<a href="http://scalaza.com/?%C2%E81%B2%F3+Scala%BA%C2">まとめページ</a>を作った方がいらっしゃいますので、ご興味のある方はそちらをご参照ください。</p>

<p><strong>○個人的に興味を持った発表</strong></p>

<p>　以下、わたしが興味を持った発表をいくつか挙げたいと思います。</p>

<p><strong>・Scala Daysに行ってみて（<a href="http://www.slideshare.net/kmizushima/swiss-journey">資料</a>）</strong></p>

<p>　<a href="http://days2010.scala-lang.org/">Scala Days 2010</a>というワークショップに行って発表をしてきたそうです。他の方の発表やScala開発チームの方達とのお話などを紹介していました。</p>

<p>　Scala Days 2010のプログラムは<a href="http://days2010.scala-lang.org/node/136">こちら</a>。</p>

<p>　わたしとしては、純粋な技術的興味もありますが、実際に使えるの？ という部分が気になりますので、以下2つの発表は興味深く見られました。</p>

<ul><li><a href="http://days2010.scala-lang.org/node/138/169">Sneaking Scala Into Your Organization</a></li>

<li><a href="http://days2010.scala-lang.org/node/138/159">Scala at LinkedIn: Distributed Computing with Norbert</a></li></ul>

<p><strong>・Lift on GAE/J（<a href="http://www.slideshare.net/pomu0325/lift-on-gaej">資料</a>）</strong></p>

<p>　Scalaで動くWebフレームワークを<a href="http://code.google.com/intl/ja/appengine/">Google App Engine</a>上で動かす際の問題点を説明していました。結論としては、現段階ではLiftをGAEで使うのはまったくおすすめできないとのことです。</p>

<p><strong>・Scala 2.8でひるまのおしごとしてみたよ（<a href="https://docs.google.com/leaf?id=0B3gzkyf0Dd_5M2QzMGRkOTUtYTJlNC00YWZhLTg4ODgtOTlmYTg1M2NiNWU3">資料</a>）</strong></p>

<p>　Scalaを使ったサービスの事例紹介です。LTなので細かい話は聞けませんでしたが、この内容＋αで勉強会で発表していただけることになったので、そのときにまたいろいろ質問しようと思ってます。</p>

<p>　ちなみにどういった夜のお仕事をされているのかは不明です。</p>

<p><strong>・ライトニングデバッグ</strong></p>

<p>　きしめん、味噌煮込み、名古屋台湾ラーメンなどの独自の食文化、そして、派手な結婚式、名古屋撃ち、名古屋嬢などの他に類を見ない数々の文化を誇る名古屋。IT関係のコミュニティ活動が非常に活発なのも特徴だそうです。独自性を重んじる名古屋の中でも一際異彩を放つのが、近年積極的に行われている「ライトニングデバッグ」だそうです。</p>

<p>　形式としては、5分程度の持ち時間の前半でコード（バグ持ち）の説明などを行い、後半で会場のみんなの英知を結集させてデバッグをします。持ち時間内にデバッグが完了すればOKというもの。</p>

<p>　わたしは一番後ろの席に座っていたためスクリーン上のコードが読めず、また、読めたところで何の貢献も行えないのでちょっと置いてけぼり感があったのですが、どうやらバグは直せたようです。</p>

<p>　ちなみに発表のタイトルは「ワラビモチとScalaについて」でした。資料はネットには上がっていないようです。</p>

<p><strong>○懇親会</strong></p>

<p>　知らない人ばっかりのイベント・勉強会の類に参加するのは今回が初めてでした。ですが、参加登録の際に勇気を出して「懇親会参加」のラジオボタンもクリックしました。</p>

<p>　懇親会は近くのチェーン居酒屋で開催。横長いテーブル席だったので、あまり沢山の方とはお話できませんでしたが、いろいろと興味深いお話を聞かせてもらいました。</p>

<p>　個人的に興味深かった話題がScalaコンパイラ（Scalaのソースコード→classファイルにコンパイル）の速度の話でした。</p>

<p>　　「Scalaコンパイラって少し遅いね」に対して、以下のような意見が出ました。</p>

<ul><li>それでScalaイラネっていう人も、もしかしたらいるのかも</li>

<li>頻繁にコンパイルするっていう使い方ってあまりしないと思う</li>

<li>Rubyみたいな使い方をScalaに求めるのがそもそも間違い</li>

<li>型推論など、Javaのコンパイラに比べてやるべきことが多いので、遅くなるのは仕方ない</li></ul>

<p>　ScalaをRubyなどのスクリプト言語の代替にするというのは、少なくとも言語の設計者や現在のScalaユーザーの大半の方にとっては想定外と思われます。ただ、適材適所の重要性はもちろん理解していますが、個人的には、あるツール・言語の使い方を最初から限定するのではなく、当初想定されていない使い方でも、ユーザーが自由にやることで何かが生まれる可能性もあると考えています。ですので、スクリプト言語的な使い方をするにはどうすればいいのか、みたいな議論もありかなと思ってます。</p>

<p><strong>○2次会、そして3次会</strong></p>

<p>　2次会は当然。有志6名による3次会も、某ビジネスホテルのロビーにて深夜2時まで開催されました。いろいろためになるお話を聞けて、個人的には満足しています。</p>

<p>　遅くまで付き合ってくださった方々、ありがとうございます。</p>

<p><strong>○雑感</strong></p>

<p>　さて、本イベントに参加して思ったことをいくつか書いていこうと思います。</p>

<p><strong>・業種の壁？</strong></p>

<p>　参加者の多くが高い技術を持った方々で、職種としては現場のエンジニアの方が中心でした。また、業種としては（わたしがお話しした範囲では）Web系の方が多かったです。</p>

<p>　わたしは業務系のシステムを扱うことが多いのですが、業務系とWeb系の間では技術者の交流があまりないような気がします。みなさんの周りではどうでしょうか。そうした「見えない壁」みたいなのを取り除いていくと、いろいろとみんなが幸せになれるような気が何となくしてます。</p>

<p>　ギラギラした起業家（準備中も含む）が集まる暑苦しい「異業種交流会」みたいなのにはあまり興味はありませんが。</p>

<p><strong>・最先端の技術者≠尊敬の対象</strong></p>

<p>　そのほか、印象に残っているのが、懇親会の席で数名の方が
</p>

<p>　「（今回のようなイベントに）行くっていっても、あまり理解されない」</p>
<p>　「よくて『真面目なんですね』っていう反応が返ってくるくらい」</p>
<p>　「どうせ引かれるので会社の同僚には話はしてない」</p>

<p>
などと言っていたことです。

</p>

<p>　高い技術・意欲を持ったエンジニアの方々が、必ずしも尊敬の対象ではない、変わり者・マイノリティとなっているのは、なかなか興味深いと思いました。日本でのプログラマ軽視に関しては、以前のコラムでも少し触れたような気がしますが、もっと多くの人が考えていくべき問題だと思います。</p>

<p><span style="font-size: 1.2em;"><strong>■Programming Scalaはどうなったの？</strong></span></p>

<p>　タイトルが「Programming Scala読もうぜ」のくせに、<a href="http://programming-scala.labs.oreilly.com/">本</a>の話にまったく触れないのも問題ですので、少しだけ。</p>

<p>　先週もぼちぼち読み進めてはいたのですが、本書のサンプルプログラムのコンパイルで依存関係などが出てきて、だんだん面倒になってきました。ということで、現在サンプルプログラムのビルド環境を作っています。</p>

<p>　当初は<a href="http://code.google.com/p/simple-build-tool/">sbt</a>（simple-build-tool）というコマンドラインのツールを使おうと思ったのですが、名古屋でMavenの利用を薦められたので、そちらを使って悪戦苦闘中です。ある程度めどが立ったら勉強会で発表します。</p>

<p>　サンプルプログラムのダウンロードはO'Reillyの<a href="http://examples.oreilly.com/9780596155964/">ページ</a>より。</p>

<p><strong><span style="font-size: 1.2em;">■まとめ・今後</span></strong></p>

<p>　Scala座は、参加費・新幹線代・飲み代・ホテル代・お土産代……などを合わせるとそれなりの出費を伴いました。しかし、それ以上のものを得られたと思います。</p>

<p>　勉強会に関しては、ぼちぼち軌道に乗ってきたのでは、といい切ってしまいます。早めに勝利宣言を出すのが未成熟な人間の特徴ですので、どうかご容赦ください。</p>

<p>　あとはわたし自身がもう少しレベルアップするとともに、初心者向けの内容を勉強会やブログなどで公開しようと思ってます。英語が苦手な方も多いようですので、本家MLのまとめを毎週ブログで紹介しようかとボンヤリ考えています。</p>

<p>　さて、思いつきで始めた「Programming Scala読もうぜ」シリーズは今回でいったん終了として、次回からまたi18n関係の話でもしようかと思います（多分）。</p>

<p>　それではまた。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Programming Scala読もうぜ（2）</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/09/programming-sca.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2010:/kaigaiengineer//43.2865</id>

    <published>2010-09-02T08:30:00Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>■前回のあらすじ 　業界経験約10年の中堅技術者が、たまたま読んだ聖典（アプレン...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="コミュニティ活動" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p><strong><span style="font-size: 1.2em;">■前回のあらすじ</span></strong></p>

<p>　業界経験約10年の中堅技術者が、たまたま読んだ聖典（アプレンティスシップパターン）に影響され、関数型言語であるScalaを勉強しようと決意する。聖典の教えのままに東京近郊でのコミュニティ・勉強会がないかをチェックするものの、大都会東京は関数型言語勉強会不毛の地である事実に打ちのめされる。</p>

<p>　しかし、聖典中の「存在しない場合は自分で作りなさい」という教えに従い、オンラインで無料で読めるProgramming Scalaという書籍のオンライン読書会を計画する。</p>

<p><strong><span style="font-size: 1.2em;">■前回からの進ちょく</span></strong></p>

<p>　どうも、鹿島和郎（かしまかずお）です。まずは前回からの進ちょくを報告します。</p>

<p>　わたしが自分でやったことは以下の通りです。</p>

<ul><li><a href="http://bit.ly/byfGVd">資料</a>を作成した</li>

<li>Twitter上でちょびっと宣伝した</li>

<li>知り合いにちょびっと宣伝した</li></ul>

<p>　他の方からもいろいろな情報、ご協力をいただきました。</p>

<ul><li>以前の会社の後輩から、彼の同僚が興味があるとの情報をもらった</li>

<li>Twitter上で、ある方からScalaの導師を紹介していただいた</li>

<li>Twitter上で、別の方からScalaのメーリングリスト（Googleグループ）を教えてもらった</li>

<li>Twitter上で、さらに別の方より、<a href="http://sites.google.com/site/scalatohoku/">東北のScala勉強会</a>がオンラインでやっていることを教えてもらった</li>

<li>同じ方より、Scala座というイベントへの参加をすすめられた</li></ul>

<p>　皆さん親切に教えてくださって、大昔のバーモントカレーの……すみません。もういいません。</p>

<p><span style="font-size: 1.2em;"><strong>■まずは自分が動かねば</strong></span></p>

<p>　人を集めるには、やっぱり自分が行動しないとダメですよね。ということで、慣れないことをいっぱいやってみました。</p>

<p><strong>○資料作成</strong></p>

<p>　取りあえずGoogle Docsで資料を作り始めました。簡単に公開できるので便利ですが、やっぱりPowerPointに慣れていると機能面で不満もあります。その後、<a href="http://www.slideshare.net/">SlideShare</a>なるものの存在を知ったので、今後はこっちを試してみようと思います。</p>

<p>　資料の内容は、基本的には本文の要約です。それをもとに</p>

<ul><li>技術的な解説</li>

<li>英語の解説</li></ul>

<p>をやろうと思ってました。資料はこちらの<a href="http://bit.ly/byfGVd">ページ</a>より。</p>

<p><strong>○宣伝活動を少々</strong></p>

<p>　人に大々的に宣伝するのって苦手なんです。Twitterでぼそっとつぶやいて、後は興味を持ってくれそうな知り合い数名にメールを出したくらいです。</p>

<p>　MLにメールも出したんですが、それすらかなり緊張しました（詳しくは後述）。</p>

<p><strong>○元後輩の同僚が興味有り</strong></p>

<p>　以前の会社の後輩（会員ナンバー2番）にメールをしたところ、彼の同僚などにメールを転送してくれて、そのうちの1名が興味を示してくれました。早速メールをして、参加メンバーとして勧誘成功。会員ナンバー3番です。</p>

<p>　ちなみに、以下は彼のメール。</p>

<blockquote><p>&gt; つまりは、Scalaの輪講をやろうということでしょうか？</p></blockquote>

<p>　「輪講」って単語、かなり久しぶりに聞きました。ちなみに彼の大学時代の研究室では「コロキ」と呼んでいたとか。ググったところ、ラテン語由来らしいです。</p>

<p><span style="font-size: 1.2em;"><strong>■有用な情報が続々集まる</strong></span></p>

<p><strong>○北北東にScala導師あり</strong></p>

<p>　Twitter上で、とある方からScala導師の存在を教えていただきました。英語だとguruです。聞くところによると、わたしの自宅から北北東に数十里行ったところに普段はいらっしゃるとか。直接面識はないので名前を出すのは差し控えますが、海外のカンファレンスなどでも発表を行っている求道者だそうです。</p>

<p>　早速その方をフォローしました。</p>

<p><strong>○北方の地にてオンライン勉強会が存在するとの情報</strong></p>

<p>　Twitter上で別の方よりScalaのメーリングリスト（Googleグループ）を教えていただきました。早速参加し、勇気を振りしぼり「初めまして」メールを出したところ、（恐らくそのメールを見たと思われる）数名の方がTwitterでわたしをフォローしてくれました。</p>

<p>　そのうちの1人の方からのTweetで、衝撃の事実が。</p>

<blockquote><p>木20時だと、scala東北さんの<a href="http://j.mp/cmEo04">オンライン勉強会</a>と時間がかぶりますので別の曜日ではどうでしょうかー？</p></blockquote>

<p>　その勉強会の名前自体は、ググって知ってたのですが、「東北」という2文字が入っていたためノーチェックでした。まさかオンラインでやっているとは……。</p>

<p>　早速、第90回を拝聴させていただく予定です。</p>

<p><strong>○Scala座の新人</strong></p>

<p>　先ほどのオンライン勉強会を教えてくださった方から、9/4（土）に<a href="http://scalaza.com/ScalaZa01/">Scala座</a>というScalaに関するイベントに参加してはどうか、とすすめられました。これも存在自体はググって知っていたものの、場所が名古屋ということでためらっていたのですが、せっかくなので参加することにしました。</p>

<p>　いやぁ、Scalaを勉強し始めて1週間程度なのに、こんなハイレベルそうなところに行っていいのかとも思います。しかし、せっかくなのでいろいろ最先端の話を聞いてこようと思います。ちなみにLTの話者も募集していたのですが、Scala経験1週間＆LT未経験だとさすがにツラいので、今回は見送りました。</p>

<p>　本イベントは、（多分）次回あたりに簡単にレポートしようと思います。</p>

<p><strong>○新たな参加者が</strong></p>

<p>　まずは内輪だけでやるかーと思っていた矢先、上述のメーリングリストを見た方（Tさん）から参加希望のメールをいただきました。しかもその人のTwitterとか見てみたら、どうやらかなりの技術の鉄人らしい。若干腰が引けたのですが、「初心者向けの内容でもよろしければ……」という内容の返信をしたところ、快くOKしてもらいました。</p>

<p>　後述しますが、約1カ月後に発表をしていただけることになりました。</p>

<p><strong><span style="font-size: 1.2em;">■そして勉強会！</span></strong></p>

<p><strong>○オンラインからオフラインへ</strong></p>

<p>　事前準備をしているときに、会員番号2番からこんなメールが来ました。</p>

<blockquote><p>&gt; ところで、当日の動きなんですが、<br />&gt; 20:00ごろに鹿島さんが××（筆者注：彼の会社）に来られて、<br />&gt; 会議室で一緒にScala、と認識であってますか？<br />&gt; （9/1 20:00からの会議室はすでに押さえてあります）</p></blockquote>

<p>　え？ 自分が自宅からUstreamで流して、それを見てもらって、後はオンラインで適当にやりとりしようと思ってたんだけどなー。</p>

<p>　でも、せっかくなんで会議室を使わせてもらって、そこでの勉強会の内容をUstreamで配信する、という形に方針転換しました。</p>

<p><strong>○第1回（？）開催</strong></p>

<p>　さて、記念すべき読書会第1回は9/1に実行しました。<a href="http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/08/programming-sca.html">前回</a>のはテストなのでカウントしないこととします（あるいは第0回とでも呼んでおきます）。今後、仮に参加者が増えてきたときに、</p>

<blockquote><p>「あの第0回があったから今の隆盛があるんだよなー」</p></blockquote>

<p>と、古参スマップファンが某オートレース選手を懐かしむかのごとく、公式には存在しないことになっている第0回を振り返れたらいいなぁなんて思ってます。</p>

<p>　当日は19時半にTさんと渋谷モヤイ像前で待ち合わせ。5分位前に着いてあたりを見回すとiPadをいじっている人がいたので、まぁこの人で間違いないだろうと90％の確信は持ちつつも、念のため事前に聞いていた携帯をコール。結果は正解でした。</p>

<p>　その後、Scalaとの出会いやTさんが参加したRubyKaigiの話とかをしつつ、会場である株式会社××（取りあえず今回は伏字）を目指します。</p>

<p>　道中で、晩飯終了直後の会員番号2番、3番と合流し、いざ会議室に。</p>

<p>　会議室でPCをセットアップしてたら、なんだか人が続々と……どうやら、会員番号2号が後輩をたくさん連れてきてくれたようです。当初の4人だけの予定が結局9名が集まり、Ustreamでも5～10人くらいが見てくれたようでした。</p>

<p>　みなさま、ありがとうございました。</p>

<p><strong>○やったこと</strong></p>

<p>　さて、肝心の勉強会の内容ですが、<a href="http://programming-scala.labs.oreilly.com/">Programming Scala</a>の第1章のうち、「Why Scala」の部分を主に説明しました。英語の解説もするつもりでしたがほとんどしてません。</p>

<p>　あとは、各人のScalaを始めたきっかけなどを話し合ったり、クロージャーって何って話がでたり。個人的には結構楽しめました。参加された方はいかがでしたか。</p>

<p>　今回の読書会の内容は、わたしのブログの方に<a href="http://www.kaigai-engineer.com/blog/?p=65">メモ書き</a>程度に残しておきましたので、興味のある方はご覧ください。 </p>

<p><span style="font-size: 1.2em;"><strong>■今後の方針</strong></span></p>

<p>　取りあえず、何とか第1回は無事終了し、今後の発表に関してもオフライン組から2名、Ust組から1名手を挙げてもらいました。内容もProgramming Scalaに関係なく、Scalaに関することなら何でもOKということにしました。</p>

<p>　基本的には毎週水曜にゆるい感じでやっていければと思っています。</p>

<p>　さて、最後にわたし自身のScalaの勉強の進ちょくに関しても少し書きます。&quot;Programming Scala&quot;を、サンプルプログラムを実行しながら読み進めているのですが、現在第4章の「Traits」まできました。だんだん面白くなってきたところです。</p>

<p>　これからどんどんスピードアップをして、今年中には普通にプログラムが書けるレベルになりたいです。来年の前半には、実際のプロジェクトで使ってみたいというひそかな野望もあったりします。</p>

<p><strong><span style="font-size: 1.2em;">■まとめ</span></strong></p>

<p>　思いつきから始まった今回のProgramming Scala読書会。取りあえず上々の滑り出しをすることができました。いろいろな情報を下さった皆様、参加して下さった方々、どうもありがとうございます。</p>

<p>　次回は、Scala座の参加報告や、Scalaの技術的な話題にも触れたいと思います。</p>

<p>　最後に、読書会改め、勉強会の情報をもう1度ここに書いておきます。</p>

<ul><li>概要は<a href="http://www.kaigai-engineer.com/blog/?p=59">こちら</a>（追記・修正予定です）</li>

<li>参加方法
<ul>
<li><a href="http://bit.ly/9FZYGE">Ustream</a>で視聴してください。当たり前ですが途中入場・途中退室OK。</li>

<li>オフライン（渋谷）で参加したい場合は、わたしあてにご連絡ください。</li>
</ul>
</li>

<li>Twitterをチェックしておくと何かいいことがあるかもしれません。
<ul>
<li>わたしのアカウント： <a href="http://twitter.com/kaigaiengineer">@kaigaiengineer</a> </li>

<li>ハッシュタグ： #rpscala</li>
</ul>
</li>
</ul>

<p>　それではまた。</p>

<p>p.s. 聖典↓はおすすめです。★5つ付けていいくらい。</p>

<iframe scrolling="no" frameborder="0" src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_top&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kaigaiengineer-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;asins=4873114608" marginwidth="0" marginheight="0" style="width: 120px; height: 240px;"> </iframe>]]>
        
    </content>
</entry>

<entry>
    <title>Programming Scalaを読もうぜ（1）</title>
    <link rel="alternate" type="text/html" href="https://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/08/programming-sca.html" />
    <id>tag:el.jibun.atmarkit.co.jp,2010:/kaigaiengineer//43.2864</id>

    <published>2010-08-26T11:30:00Z</published>
    <updated>2016-04-28T00:41:30Z</updated>

    <summary>　どうも、鹿島和郎（かしまかずお）です。昔、「BANDやろうぜ」って雑誌ありまし...</summary>
    <author>
        <name>鹿島和郎（かしまかずお）</name>
        
    </author>
    
        <category term="コミュニティ活動" />
    
    
    <content type="html" xml:lang="ja" xml:base="https://el.jibun.atmarkit.co.jp/kaigaiengineer/">
        <![CDATA[<p>　どうも、鹿島和郎（かしまかずお）です。昔、「BANDやろうぜ」って雑誌ありましたよね（いまもあるのかもしれませんが）。今回のタイトルはそんなノリで元気よく読んでいただければ幸いです。</p>

<p><span style="font-size: 1.2em;"><strong>■熟練職人になろうぜ</strong></span></p>

<p><strong>○本を読もうぜ</strong></p>

<p>　ちょっと前にTwitter上で（少しだけ）話題になっていた「アプレンティスシップパターン」という本を先日読みました。何にでも影響を受けやすいわたしとしては、次の日から早速「熟練職人になるぞ！」という誓いを立てました。</p>

<iframe scrolling="no" frameborder="0" src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_top&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=kaigaiengineer-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;asins=4873114608" marginwidth="0" marginheight="0" style="width: 120px; height: 240px;"> </iframe>

<p>　本の内容についてはいろんな人が書評や感想などを書いているので、ここでは詳しく説明しません。ざっくりいうと「ソフトウェア開発者見習い」（アプレンティス、apprentice）がどうやって技術を伸ばしていくかについての実践的なパターンが紹介されています。</p>

<p>　わたしは職歴としては、そこそこの年数があるためか、正直いって最近は技術的な勉強を怠りがちでした。でも、この本で目から鱗が落ちた部分もあります。最近はまた学ぶ意欲を取り戻すとともに、本書に紹介されているパターンをできるだけ実践するように心がけています。

</p>

<p>　さて、そんなわたしが今回実践しようとしてるのは以下のようなパターンです。</p>

<ul><li>学びを共有する（Share What You Learn）</li>

<li>無知をさらけ出す（Expose Your Ignorance）</li>

<li>白帯（The White Belt）</li>

<li>学びを記録する（Record What You Learn）</li>

<li>気の合った者同士（Kindred Spirits）</li></ul>

<p><strong>○新しい言語を勉強しようぜ</strong></p>

<p>　いままでいろいろな言語を使ってきました。しかし、ここ最近はあまり新しい言語を勉強しておらず、何か新しいのを覚えようと思い立ちました。</p>

<p>　そういえば、最先端のギーク達の間では（？）関数型言語なるものがちょっと話題になっているそうです。その噂を小耳に挟み、関数型言語が何なのかもよく分からないまま、「関数型言語を1つ覚えよう」と決めました。</p>

<p>&nbsp; Wikipediaの<a href="http://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E">関数型言語のエントリ</a>を見ると簡単な説明があり、</p>

<ul><li>「純粋」と「非純粋」という概念での区分</li>

<li>「静的」と「動的」型付けによる区分（それに加えて「型なし」というのもあるらしいです）</li></ul>

<p>で、主要な関数型言語が分類されていました。</p>

<p>　LISPは当然、Haskell、F#などの名前は聞いたことがありました。しかしそれらの言語の特徴はまったく分かりません。それでも、取りあえず1つを選ばなければいけませんでした。</p>

<p>　まずは先ほどのWikipediaでの区分ですが、「純粋」と「非純粋」に関しては、素人の自分にとっては純粋性にこだわる意味がその時点ではよく分からなかったので（というかいまでも分かってません）、この区分により候補を振り分けることはしませんでした。</p>

<p>　「静的」と「動的」に関しても、両方のタイプの言語を使ったことがあるので、正直どちらでもいいと思ってしまいました。</p>

<p>　要するに、Wikipediaのエントリは、「どの関数型言語を学ぶべきか？」 というわたしの疑問にはまったく答えてくれないことが分かりました。</p>

<p>　ただ、自分の中では</p>

<p>　「せっかく勉強するなら、何かに使いたい」</p>

<p>という思いがありましたので、実用性を判断基準として、言語を1つ選ぶことにしました。</p>

<p>　その後、さらに1時間くらいネットを検索した結果、</p>

<ul><li>Twitterでも使われてる</li>

<li>JVM上で動き、Javaの過去の資産が生かせる（※）</li>

<li>LiftなるWebフレームワークがあるらしい</li></ul>

<p>という3つの理由により、Scalaを選ぶことにしました。</p>

<p><span style="font-size: 0.8em;">※CLR上（.NET）でも動きます。</span></p>

<p><span style="font-size: 1.2em;"><strong>■Scalaやろうぜ</strong></span></p>
<p><strong>○コミュニティ探そうぜ</strong></p>

<p>　さて、Scalaを勉強する事は決定しました。「アプレンティスシップパターン」（長いので、以降「アプパタ」と略します）によると、ローカルのコミュニティに参加すべしとあるのですが、極度の出不精なわたしはいままでそういったコミュニティ活動などには参加したことがありません。</p>

<p>　しかしそのままでは永遠に見習いのままです。意を決して<a href="https://www.google.com/calendar/embed?src=fvijvohm91uifvd9hratehf65k%40group.calendar.google.com">IT勉強会カレンダー</a>でScalaの勉強会がないかを探してみることにしました。その結果、Scalaの勉強会はいくつか見つかりました。が……なぜか東京近辺<strong>のみ</strong>開催予定がありません。むー。</p>

<p>　PCの前で涙を流し続けること1時間、仕方ないので取りあえず独学で勉強することにしました。</p>

<p><strong>○Programming Scalaが無料で公開されてる！……ぜ</strong>

</p>

<p>　さて、徐々に本題に近づいてきました。もう少しお付き合いください。</p>

<p>　これもしばらく前に少し話題になっていましたが、O'Reillyが古い書籍のオンライン版を無料で公開するようになったようです。話自体は聞いていて知っていたのですが、特に詳しく調べてみました。Scalaを勉強しようと思っていろいろネットを調べていたらO'Reillyの「Programming Scala」が無料で公開されていることを発見しました。感激です。大昔のバーモントカレーのCMが頭に浮かんだのはわたしだけではないはずでしょう。</p>

<p>　<a href="http://programming-scala.labs.oreilly.com/">Programming Scala</a></p>

<p>　「取りあえず積ん読」派の自分としては、独学で勉強すると決めてからすぐにAmazonで「Scalaプログラミング入門」という本を買ったんですが、先に知っていれば……。</p>

<iframe scrolling="no" frameborder="0" marginheight="0" marginwidth="0" src="http://rcm-jp.amazon.co.jp/e/cm?t=kaigaiengineer-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4822284239&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="width: 120px; height: 240px;"> </iframe>


<p>　さて、オンライン版の「Programming Scala」ですが、当然、英語版です。無料でこんな素晴らしいリソースがあるのに、英語というだけで気後れしている人も多いのではないかと思います。

</p>

<p><strong>○読書会やろうぜ</strong></p>

<p>　ここでひらめきました。</p>

<p>　「『アプパタ』ではコミュニティがなければ自分で作れって書いてあったし、東京でProgramming Scalaの読書会をやろう」</p>

<p>　われながら、いいアイデアのように思えてきました。とはいえ、IT業界に（限りませんが）友達が少ないので、取りあえず1人で勝手に始めて興味がある人がいたら参加してもらう、という形を取ることにしました。</p>

<p>　だからといって、1人で貸し会議室とか借りて読書会をやっても危ない人に思われる可能性がありますし、そもそもお金がもったいないです。</p>

<p>　そこでまた少し考えて、<a href="http://www.ustream.tv/">Ustream</a>でやろうと思いつきました。以前どっかの勉強会がオンライン配信してたのですが、それが面白かったのを思い出しましたので。いいところは何でも取り入れるのが日本人のいいところだと思いますし、わたしのポリシーでもあります。</p>

<p>　内容は以下の通りです。</p>

<p>　「Programming Scala英語版を読んで、Scalaを勉強しつつ、文中の英語の解説をする」</p>

<p><span style="font-size: 1.2em;"><strong>■試行 → 本稼働……やろうぜ</strong></span></p>

<p>　わたしはあまりコミュニケーション能力は高くないのですが、（自分1人でできることに関して）行動力だけはある方なので、Ustream配信の練習も兼ねて早速第1回を実行してみました。</p>

<p>　デスクトップ配信のセットアップ自体に結構戸惑ったのですが、1～2時間格闘した後に何とか配信開始。</p>

<p>　で、結果ですが……誰も見てくれません。まぁ、そうですよね。皆さん忙しいでしょうし、30代のおっさんが英語のテキストをボソボソ読みながらたまに日本語でブツブツいったりしてるだけですし。</p>

<p>　でも、「ちゃんと配信できてるよー」とチェックしてくれた人たちもいらっしゃって、大昔のバーモントカレーのCMが頭に……。しつこいですね。チェックしてくださった方、どうもありがとうございました。</p>

<p>　さて、第1回は完全な失敗でしたが、ここでめげていても仕方ないので、第2回を実行予定です。今度は事前準備（＆事前周知！） をしっかりやって、資料とかも用意しようと思います。</p>

<p>　今後の流れとしてはこんな感じにしようと思います。</p>

<ul><li>事前にテキストを読む（いまのところ、自分1人だけ）</li>

<li>資料作成してネットで公開（いまのところ、自分1人だけ……）</li>

<li>読書会＝Ustreamで発表（いまのところ、自分1人だけ……）</li>

<li>読書会の内容をまとめてコラムにする（今のところ(ry）</li></ul>

<p>　誰か時間のある・興味のある人、参加者絶賛大募集中です。Twitterで<a href="http://twitter.com/kaigaiengineer">@kaigaiengineer</a>まで声かけてください。告知とかもTwitterでつぶやきます。Ustreamは<a href="http://www.ustream.tv/channel/let-s-read-programming-scala-in-english-for-japanese">こちら</a>です。</p>

<p>　あるいは、すでに東京近郊でひっそりScala勉強会とかしてる人達がいたら、参加させてください。雑用は何でもやりますので。ぞうきんがけも、打ち上げのための居酒屋の予約も得意です。</p>

<p>　なお、日本語でのScalaの情報として、＠ITのライバルサイト（？）であるITproに素晴らしい<a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20080613/308019/">連載記事</a>がありますので、なるべく内容がかぶらないようにしたいと思います。</p>

<p>　長くなってきましたので、今回はこの辺で終わろうと思います。次回は1人読書会の報告ができればいいなと思ってます。i18nシリーズの続きは気が向いたら書きます……</p>

<p>　それでは、また。</p>]]>
        
    </content>
</entry>

</feed>
