写経(プログラム)と視写(国語)
写経について書かれているBlogを読んだ。
1: 早く学びが得られるように、なるべく小さいコードで実験し、すぐに結果を確認する。
2: 疑問に思ったこと、考えたこと、気づいたことを書き留める。どうしてこういう書き方をするのだろう?もしかしてXをYに書き換えたらエラーになるのだろうか?そうか、さっき疑問に思ったあれは、今写しているところとペアになるようになっているのか、などなど。この思考が、次の学びのための足がかりになる。
3: 一字一句同じに写すのではなく、自分が必要ないと思ったら省略すること。必然的に何が重要で何がそうでないかを考えることになる。
うん。そのとおりだと思うが、もうちょっと思考を深めてみたい。
写経は「視写」の一種
日本で初等教育を受けた人は必ず国語教育で視写をやっていると思う。漢字で視写って書くって知らなかったので、僕も「ししゃ」として覚えていたけど。
プログラミングにおける写経というのは、まさに国語における視写そのもの。日本語を学ぼうとするとき視写から入ったように、プログラミングを学ぼうとする者は写経から入るといいと思う。
で、文科省によると今もやっているようで、視写の効果についてまとめてあった。
9−1 視写の効果…全般
集中力をつける。
字が上手になる。
文章表現の技法を覚える。
表記のルールを覚える。
暗誦や記憶に役立つ。9−2 視写の効果−例えば、休暇中の「一日十分間視写」
毎日続ける「根気」
勉強時間の中に割り振る「計画性」
準備や片付けをする「整理整頓」
手本や文章を正確に読み取る「注意力」
丁寧に書き続ける「集中力・持続力」
書き終えてから点検する「自己省察(せいさつ)力」
まさにプログラマに必要な力ではないか。
やっぱり他の分野でも長く残っている習慣というのは何らかの理由があるんですね。
「ベンチャー」という言葉の解釈とビッグワードの怖さ
私は今、採用に携わっているわけですが、いろいろな会社の説明を聞いていると、そこかしこに「ベンチャー」という言葉を聞くことができます。
「ベンチャー」という言葉が意味するものは?
いろいろな会社で使われる「ベンチャー」という言葉を聞いていると、それぞれ独自の解釈で使われていることがわかります。
- 活発な会社
- どんどん事業が生まれる会社
- 小さい会社
- 独立心旺盛な会社
- 成長著しい会社
- 不安定な会社(いい意味で)
- 隙のある会社(だから主役を張れるよ!というニュアンスで)
- 変化を積極的に受け入れる会社
- 出来上がっていない会社(だからどんどん変えていけるよ!)
などなど・・・。
ですから、売上が1000億円以上になっているのに「ベンチャー」とおっしゃる会社や、もちろんスタートアップの会社が「ベンチャー」、子会社を積極的に若手に任せることで「ベンチャー」、挙げ句の果てには圧倒的巨人が「本物のベンチャー」と「草ベンチャー」という侮蔑的な言葉を投げてきたり*1します。
で・・・ベンチャーってなんなのよ!?と思ったりしませんか。
ビッグワードで考える怖さ
「ベンチャー」といった、受け取る人によって意味が異なる言葉をビッグワードと呼びます*2。ビッグワードとは、本来はSEO用語で「多く検索される単語」と言う意味ですが、多く検索される単語というのは「生命保険」「サッカー」など、汎用的な言葉が多く、実際に検索する人が何を求めているかはわかりません。
「ベンチャー」という言葉も、最初に並べたように多くの意味を含みます。「僕はベンチャーに行きたい!」と考えたり言ったり書いたりしていても、売上1000億円の会社とスタートアップ、同時に比較する人はそう多くはないでしょう。
結局、ビッグワードが何を意味するかなど、受け取る人や言波を発する人にしかわからないわけで、結局自分が何を求めているか、を考えなければ単語の意味がわかったとしても意味がありません。
一番怖いのは、「ベンチャーに行きたい!」と言いつつ、その言葉が持つイメージや「ベンチャーに行く」という発言の気持ちよさが先行して詳しく考えないケースです。
実際の面談例
Q:働くことでどんなことをやりたいの?
A:楽しく仕事をして、世の中のためになりたいと思っています。
Q:世の中のためになる、ってどういうこと?
A:人と関わって、人々の生活を良くすることです。
太字はビッグワードを解釈しきれていないところです。
楽しいとはどういうことか?
雑多なデータを分析し、その中から新しい傾向を見つけ、提供することなのか?
お互いに刺激しあえる仲間と一緒に、日々成長を実感できる状態なのか?
楽しむためのアプリケーションを次々と開発し、リリースし、評価される状態なのか?
人と関わるとはどういうことか?
ユーザの問い合わせを受けるのは人と関わることなのか?
激しく議論を交わし、社内向けのシステムを作るのは人と関わることなのか?
ロボットを作って、最終的には人が使うものを作るというのは人と関わることなのか?
人と関わらない仕事はまずありえない中で敢えてその言葉を使う意味はあるのか?
こういうことを考えておかないと、そのうち「あれ?なんでベンチャーに行ってたんだっけ?」となること請け合いです。
こうならないために
必ず、自分の考えはビッグワードで止めるのではなく、誰が聞いても同じ意味に聞こえる単語レベルまで細かくしておきましょう。とはいえ、自分の考えを客観的に見る、というのは訓練も必要ですし、なかなか出来ませんので、私が行う面談ではこのあたりを徹底的に解きほぐしています。
というのも、ガイアックスでは選考の中で「価値観の一致」を非常に重視します。社会的な問題意識から事業が生まれることの多いガイアックスでは、いくら能力が高くても同じ方向性を向いて仕事をすることができなければ十分な力を発揮することが出来ないからです。
そして、この「ビッグワードを自分の言葉に落としこむ」という作業は、その人の価値観が色濃く表現されます。
- どのような人と働きたいのか?
- どのような働き方をしたいのか?
- どのような意識で働きたいのか?
などなど・・・。ですから、自分がどの会社を選ぶかを考えるときには、必ずこの「ビッグワードを自分の言葉に落としこむ」という作業をやっておきましょう!
YAPC::ASIA 2012でLTしてきました
YAPC::ASIA 2012のLTで(コーポレートセッションですが)しゃべってきました。緊張しました・・・
まとめ
- 今年のガイアックスのノベルティはメガネ拭き
- プログラミング部〜Studio 256bit〜つくりました
- 素数戦争やるよ!
pptを上げてみました
が、LT用でよくわからないかもなので、解説します。
自己紹介
ガイアックスでアプリケーション運用とエンジニア採用(新卒・中途とも)をやっています。セキュリティ(実現方法と言うよりもポリシーぎめの方)とかもやってます。
右の画像は私の娘です。2歳です。かわいいです。
10xLab(福岡開発拠点)
福岡に10xLabができました!
名前は、「既存の仕組みを10%、20%改善するのではなく、10倍(10x)以上変えるような革新的なソフトウェアプロダクトを制作していきたいという意思がこめられています。(プレスリリースより)」
Extreme Hackathon
LTでは(´・ω・)カワイソスと言って写真を紹介しましたが、実際、大自然の中でプログラミングしたいなーと思っていたり。
X-gamesという競技がありますが、それと同じようにとんでもない場所でhackathonをする、Extreme Hackathonというのを流行らせたい><
プログラミング部〜Studio 256bit〜
ある日、メンバー同士で話していて、
野球だと素振りするし、走りこみもするよね。でも、プログラミングって一定程度わかればいきなり作ってリリースしちゃったりする。もしかして基礎練習とか、レギュラーぎめとか、対外試合とか必要なんじゃないの?
という話になりました。確かに!ということで、まず「楽しいRuby」をきちんと写経する朝練が始まりました。
これ。この写真はまだ部室が出来る前、ドトールコーヒー五反田桜田通り店で朝練をやっていた時の写真です。メンバーは何も言わなくても「カフェラテとミラノサンドAでいいですか?」って言われてしまうようになったとか。
プログラミング部は基本的に業務とは直接関係ないことをやります。基礎力のアップや、リファクタの癖を徹底的に付けるなど、足腰が強く、クリエイティブなエンジニアを育てていきたいと思っています。
Project Euler
最近継続的にやっているのがProject Eulerで、今回の素数戦争もこの延長です。適当に書くとクソ遅かったり、アルゴリズムを勉強したり、配列にぶっこむと遅いとか、いろんな知見が溜まって面白いですw
素数戦争
今回のLTの本題です。
CodeIQさんとYAPCでコラボしませんかとお誘いいただきまして、じゃあプログラミング部の活動をオープンにやってみよう、となりました。
なんで素数なのよ、というところですが、Project Eulerを解いているときに一番揉めた、というか、リファクタの範囲が広いのが素数関連の問題だったんですね。それもそのはず、素数判定は太古の昔からいろいろな方法があるわけですよ。
・エラトステネスのふるい
・ユークリッドの互除法
・最大公約数
・ミラーテスト
・確率的素数判定法
などなど、論文がいくらでも出てきますw
しかも、今回の問題はN番目の素数が何になるか、その上限を見つけるのが難しいということで、更に難しく(選択の幅が広く)なっています。
こうなってくると、いろんな言語でいろんな方法が採用できまして、四六時中リファクタを考えるようになってきます。実際、社内でやったときはタバコを吸いに行けばこの話、飯を食いに行けばこの話、という状態に。
素数戦争【Yapc::Asia::PrimeWars GaiaX × CodeIQ】はこちらから
10月15日 午前10:00まで!!!!
ぜひ皆様お楽しみください!
「マイブック」始めてみた
私、非常に瞬発力はあって、災害時にいろいろなことに動いたりとか、障害時に動いたりすることは得意なのですが(なので、採用で学生さんと面談するのが得意なのかなー)、
なにか一つをずっと続けるということ、ちょっと思いついたことを忘れないようにしておくことが非常に苦手なのです。
なので、今年は何か一つでも、1年通じて続けられることをやりたいなと思っていました。
そこで今年やってみようと思ったのがこれ。マイブック。
マイブックとは!
マイブックというのはご存知の向きも多いかと思うが、新潮文庫から出ている全編白紙の本である!要は日記なんですが、最初、モレスキンを買おうと思ったんです。
が、きっと僕はああいう完全に自由な、つまりは常にクリエイティブなことはできないと思って、モレスキンには手が出なかったんですよね。
参考:myMoleskine
私はそんなすごい人ではありませんから、完全な自由だと不安で仕方がない。
なので、1つだけ、「日付」という不自由が入っているマイブックのほうが続くのではないかと思ってやってみようと思ったわけです。
とはいえ、不自由はそれだけなので、モレスキンのように色々な使い方ができるんだろうなと思ってもいます。
何を書いているか
- 天気
- 食べたもの、人、店
- 運動の記録
- 読んだ本、買った本
あとは、普通の日記です。
こんなことがあった、あんなことを思った、直接は言えない言葉、などなどです。
実際に2週間ほどやってみて
なにより、非常に照れる!
絶対に人には見せないという前提で書いているためか、異常に素直になりますね。特に僕なんかは他人に気持ちを積極的に見せる方ではないので、こういう、気持ちを素直に発する場所があるというのは大きいのかもしれない。
ただ、基本的に私は正の気を一生懸命出して頑張るタイプの人間なので、負の感情を言語化してしまうのはともかく、残る形で書き記してしまうのはよくないのかもしれない。
けど、きもちいいんだよなぁ。しばらく続けてみます。
就職を考えている学生とのやり取り
(c) GOETHE|ストック写真 PIXTA
私は運用担当のマネージャーをしていますが、今の時期は採用に関わることも多く、従って就職についての疑問や質問を受けることも多いのですが、実際の学生とのやり取りのうち、本人に了承を得たものをどんどん公開していこうと思います。
今回のお題
- エンジニアを志すにあたって、技術だけでなく企画にも携われる仕事がしたい
- ただ楽しいだけでなく、真に社会を改善する本質的なものが作りたい
- 常に新しい技術に触れていたい
- 将来きちんと家庭が築けるのか?
- エンジニアとしては、どのようなスキル・経験・心構えが歓迎されますか?
エンジニアを志すにあたって、技術だけでなく企画にも携われる仕事がしたい
企画ってなんですか?という問いに対して、なかなか答えを言ってくれる人は少ないと思いますが、アイデアを出してプランを作る、みたいなイメージがあるのではないでしょうか。
しかし、ことWEBサービスでは「企画」という役割は、みんなが出したアイデアをまとめて創り上げるという色のほうが強いと思っています。技術的なアイデアを出す人は企画ではないのか?UIを考える人は企画ではないのか?ビジネス的な資金調達のアイデアを出す人は企画ではないのか?というと、決してそうではないと思います。
実際、すでにあるサービスを見て「ああっ!僕も考えてたよ!」と思うこともあるでしょうが、実際に実現する技術的要素、また、ユーザに対する見せ方まで考えている人は少ないのではないでしょうか。「企画」と言われる人は、まとめる人というくらいの意味で、実際に企画に携わるのはそのプロジェクトに関わる人です。
もちろん、SIなどInput/Outputが決められていて、その範囲内でしか自由度がないというエンジニアもあるでしょうが、そうでないエンジニアのほうがWeb業界では多いと思います。
企画もできるエンジニアは珍しいか?ということになると、Webでは珍しくありません。というか、ほとんど企画やるんじゃないかな。
企画をやると、絶対に一度は技術に寄りたくなると思います。技術に現時点で興味が有るのなら、技術を磨きつつ一生懸命企画に手を出したほうが、絶対にいい。最終的に企画に寄ることは出来ますが、技術はどんどん進歩していくので最終的に選べない可能性もあります。
ただ楽しいだけでなく、真に社会を改善する本質的なものが作りたい
本質的なものは多くの場合、わかりにくいものです。多くの人に使っていただくには、本質的なものをわかりやすく翻訳することが必要だと思います。また、多くの人を動かすには何らかのきっかけも必要でしょう。
そのため、本質的なものをわかりやすく、というデリバリーが求められるわけで、そこが難しい所ですね。その結果として、本質を見失う事が多いのですが、本質を見失わないようにはしていけます。そのように進めていけるのは小さなチームでの仕事だと思います。
常に新しい技術に触れていたい
触れててよwって言いますね!
もはや、今のようなオープンな世の中で、「○○だけやってください」などという組織はナンセンスきわまりないと思います。自らアンテナを張って、新しい技術を取り入れていけばいいだけだと思います。必要な要件に対して適切な言語を使うのがいいと思いますが、とはいえ、意地でもこの言語を使ってやる!という気持ちも嫌いではないです。というか好きです。
将来きちんと家庭が築けるのか?
築けるかどうかはまずは自分の心持ち、次にそれを許す環境だと思います。
ここで重要なのは、制度があるからと言って活用できるわけではないということです。制度があるから大丈夫だよ、ってよく聞きますが、本当にそうなら世の中の有給休暇の問題は全く発生していないはずですね。ルールがあろうがなかろうが、家庭に限らず、場所や時間、スタイルなど、働き方を決めていけるということが重要だと思います。
ガイアックスでは、自分の話で恐縮ですが、ちょっと前の採用イベントでのスライドの18枚目、(僕の話なのですが)そういうことをサポートしていくことも会社として必要だと思っています。
エンジニアとしては、どのようなスキル・経験・心構えが歓迎されますか?
歓迎される、ということでおもいっきりハイボールを投げるとしたら、
- 情報を自ら集めて自分のものにし、
- 自分のものにした情報で作ってみて、
- それを公開する
という能力と経験と心構えが必要だと思います。
今回はここまで!
著作権の非親告罪化とインターネット上のコミュニケーション
TPP参加で著作権法違反が非親告罪化し、結果として二次創作ができなくなるという記事が出ていました。
僕もコミックやアニメは結構好きですが、同人作品はほとんど読まないし見ないですからあまり関係ないわー、とか思っていたら、趣味ではなく本業の監視事業のほうで影響がありました。
著作権判断は難しい!
お客様からはよく、
「ジャニーズの写真は非表示にしてよ!」
とか、
「有名人が写っている写真は非表示にしてよ」
とか、
「動画が転載だったら非表示にしてよ」
等の要望を承ります。でも、これって非常に難しいのです。
監視事業における著作権の判断
なぜなら、
・この写真はジャニーズ事務所所属なのか?
・写真に写っているこの人は有名人なのか?
・この動画は著作権者が載せたものなのか、他人が勝手にやっているのか、許可は得ているのか?
を、コンテンツだけを見て判断することが非常に難しいのです。
例えば、昨日ジャニーズ事務所と契約した美男子、はおそらくどんなマニアでも見分けられないでしょうし、僕なんかは関ジャニ∞のメンバーを出されても、おそらく気づかずに一般人としてしまうでしょう。
例えば、仮にテレビに写ったら有名人、だとしても、僕はあまりテレビを見ませんのでそもそもテレビに写っている人かどうかすら、わかりません。
例えば、自作のアニメなり、映画を撮ったとします。それが本人によるアップロードなのか(もちろん適法)、著作権者の許可を得た他人によるものなのか(適法)、著作権者の許可を得ていない他人によるものなのか(違法)なんて、見てもわかりません。
本当に非親告罪化したらどうなるか?
監視を依頼する側は、より「著作権法違反可能性があるものについては先回りしてどんどん非表示にする」という方向性に振れていくと思います。もし違反コンテンツが上げられていたら、その時点で罪が発生しうることになるからです。
しかし、こういうことになったらインターネットのコミュニケーションはどうなるでしょうか。歌詞やセリフを使った二次創作的な、大きな引用はできなくなり、従って味気ないものになってしまいます。グレーゾーンこそがコミュニケーションを円滑にするわけですから。
これだけならまだいいのですが、少しでも違法要素があればどんどん非表示にしていくと、確実にコミュニケーションは萎縮します。監視の基準は「違法である」を確実に含むように設定されます。従って、違法でない部分にも若干染み出す形で設定されます。これが生き過ぎてしまうと、違法要素が少しでも認められようものなら消されてしまうという場所で、誰が積極的に書き込みをし、情報を発信していくでしょうか。
できるだけオープンなコミュニケーションをするためにルールは必要ですが、行き過ぎたルールは必要ないと思います。