未分類

Oracle University – 初心者、学生、Java 入門者向けセミナーにて講演しました – 質問と答え #oujava

先に紹介したセミナーにて講演してきました。

昨日も言いましたが、良ければ感想を #oujava というハッシュタグをつけてブログに書いて頂けるとうれしいです!

初心者、学生、Java入門者向けと対象が広いので参加者がどういう期待をもっているのか予測が難しかったです。後半の私のパートが目当てだとすれば
・Javaで仕事をするのは今後どうなんだろうか
・何がきっかけで(コロコロ)転職しているのか
・社長ってどうなの?
といったところに興味があるのかなーと想定して今どんなことをやっているのか、どんなことをやってきたのか、キャリアビジョンなどにもちろんJavaを交えてお話をしました。

一方的に話をするだけでなく質問をしてもらうことにし、また手をあげて質問するのはおっくうだろうからと全員に紙に質問をかいてもらうという方式をとりました。
その場で全部に答えるのは無理なので一部だけピックアップしましたが、残りの質問の回答をこちらに書きます。

・Sun認定Javaプログラマーの試験の仕組み(レベル)がよくわかりません。何から受けたら良いでしょうか?
今の資格体系は全然詳しくないですがまずJava SE 7認定資格のブロンズからですかね。

・今後やりたいことはなんですか?
自分が欲しいアプリケーション、サービスをたくさん作る。
参考: 第3回 山本裕介(yusuke)~イクメンエンジニアのはたらきかた:シューカツ女子ともよの会社訪問記―知りたい!あの人のはたらきかた|gihyo.jp … 技術評論社

・夢・目標はなんですか?
正直なところここが目標、これが夢、というのは定めていません。その時点でやりたいこと、やってみたいことをやっています。

・Twitter4Jはどうして広まったのだと思いますか?
当時同等のが存在しなくて、自分が欲しかったものなので。あと広まるよう、使いやすくなるよう色々工夫しました。
参考: Twitter4Jのプロモーション戦略 – たくさん使ってもらうためにしたこと #jjug_b11

・Javaの旬って?今後も大丈夫?Javaプログラマは今後も必要とされる? x 2
「Java使ってるの?まじかっこいい!おしゃれ!」という意味での旬は過ぎてます。仕事になる、お金になる、資産が豊富という意味ではしっかり熟れているのでずっと旬とも言えるかも。容易な文法、頑ななまでの後方互換性と、エンタープライズ/サーバサイドで鍛え上げられたGCやコンパイラは大変な強みなので今後も大丈夫だと思います。とはいえあくまでプログラミング言語、実行環境は手段でしかないのでJavaだけに投資するよりも他の言語もちょっとかじりながら自分の好みやプロジェクトの状況を見て判断していくのが良いかと。

・転職する上で重要と感じることは?どういうタイミングで転職する?キャリアビジョンの描き方
転職することを前提に仕事する必要はないけど、するのとしないのとで自分が伸びるか、ちゃんと食えるか、楽しいか、自分の正義を貫けるかといったことを軸に考えています。

・日本のスタートアップについてどう思いますか?
どんどんチャレンジできる土壌ができていて良いと思います。
自分の場合は会社を作ったとはいえ、手間暇がかかることをしてはいるけれども特にチャレンジングなことをしているわけではないので最近話題のWeb系スタートアップとはちょっと違うかも。

・どこでも仕事ができるのになぜ会社へ行くんですか?
– まだ子供が小さいのでなかなか家では集中できない
– 代理店業は「通信販売」にあたるので、特定商取引法の関係でオンライン販売をする場合ちゃんとした住所があったほうが良い
(転送用のバーチャルアドレスでも商売できるけど「違法ではないが好ましくはない」、そうで)
– 以前仕事場にしていた六本木のアカデミーヒルズは快適だけど打ち合わせで外出したとき決して家に近いわけではないので戻る気がしなかった
(オフィスは家から山手線沿線で一番近い池袋)

・他人が書いたソースコードを読むときどのようにしたら早く・正確に読めるのか?
ここでそんな質問に回答してあります:他人ソースコードの効率的な読み方

・チェコの会社とどうやっって知り合ったのか?
Webサイトに書いてある問い合わせ窓口から連絡。

・チェコの会社とコミュニケーションで大変なことは?
時差

・プログラムを書いていて楽しいと思うときはどんな時?
いつも楽しい!

・海外進出するとしたらどの国・地域へ行きますか?どんな事業をしますか?
日本が安全で、食事がおいしいのでいまのところ海外に出る予定はないけど、妻がドイツ語堪能なのでドイツ?(あと自分が小さい頃いたデンマークも近いし)
やるとすれば日本語ができることを活かして何か橋渡しとなるような事業ですかね?(今もそうだけど)

・自分自身について一番自慢できることは何ですか?
勝てる土俵の選び方・・・かなぁ

・一ヶ月total勤務時間は?
細切れで数えられないです。

・FAST Searchの製品ではJava以外の言語(Python, C++)が使われているという話だけど、それぞれの言語の長所短所は?
Python: 長所:インデントなど統一せざるを得ない言語設計で、書く人のクセが出にくく均質なコードになる。短所: (Java屋からみて)実行環境にライブラリをがつがつ配置するので環境が汚染されやすい。(virtualenvとか使いこなせばたぶん大丈夫)
C++: 長所: 大抵早い。 短所: 処理系に依存するコードが出てくるとifdef地獄。マルチプラットフォーム対応がやや面倒

・Javaの次世代言語と期待されたScalaですがはやりませんでした。これからはやる言語があれば教えてください
Scala流行ってます!
他にはGoなんか良いのではないでしょうか。頭の良い人たちが作った言語なので。Androidアプリの開発言語はいずれかのタイミングでGoになるんじゃないかと予想してます。

・どれくらいJavaができればとりあえず働けますか?
とりあえず働くのは職場さえ選ばなければ全然できなくてもJavaの仕事にありつけます。

・チェコの人とは何語で話しますか?
チェコに本社がある会社だけど、やりとりをする相手はチェコ、ロシア、ドイツ、スペインにいます。全部英語。

・他に何カ国語を話せますか?
高校、大学で第二・第三外国語でフランス語、ドイツ語をやったけどさっぱりです。

・好きなゲームは何ですか?
メタルギアシリーズ、SAGA、アクトレイザー。

・今の仕事、自分のお子さんには勧めますか?
やりたければ!

・個人で働くのと集団に属して働くのはどちらが良いと思っていますか?
一般論としては集団で働く方が大きなビジネスができるので良いはず。自分は一人で好き勝手やるのも、ワイワイやるのも好きです。

・Java SEとJava EEの具体的な違いはなんでしょう
Java SE: 一般的にJavaといったらこれを指す
Java EE: エンタープライズ系でJavaといったらこれを指す

・今まで取った資格
Oracle Master Silver
SJC-P(今はないけどJavaの基本的な資格)
WebLogic Developer Certification(たぶん今で言うところの Oracle WebLogic Server 12c Essentials)

・職歴にTwitterとありましたが当時どのくらいのユーザーがいましたか?今と比べての人数、知名度は?
ユーザー数は通常公表してないので自分からは言えません。2011年9月〜2012年9月なので働いていたのは十分知名度があったタイミングです。

・OSS開発・執筆での報酬はどれくらいでしょうか?
OSS開発: 直接的にはなし。Twitter4JのWebサイトではAdSenseの収入が月2,000円くらい
執筆: 本は数十万、Web記事は1ページ5000円〜1万円ちょっと

・社長になって良かったところは何ですか?
今は一人の会社の社長なので、特に・・・。「シャチョー」って言われても照れるだけです。場合によっては「代表取締役社長です」というとちょっと箔が付いて聞こえる。

・子供のころに作ったゲームで特に印象深いものは何ですか?
雑誌のコードを打ち込んだもので印象深いもの・・ですかね?
であれば8192階建ての塔です。
@nagix作。

・最近、一番楽しかったことは?
あんこう鍋を食べたこと

・どうしてそんなにJavaを使っているんですか?
Z80で書いたコードと違ってWrite once, run anywhereなので。人工が多く、OSSにすればそれだけ使ってもらったりコントリビュートしてもらったりする可能性も高い。

・何種類の言語を学びましたか?どの言語が使い勝手が良かったか
かじったのも含めればBASIC、Z80、Pascal、Fortran、VB、Java、C、C++、Ruby、Python、Scala、Groovyあたり?
まともに書ける(書けた)のはBASIC、Z80、Java。
使い勝手はいろんな尺度があるのでなんとも。

・従業員を雇おうとは思わないのですか
今のところは一人でできるところまでやってみようと思っています。

・幼い頃からプログラミングに触れていたようですが、プログラミングを始める時期・年齢に遅い・早いはありますでしょうか?
もちろん小さい頃から長くやっているほうが分があるでしょうけど本もたくさんあり、インターネットという便利な道具があるので遅すぎるということはないと思います。
それよりも向き不向きは大いにあると思います。

・一番好きなOSは?
Palm OS

・給料はいくら?
会社では今のところ給料(というか役員報酬)はもらって(出して)ません。個人の税込み年収でいうと去年はたぶん1150万円くらい、今年は計算していないけどたぶん80万円くらい。

・会社名の由来は?
こちらのサイトに書いてあります: 社名はどうやって決めましたか?

・ITで早くラクにかせげるのはどういう仕事ですか?
教えてください

・仕事で主に使うプログラミング言語はどれですか?
Java

・よりJavaに親しむためにしたほうが良いことはありますか?
毎朝鏡の前で「あいらぶでゅーく」と10回唱えます。これを10年続けてます。

・実際の仕事の際はJavaのコード量ってどのくらいになるのですか?
今の社内システム(といってもお助けツール程度)のコード行数は6602行でした。
("find . -name '*.java' | xargs wc -l"の結果)

・OSS開発の流れと収益はどのような感じですか?
開発はとにかく作って、GitHubに公開して、プルリクエストをもらったらがんがんマージしていく感じ。
収益化はサポートプランを提示するとか、GPLと商用ライセンスのデュアルライセンスにするとか、コンサルティングをするとかありますね。Twitter4Jとかとかは収益化はしておらず承認欲求を満たすのと、名刺代わりにしているだけです。

・一番大変だった会社、仕事はなんですか?
株式会社サムライズム。
サラリーマンが楽で安泰!

・OSS開発はすべて一人でやっているのか
Twitter4Jなんかはこれまで62人くらいの人がコードを書いてくれました。たぶん90%位は自分で書いてる。

・Twitter4Jを開発し始めたきっかけは何ですか?
Twitter APIが面白そうと感じたけど、Javaから手軽に呼び出せるライブラリが存在しなかったので。

・ゲームのハードを作ったりはしないのですか?言語を打ってゲームを作れたら楽そうです!!
ハードウェアビジネスは大変!
ハードウェアはそのままでもソフトウェア次第で無限に可能性が広がるところが好きです。

・Java以外の言語では何が良いと思いますか?
精鋭で黙々と開発: Scala
手軽にWebシステム: PHP

・Javaは面白くて、複雑なシステムを作るために使われていますが、まだ欠けているものはあると思いますか?
スピード感?

・どんなゲームを作ったんですか?
自分で一つのゲームを作り上げたことはありません。ゲームを打ち込んだり改造したりした人の多くはそうだと思う。
ゲームじゃなくて完成(?)させたのは8ビットのMSXのCPU/GPUをフルに活かしてワイヤーフレームで3Dモデルをグリグリ動かす「線写」(sensha)というソフト。

・チェコの人との会話は英語ですか?英語ペラペラですか?
英語です。ペラペラではないけど仕事上意思疎通にはそんなに困らないレベルです。

・Webの記事の執筆ではどんな記事を書いているんですか?
イベントのレポート記事とか、自分のノウハウとか。
社会人になったときにたくさん参考にさせてもらった@ITというサイトに恩返しの意味もあってたくさんかいています。筆が遅いのでいつも編集の方に迷惑をかけています。
「俺たちのJavaは、まだまだこれからだ」未来の鍵はInternet of Thingsにあり?~JavaOne 2013まとめレポート(前編) (1/3) – @IT
ついにJavaがRaspberry Piとフラットデザインでタブレット市場に参入!?~JavaOne 2013まとめレポート(中編) (1/5) – @IT
ヘルスケア、モンスタートラック、教育、環境問題、海洋調査に進出するJava、そして宇宙へ……JavaOne 2013まとめレポート(後編) (1/3) – @IT
Evernote Conference 2013 | イベントカレンダー+ログ
オープンソースコミッタへの道(1):「使う」から「公開する」へ (1/2) – @IT
効率的に情報収集をして差別化を図れ! Twitter4J.org 山本 裕介氏 (1/3):CodeZine

・Twitter4Jはどのこくらいでできたのですか?
完成することはないんだけど2007年からかれこれ6年以上やってます。

・プログラミングをしたり世界とのやりとりを行っていらっしゃると思いますが、現在何カ国語を理解できますか?
日本語と英語の二つだけです。

・オブジェクト指向のメリット・デメリット
メリット: モジュール毎にきれいに役割を分担させた設計ができて、モジュール間の影響を最小限にできる
デメリット: 「カッコイイ」設計にしすぎるとむやみに難しいコードになる