「プログラミングを学ぼうと瞬間最大風速的に意識は高くなるものの、一人でいると気がついたら一日ソシャゲして夕方頃に『また今日も勉強できなかった』と自己嫌悪。」モチベーションが続かない時の対策をはじめ、学び方、学べる環境の作り方をまとめています。
「プログラミングを学ぼうと瞬間最大風速的に意識は高くなるものの、一人でいると気がついたら一日ソシャゲして夕方頃に『また今日も勉強できなかった』と自己嫌悪。」モチベーションが続かない時の対策をはじめ、学び方、学べる環境の作り方をまとめています。
ここ半年ほど、「プログラミングを職業とすることの意味」を考え続けています。私自身は職業プログラマではないので、プログラマ向けの各種サービスを取材して、何とか手がかりをつかもうとしています。これまでに、技術情報共有サービス「Qiita」、競技プログラミングサイト「topcoder」、技術者が企業を気軽に訪問できるきっかけを提供する「Wantedly」、技術者が得意なスキルをアピールできる「Forkwell」、プログラミングの実力を測定できる「CodeIQ」や「paiza」を取材しました。 そうした取材の成果は、折に触れてITproや日経ソフトウエアにまとめています。具体的には、ITproの「『プログラマの役に立つものを提供していきたい』、情報共有サービス『Qiita』の挑戦」や「『60万人の一流プログラマ』が『成功率93%のSI』を実現するtopcoder」といった記事です。このテーマの集大
私は中級レベルのプログラマです。 基本を理解するのは得意です。過去の失敗をきちんと分析できるくらい経験を重ねていますし、もっと知るべきことは山ほどあることも分かっています。 特筆すべきは、自分で身につけるべきことを知ったうえで、それを吸収しようと積極的かつ精力的に取り組んでいる点でしょう。 プログラマとしての能力は平均的なものに過ぎないと、心から納得するまで時間がかかりました。今では、よく理解できないままに誰かの意見を受け売りする必要など感じていません。知らないことがあっても、それを他人に悟られるのは怖くありません。 でも以前は違いました。信じられないかもしれませんが、私はかつてプログラミングの達人だったのです。 自分の能力を誤って評価していたのは、比較的孤独な環境でスキルを学んだためでしょう。当時はコンピュータを持っていることさえ、ちょっと特別なことでした。使い方を知っているとなれば、な
さきほどWWDCにて新言語 Swiftが発表されました。 The Swift Programming Language (iBooks Store) で言語ガイドが公開されていたのでザッと目を通してみました。 Objecitve-Cと比較してSwiftがイケてそうなところをパッと気になったところだけ書いていってみます。 変数/定数の型推論がある Objective-Cのように明示的に型を書かなくても型を推論してくれます。 推論で問題ないケースも多いと思うのでタイプ数がかなり減らせそうですね。 ( 変数を宣言する際はvar、定数を宣言する際はletで宣言します。 ) // 型推論 var name = "Shinji Ikari" // 変数の型は推論によりString型になる var age = 14 // 変数の型は推論によりInteger型になる let height = 141.5
僕の周りだけかもしれないですが、国内のWeb受託開発案件は「PHPで作るのが暗黙のルール」ってな勢いでPHP案件ばっかりなのですが、Python大好きな僕としては、何としてでもPythonを使って仕事をしたい! なので頑張って布教活動をしているのですが、中々良い手応えが得られないのが現状です。。 という訳で、改めてPythonを使うメリットとか、安心してクライアントにPythonを進められる理由なんかをまとめてみました。 技術者がPythonを使うメリット 「今までPHPでやってきて何の問題もなかったし、これからPython始める意味なんてあんの?」 ぶっちゃけ、そんなにないですw 結果的に出来上がる物に関しては大差ないですからね。 ただし、開発効率やメンテナンス性は飛躍的に上がると僕は思います。 ライブラリがとても豊富 PHPも沢山ライブラリありますけど、Pythonだっていっぱいあるん
私は色んなプログラミング言語を触るのが病的*1に好きで、どの言語をどういう場面で使うのが良いのか凄く興味があります。 そこで、今の私の知識範囲でのそれぞれのプログラミング言語の使いどころを(自分用の整理もかねて)書いてみます。 C/C++ - C=OSやミドルウェア、C++=効率化のための再実装 安直に「メモリとスピードが第一優先のとき」と思いたいところですが、同等程度のスピードでもっといい言語はいっぱいあります。計算集約的ならJuliaとか、オブジェクト指向で組むようなソフトならD言語とか。なのでまずC言語は、Swigみたいのを使って他の言語の拡張ライブラリを書いたり、システムコールを使ってOSやミドルウェアを書くときじゃないかと思います。C++はテンプレートを駆使したりして効率を維持しながら抽象度の高いコーディングをするような場面がしっくり来ると思います。既に他の言語で実装したソフトウ
CodeIQで挑戦者数が400人超えという異例の事態になったCrossingとはどんな問題だったのか。twitterでも恐ろしい勢いで拡散され、最終日に100人を超えるチャレンジがあった、この問題。一体どこにそんな魅力があったのかについて考えてみる。 まず、このように注目されるためには満たすべき条件が二つある。 繁盛する飲食店を考えてもわかるように、まず美味しくなければならない。CodeIQで言うと、問題として良問でなければならない。解答後の達成感がなくてはならない。 次に、飲食店なら、その店に入ってみようという気にさせなければならない。入りにくそうなお店でも、料理さえ美味しければその後口コミで広がることもあるだろうが、それだと繁盛するまでに時間がかかりすぎる。だからCodeIQで言うと、まず問題を解いてみようという気にさせなければならない。 このどちらが欠けても駄目である。この問題はこの
Ruby on Rails チュートリアル 実例を使って Rails を学ぼう プロダクト開発の0→1が学べる Webサービスを創りながら学んでいく大型チュートリアルです。解説動画や質問対応も提供していて、筑波大学や琉球大学などでも採用されています。Railsチュートリアルで自分のオリジナルサービスを創ってみませんか? 原著者から,日本の読者の皆様へ Ruby on Rails Tutorial が、まつもとゆきひろ (Matz) 氏の母語である日本語でも読めるようになったことを嬉しく思います。ここ数年間で Matz や日本の Ruby 開発者の方々とお会いしましたが、彼らの技術的な才覚と親切さはいつも私に感銘を与えてくれます。 また、安川 要平氏や八田 昌三氏を始めとする多くの協力者の方々が Rails Tutorial を翻訳してくれたことを光栄に思います。彼らの素晴らしい成果に感謝し
Reveal (http://revealapp.com/) なる iOS 向けのランタイムインスペクタなるものを知人のツイート経由で見つけた。ランタイムインスペクタとは何か ・・・ "Reveal brings the power of tools like Firebug and Web Inspector to iOS developers." ということでiOS アプリ用の Firebug みたいなのだと思えば良い。 動画を観てると確かにすごい。3D で動かしながら View の階層を手繰ってアプリのビューがどういう構造になっているかを見ていくことができる。更に動的にパラメータを変更して大きさや動きを変える、なんて Firebug の css の編集みたいなこともできるようだ。ベータ版は無料のようだ。 これは捗る。 RubyMotion で動かす ドキュメントを見てみたところ Re
プログラマーは皆、常に秘密や嘘を抱えている。 これは間違いない。 基本的には誰にも話さないが、 (家族や友人などプログラムを知っていない人間に話しても分からない、という事もある) プログラマー同士の飲みの席などで、過去の笑い話として酒の肴になる事はある。 秘密や嘘の傾向には幾つかのパターンがある。 1) 仕様があいまいな場合の適当なコーディング 仕様があいまいな機能を実装する場合、想定していたものよりもプログラム量が膨大になる事はよくある。 また、細かいパターンや想定外のケースに対し、どのようにプログラム的対処を行うべきか? 洗い出しているとキリがない場合もある。 仮に事前に洗い出していたとしても、 「ケース自体は洗い出せているが、具体的にどのようなエラーメッセージを表示すべきか?」 などといった、その先がまたあいまいになっている場合もある。 このような場合、本来であれば決裁権のある人間に
2. 解析動機 2013年5月18日Tokyo WebMining #26 2 最後の春だし画像処理の勉強でもしとくか 後輩からAV女優の類似画像検索の話を聞く (ぱろすけ 2012) DMMにはアフィリエイトあったよな これでウェブサービス作れば儲かるかも 決して下半身からの要望で解析したのではありません http://blog.parosky.net/archives/1506 3. 計算環境 2013年5月18日Tokyo WebMining #26 3 使用言語:Python 2.7 (少しだけR) 使用モジュール:Numpy, Scipy, OpenCV 科学技術計算用のライブラリ MATLABにできることは大体できる numpy.ndarray 型付き多次元配列 numpy.linalg 線形代数計算 scipy.cluster 今回はこれのk-means法を使用
悪い意味での典型的なSIエンジニアの口癖は、 「なんで○○なの?」 だ。 なんでそうなるのかを興味があるのではなく、否定するためになぜなぜ聞いてくるのだ。 説明できなければ、「×」。 こういう人とは建設的な議論にならない。 そういう人と話していても、話は広がらない。 雰囲気が悪くなるし、とりあえず否定しようと構えている人とやる仕事に良いアイデアは降ってこない。そのうち案も出なくなる。 それが続くと、無難なことしか言わない非イノベーティブなSIエンジニアの出来上がりだ。 一方で、(悪い意味での)典型的SIエンジニアには、 「これはこうだから、こうした方がいいんじゃない?」 という人は少ない。 対案を出すだけの技術的な素養はないからだ。 技術的な裏付けはなくても否定はできる。 プロ野球の観戦者や国の政策を否定するオバサンと同じで、 否定するのは実はすごく簡単なのだ。 そもそもどのような場合も完
いやいやもっと楽しい言語あるでしょ?と思った方にとっても興味深い調査結果がExploring Expressions of Emotions in GitHub Commit Messages(GitHub上のコミットメッセージの感情表現の調査)として公開されていました。記事の作者はベルリンのRamiro Gómezさんで、自然言語とプログラミング言語の双方に関心のある彼はGitHubが公開した統計情報からさまざまな感情表現をコミットメッセージから探して分析するという調査を行いました。これによりanger(怒り), joy(喜び), amusement(楽しみ) surprise(驚き)の表現が多く使われているプログラミング言語のランキングを生成して公開しています。 怒りの言語はVimL、C、Shell 怒りのランキングではangry(腹を立てる)、annoying(いらいらする)、cra
拡張子取得、それは十人十色の関数である 一般的な拡張子を取得する方法は '.'を区切り文字として配列を作り、最後の要素を取り出す 拡張子があるであろう箇所を正規表現で検索、置換して取得する 最後に出る'.'を検索して以降を抜き出す など、他にもたくさんあります。 でも、パフォーマンスにバラつきはあるはずだし、 どうせなら「一番いいのを頼む」って考えるのが人の性ってもんですよね 拡張子を取得する関数たち エントリーNo1 正規表現の関数で配列に分割して最後の要素を取得する <?php $filename = '大きい画像a_1010.jpg'; $exts = split("[/\\.]", $filename); $n = count($exts) - 1; $ext = $exts[$n]; echo $exts[$n]; エントリーNo2 関数で拡張子を正規表現で検索、置換して取得する
スタティックメンバ/クラス定数 インスタンスメンバとクラスメンバ/スタティック(静的)メンバ PHP4では、「::演算子(コロン2個)」を使う事で、クラスのインスタンスを生成しなくても、静的にクラスのメンバ関数(この場合「クラス関数」と言う)をコールすることが出来ました。また、メンバ変数の参照は出来ず、静的にコールするクラス関数内でメンバ変数を参照する事も出来ませんでした(これは、メンバ変数を参照するために「変数$this(オブジェクト自身へのリファレンス)」を使用する必要があるが、静的にコールする場合はオブジェクトが存在しない為)。 PHP5では、ちょっとした小細工をする事でメンバ変数の参照が出来るようになります。 メンバ変数を静的に参照する場合は、そのメンバ変数の定義時に、アクセス制限修飾子とは別に「static修飾子」を付与してやります。また、この「スタティック修飾子」はメンバ関数に
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く