りんだのテックブログ -2ページ目

りんだのテックブログ

ITエンジニアです。
インフラ、ソフトウェアの両方の現場を経験して
現在は独立して独自製品の開発やサイト制作を行ってます。
テクノロジーとサイエンスを愛しています。

日本では文系理系と分かれていて、文系の人はエンジニアにならない人がやはり多い。

しかし、実はプログラミングは英語を知っている人の方が習得が早いことが分かっている。

今日はなぜ英語を学習している人がプログラミングを学ぶ上で有利なのかを説明していきます。

 

 

プログラミングは英語で書く

当然のことだが、プログラミング言語の全ては英単語で構成される。

実際にこの点だけでも、英語を習得している人は有利だ。

Stringが文字列と聞けば、それが文字を連ねたかたまりだと分かるし、classと聞けば、それが何らかのルールに従って定義された1つの分類だということを感覚的に理解することが出来てしまう

 

通常の日本人では残念ながら、classを学校のクラスや授業のクラスのような捉え方しかできないし、ましてやStringなんて聞いたことがない。

 

初期段階でプログラムを理解するだけでも、やはり英語は有利だ。

 

べテラン程、英語が必要

プログラミングをある程度理解出来たら、英語の習熟度で差が出ないのではないかと思われるが、そんなことはない。

例えば、新しくライブラリを学ぶときはどうだろう。

日本語のリファレンスがあるものもあるが、多くのものは英語での説明が多い。

もちろん、簡単なライブラリであれば問題ないが、複雑になればそうもいかない。

複雑になれば、自分で幾分かサンプルコードを打ったりして確かめなければならない。

しかし、英語を感覚的に理解している人は説明文である程度何が実現できるライブラリかを理解できる

 

一度、日本語に訳してから理解をするプロセスを行うと、どうしても本質を見失いがちだ。

これは言語に限った話ではないですよね。伝言ゲームのようなもの。

 

日本では英語が話せてプログラミングが出来る人は少ないが、英語が話せる人こそプログラマー向きだ。

 

日本語リファレンスが正しいとは限らない

私はリファレンスを参照する時は出来るだけ英語のものを見ています。

やはり、英語のものを見た後に日本語に翻訳されたものを見ると若干解釈が違っているものがあります。

翻訳している人がエンジニアであるとは限らないからです。

非エンジニアとなると、専門用語が出てきたら結局直訳しているのと同じになってしまう。

日本語のリファレンスはもちろん正しいものが多いが複雑性や専門性が高くなると、信頼度はさがってしまう。

 

まとめ

プログラミングを今学んでいる人は、出てくる単語の意味を辞書で引くことが理解の手助けになるはずだ。

今英語を理解出来ていなくても、辞書で引きながら単語の意味の本質を掴むことでプログラム作成の手助けになるだろう。

 

自動翻訳が完成して、スピーキングやヒアリングで英語を話せる必要がなくなっても、プラグラミングは英語のままだ。

プログラミングを学び続ける人は英語を学び続ける必要がある。

先日、サッカー選手の本田圭佑がW杯後にプログラミングを学習しているという記事を紹介したが、そんな本田選手がGithubのアカウントを作ったのではないかという噂がある。

信憑性はいかに!?

 

関係者は「おそらく本人」と認める

Githubアカウントが本田選手のものではないかと疑われたのはあるTwitterでのつぶやきから始まったようだ

そう、Githubのアカウント名が本田選手のTwitterアカウントとほぼ'同じものが見つかったのだ

しかも、このアカウントの作成日は本田選手がプログラミン学習を始めた後だ。

 

また、KAI-YOU.netというメディアが関係者に確認したところ、「おそらく本人のアカウント」という情報を頂いたようだ。

 

彼はあくまで投資の為の学習と言っているが、今後どんなコードを書いていくのか楽しみですね。

彼なら面白いアイディアのサービスとか作っちゃいそうですけどね。今後の活躍を期待しましょう!

ソフトバンクが米スタートアップ企業のLightに1億2100万ドルの出資をするようだ。

Lightっていったい何の会社なんだ...

画像や動画コンテンツが流行る中、ソフトバンクの次の狙いは?

 

 

Light、モバイルへ

 

Lightは現在、Light L16というカメラを販売している。

Light L16は、28mm/70mm/150mmの焦点距離を持つ16個のセンサーとレンズを搭載したコンパクトなカメラだ。

この複数のレンズで撮影した映像から52メガピクセルの映像を作成して、自動的にすべての画像をつなぎ合わせることができる。

 

そして、Lightはこの技術を活かして、9つのレンズを搭載したスマートフォンを開発しているようだ。

現在の予定では9月に出すことになっているようだ。

 

なぜ、9点レンズが注目されているのか?

 

9点レンズが注目されているのは複数の焦点を持つため、映像を3次元的に取得出来るのだ。

それはただ、写真を綺麗に取れるということだけでなく、今後ポストスマートフォンとなりうるAR、VRへの応用ができるのだ。

今後、映像コンテンツは間違いなくAR、VR空間に出力されるようになる。

 

そういった意味で、このソフトバンクの投資は長い目で見れば非常に大きな可能性を秘めている面白い投資だと言えますね。

中国のXiaomiが新型スマホ「Mi Max 3」を発表したようです。
Mi Max 3は現在販売されてる中では最大サイズの7インチのスマホとなっています。

私が持っているASUS ultra(6.8 inch)を超えてきましたね!

スペックは最新よスマホっぽい感じで、
・プロセッサにはSnapdragon 636
・RAMは4GB/6GB
・内蔵ストレージは64GB/128GB
・背面カメラは1200万画素+500万画素のデュアル構成
・フロントカメラは800万画素

エントリーモデルは約250ドル(約2万8000円)でRAM 6GB/内蔵ストレージ 128GBの上位モデルが約295ドル(約3万3000円)で販売されるようです。

結構安いですね〜
iPhone、Galaxyがどんどん高級品になる一方でこのあたりのスマホは良い感じの価格になってます。

昔は私も小さいスマホを使ってましたが、一度でかいのを使うとその便利さ見やすさに驚きます。
発売楽しみです。

初心者プログラマが陥りやすい罠シリーズの第3弾は「品質管理の過小評価」です。

プログラムの品質ってそもそもなんのか。

もし、複数人で行うプロジェクトなら初心者プログラマは必ず抑えておかなければならない。

 

むしろ、コーディングするだけならこの「品質管理」を抑えておけばなんとかなります。

 

 

コードの品質ってなんだ

 

まず、コードの品質というものはなにか。

牛肉や洗濯機の品質といえば分かりやすい。衛生面や壊れやすさなどである。

メーカーはユーザーに対して、安全で分かりやすく、メンテナンスしやすいものを提供することが出来れば高品質として評価をもらえる。

 

コーディングの品質というものは、プログラムが適切に実行されることである。

自分の意図とは違う処理が実行されてしまうということが起きてはいけません。

 

コーディングの品質管理

 

コーディングの品質を管理するには、どのようなことが必要なのでしょうか。

それは、シンプルに見やすいコードを書くというこです。

 

プロジェクト内で定められたルールで見やすいコードを書けば、自分では気づかなかったバグを他人が発見出来る確率が上がる。

バグが見つかったときの、メンテナンスに要するコストを低くすることが出来る。

 

利点は多く存在する。

では、具体的には何に注意をすればよいか。

 

  1. インデントを整えよう
    インデントはプログラミング初期に教わる初歩中の初歩だ。
    しかし、やっぱり基礎は大事。このインデントが整っているかどうかで、バグに気づけれる確率が上がる。
    私自身もコードのレビューを行っていたが、やはりルールに従った適切なインデントが行われている場合は、レビュー時間も短縮されるし、バグ発見率も飛躍的に上がった。
  2. コメントをきちんと書こう
    コメント不要説もあるが、コメントが不要なのはコーディングのことを完璧に理解出来ているプロフェッショナルのみだ。初心者が何のルールも知らない状態からコメントなしでコーディングすることは無謀だ。
    コメントは自分の書いたコードが何を意味しているかを綴る。
    もし、コメントとは異なった意味のコードが書かれていれば、これもバグ発見に繋がるだろう。
まずはこの2点だけ意識しよう。
コーディングの基本的なルールが分かれば、他にもやるべきことが見えてくるが、ひとまずこれを押さえれば安全な開発ができるだろう。

参考サイト:http://www.itmedia.co.jp/mobile/articles/1807/20/news033.html

 

視覚的な検索はインスタで

 

最近の若人はどうやらインスタでリサーチを行っているらしい。。

ひたすらググってる25歳りんだはもうじじいなのですかね...ガーン

 

インスタで検索をすると捗るのは、飲食店や観光地などの視覚的な体験を提供しているところらしい。

 

これ、俺がGoogleの画像検索してるのと一緒じゃん。

と思ったけど、「ハッシュタグ」や「ジオタグ」ってやつがどうやら捗るらしい。

 

Google先生で検索してもSEO頑張ってる子がどうしても上に来ちゃうからそういう意味では面白い情報を見つけるならインスタの方がいいかも。

 

あんまり、インスタは更新してないですが検索ツールとして使うには結構いいかも。

今後はぼちぼち使って行こうかとおもいます。

初心者プログラマが陥りやすい罠シリーズ 第一弾では設計せずに実装してしまうを紹介しましたが、今回紹介する初心者が陥りやすい罠は逆に実装する前に設計しすぎるということがあります。

慎重な人ほどこのトラップにハマって全然開発が進まないなんてことも...

 

 

設計の本質を考え直そう

設計をしすぎてしまう人は、設計で本来行うべきこと以上のことをやってしまっている。

設計は大まかな枠組みを作ることなのに、中の細かい部分まで考えてしまうのだ。

 

京都旅行で金閣寺に行こうという計画を立てる時に、金閣寺の中ではまず入り口のお店でソフトクリームを買って、ソフトクリームを食べながら鹿苑寺を見て...

といった具合に細かくしすぎてしまうのだ。

 

それではこの罠をどう回避したら良いのでしょうか。

 

少しずつ設計する

設計しすぎないようにするには設計を細分化して、少しずつ設計して少しずつコーディングすれば良いのだ。

こうすることで設計の単位が小さくなるため、設計のし直しが起こる確率も低くなり、さらに設計のし直しが発生しても後戻りのリスクを小さく抑えることが出来る。

 

もうお気づきの方もいるかも知れませんが、このように開発を細分化して進めることをアジェイルと呼びます。

 

まとめ

現在のソフトウェア開発の多くがアジャイルで行われているのは、

適切な設計の元にコーディングを行うための最高の手段であるということです。

設計の規模が大きくなりすぎた場合は、出来るだけ細分化して開発を進めることで、

後戻りの少ないスッキリしたコード作成が出来るようになるはずです。

W杯でもなんだかんだいって得点を決めて結果を出した本田圭佑。

そんな彼が今、プログラミングの猛勉強をしているとTwitterで話題になっている。

なぜ今になって彼がプログラミングを学ぶのでしょうか。

 

 

 

本田圭佑もプログラミング

W杯引退の宣言をした本田選手は、まだ現役の引退を表明していないとはいえ、自身のセカンドライフに関して考えなければいけない年齢になってきている。

本田選手は現在もサッカー以外にも、

  • サッカーチームの経営
  • サッカー教育
  • IT教育事業への投資

と幅広くビジネスを展開している。

そして、そのビジネスセンスはあのホリエモンに天才と言わせるほどだ。

 

そんな彼が今プログラミングを学び始めたのは、彼自身の投資活動の為だという。

エンジニアというものが分からずに投資出来ないというのが彼の考えらしい。

 

当然といえば、当然だが、そのストイックさはさすがプロスポーツ選手と呼べるものだ。

 

最初は「p」キーを小指で押すところから

プログラミングを学習することはW杯中には決めていたらしいが、戻ってくるやいなや1日9時間で猛勉強をしているらしいです。
彼はプロスポーツ選手として長年に活躍してきた選手だが、もちろんプログラミングどころか、コンピュータの扱いに関しても素人だ。
初めはタイピング練習から始めたという。
それから、猛勉強を重ねて1週間でHTMLを学習し、今ではRubyの勉強を行っているらしい。
 
学習は短期的に行うほうが効率が良いという科学的な研究があるが、異常なスピードだ。
ましてや、普通の人は仕事以外で1日9時間もプログラミングの学習を自主的には行うことは出来ない。
 
良くメディアはビッグマウスと言って彼を批判するが、彼ほど謙虚で成長に貪欲な人はいるのでしょうか。
 

まとめ

「エンジニアのことが分からずに、投資ができるわけがない」という言葉は当然のことだと思うが、1つのことを極めた男にはもっと違う視点で見えているのかもしれない。
彼自身の哲学は非常に尊敬出来るものが多いですが、そのメソッドがビジネスにも上手く当てはまって大成功することを期待しています。

初心者プログラマが陥りやすいトラップを回避する為の25の方法をご紹介していきます。

本日はその第一弾「設計せず実装する」を解説していきます。

 

「修正指示に苦戦するディレクター修正指示に苦戦するディレクター」のフリー写真素材を拡大

 

高品質なプログラムは設計が命

 

良いプログラムを書くためには、コーディングを行う前の設計に時間をかけるべきだ。

ここで言う「良いプログラム」とは以下の4つの要素で構成される。

  1. 保守性が高い
  2. すばやく効率的に動作する
  3. 正確に動作する
  4. 無駄な部分がない
いずれも個人レベルの開発では目をつぶることがあるかもしれないが、プログラムをより完全なものに近づけたいならば、どれも重要な要素だ。
これらの要素がより高度なものをプログラムの世界でも高品質と呼ぶことになっている。
 
設計とは
 
それでは設計とはどのようなフェーズなのか。
と、言っても銀行や保険系のシステムでは設計だけを行う部門があるくらい設計という業務は大きい概念となっているため、ここでは概略だけ話そう。
開発業務は基本的に次の6ステップで行われる。
  1. 思考
  2. 研究
  3. 計画
  4. 実装
  5. 検証
  6. 修正

どこにウエイトを置くかは、案件により異なるが、より高品質なプログラムを作る為には

思考と研究を重視しなければいけない。

思考と研究により、プログラムを書く方針を決定させることで、そのプログラムで実現したいことに対する無駄を排除できて、さらに穴のないプログラムを生成することが出来る。

 

基本的にはプログラムとは既存のコードを読み、真似したり応用する作業である。

その際に既存のコードをどのように自分のコードのロジックに埋め込むかを思考しなければならないし、

それが実現可能か研究しなければならない。

 

いきなり書いてみて、実現出来なかったり、ロジックがぐちゃぐちゃになって穴だらけのコードになることはよくあることだ。

 

プログラミングはコードを書くだけの作業ではない。

プログラミングは成長を必要とするロジカルな創造性であるということを忘れずに開発に取り組むと優秀なエンジニアになれるだろう。

 

まとめ

 

とはいっても、私も思考と計画なしでコーディングして、何回も1からコードを書き直した経験があります。

これは初心者は必ず1度は通る道です。

1度そのトラップに引っかかった時にこの記事のことを思い出して、2度目以降は回避出来るようになれば幸いです。

Chromeのデザインが大幅に変更されるようですよー!

 

Googleさんのソフトウェア・アップデートはいつもワクワクしてしまいますね。

今のデザインには長い間お世話になりましたしね。

FirefoxもだいぶイケてるUIになったし、Chromeはどうなるでしょうか。

これ以上シンプルに出来る気もしないですが、楽しみですね。