give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

プログラミング初心者はgit commitする前に必ずdiffを自分でレビューするクセを付けよう

プログラミング初心者向けのTipsです。

まあ、タイトルに書いたとおりなんですが、プログラミング初心者は(というか、プログラマならみんな)git commitする前にdiffを自分でチェックするようにしましょう。

それはなぜか?

しょーもないミスを自分で見つけるためです。

しょーもないミスというのは例えば、消し忘れのコメントや、デバッグ用に書き込んだprint文、無駄な空行、おかしなインデント、管理対象外とすべき一時ファイルや隠しファイル等々です。

def create
  @book = Book.new(book_params)
  puts @book.title # ほら、デバッグ用のputsが残ってるよ!!

  if @book.save
    redirect_to @book, notice: '登録しました'
  else
   render :new # インデントが1文字ズレてるよ!!
  end
end

しょーもなくない、深刻なミスもあります。
たとえば、ついうっかり外部APIやAWSのキーとシークレットをdiffに混在させてしまっていた、なんてこともあるかもしれません(怖)。

# これは絶対コミットしてGitHubにpushしたらあかんやつ!!
AWS_ACCESS_KEY=AKIAJTR62TDCMHIFHOGE
AWS_ACCESS_SECRET=9Z/jzM0C+haty7f2hwroK9ADmw06wq/HogePiyoFuga

こういったミスをしないように、git commitのコマンドを打ち込む前にgit diffでこれからコミットしようとしているコードのdiffを自分でレビューするようにしましょう。
もちろんボーッとdiffを眺めるだけではダメです。
レビュアーになったつもりで自分で自分の粗探しをしてください。

f:id:JunichiIto:20210130170500p:plain
しっかり自分でdiffをレビューしよう!!

この時点できちんとミスを見つけ出し、コミット前に修正しておけば、プルリクエストを出したときにレビュアーからの指摘事項を減らすことができます。

チーム開発をしたりするときにしょーもないミスを連発していると、「この子、このままコードを書かせて大丈夫かな?」とレビュアーを心配させてしまうかもしれません。
ミスを可能な限りなくし、先輩エンジニアに「出来る新人」をアピールしましょう😎

コミット前にセルフレビューする実際の様子を動画で見てみる

以下の動画は僕が実際にRailsのプログラミングをする様子をスクリーンキャスト形式で録画したものです。
動画の8分あたりを見ると、僕がコミット前にdiffを確認している様子がわかります。
僕はRubyMineを使ってdiffを確認していますが、考え方自体はRubyMineを使わないときも同じです。


【お試し版】プログラマがコードを書きながら考えること 〜動画でわかるWebクローラー開発〜

なお、こちらの動画の完全版はBOOTHで販売中です〜。(番宣)
booth.pm

RuboCopのようなツールで自動チェックさせるのももちろんOK

目視によるチェックだけでなく、RuboCopやESLintのようなツールを使ってしょーもないミスを自動的に検出するのももちろんOKです!

ただし、ツールだけに頼るのはやめましょう。
ツールでもチェックしつつ、目視によるチェックも併用すべきです。(ツールで検出できないミスもあるので)

また、ツールの自動修正機能を使う場合もどこがダメだったのか、それがどう修正されたのかを確認して自分のコーディング力アップに役立ててください。
(ツールがないと綺麗なコードが書けない、ということにならないように!)

まとめ

というわけで、このエントリでは「プログラミング初心者はgit commitする前に必ずdiffを自分でレビューするクセを付けよう」という話を書いてみました。

ちなみにこれは僕がソニックガーデンに入社したときに先輩エンジニアから教えてもらったTipsです。
それまでは僕自身もそういう習慣を身につけていませんでした。
実際、この習慣を実践するようになってから、しょーもないミスが格段に減ったのを実感しています。

誰でも簡単に実践できる習慣だと思うので、プログラミング初心者のみなさんはぜひ実践してみてください!

あわせて読みたい

フィヨルドブートキャンプのメンター、 id:beta_chelsea さんが書かれたブログです。
ここでもほぼ同じ内容が書かれています。(そして僕もフィヨルドブートキャンプのメンターの一人です✌️)

beta-chelsea.hatenadiary.jp

「あ、入力中の文章が消えちゃった!😱」を避けるためにテキストエディタからブラウザにコピペする

簡単なTipsの紹介です。

みなさん、ブラウザのテキストエリアに長文を書いていたら、何かの拍子にページ遷移が発生してしまって、「あー、入力してたテキストが全部消えたー!!!!😱」っていう経験をしたことはありませんか?僕は何度もあります😅

この問題を避けるため、「これは途中で消えたら泣く」というような文章を書くときはテキストエディタを使って書くようにしています。
そして、文章が書き終わったらテキストエディタからブラウザにコピペします。

f:id:JunichiIto:20210125073801p:plain

テキストエディタで書くメリット

テキストエディタを使うと、書きかけの文章を失うという事故を防げるだけでなく、以下のようなメリットも一緒に付いてきます。

画面が広く使える

ブラウザのテキストエリアは枠が小さくて長文を書くのに向いていない場合があります。
テキストエディタを使えば、広々とした画面で文章を書くことができます。

f:id:JunichiIto:20210125075321p:plain

エディタの編集コマンドを自由に使える

僕はテキストエディタとしてVimを使っています。
Vimにはたくさんの便利コマンドがあるので、ブラウザ上で文章を書くよりもスピーディにテキストを編集できます。

qiita.com

等幅フォントなのでコードが書きやすい

テキストエディタは等幅フォントで表示されるので、サンプルコードを伴うような文章を書くときはブラウザのテキストエリアよりもコードが書きやすいです。

f:id:JunichiIto:20210125074739p:plain

シンタックスハイライトが効く

テキストエディタにはシンタックスハイライトを付ける機能があるので、Markdownで文章を書くときはMarkdown用のシンタックスハイライトを有効にしておくとテキストの視認性が上がります。

f:id:JunichiIto:20210125074618p:plain

編集内容が自動保存される

これはテキストエディアの設定次第ですが、編集内容が自動保存されるように設定しておくと、何らかの原因でテキストエディタが異常終了したり、パソコンがハングアップしてしまったりした場合でも編集中のテキストを失わずに済みます。

ちなみに僕はvim-auto-saveというVim用プラグインを使っています。
https://github.com/907th/vim-auto-save

テキストエディタで書くデメリット

テキストエディタを使うデメリットはほとんどないのですが、挙げるとすれば1つあります。

画像だけ別にアップロードする必要がある

ブラウザ上に画像をドラッグアンドドロップで貼り付けられる機能が付いている場合、その機能はテキストエディタ上では使えません。

画像を貼り付けたい場合は以下のような手順を取る必要があります。

  1. 画像だけ先にブラウザにドラッグアンドドロップする
  2. 生成された画像URLをテキストエディタにコピペする

またはこういう手順になります。

  1. 先に文章だけを全部完成させる
  2. 文章をブラウザにコピペする
  3. 画像をブラウザにドラッグアンドドロップして文章全体を完成させる

Markdownエディタを使うのも便利

ここまで僕はVimを使って書く方法を紹介しましたが、テキストエディタは別に何でも構いません。
Markdownで文章を書くことが多い人は専用のMarkdownエディタを何か持っておくといいかもしれません。
Markdownエディタを使うとテキストを編集しながらプレビューすることができます。

僕はQuiverというMardownエディタを使っています。
f:id:JunichiIto:20210125081421p:plain

もしくはMarkdownをリアルタイムでプレビューできるアプリを使う

Vimで編集しながらプレビューもしたい、というときはMarked 2というMacアプリを使っています。(右のウインドウがMarked 2)

f:id:JunichiIto:20210125081849p:plain

Marked 2を使わずにVim内でMarkdownをプレビューするプラグインもあるようなので、Vimユーザーの人はいろいろとプラグインを探してみるのもいいかもしれません。

まとめ

というわけで、この記事では「あ、入力中の文章が消えちゃった!😱」を避けるためにテキストエディタからブラウザにコピペする方法を紹介してみました。

後悔先に立たず。「しまった!!」と思う前にツールの使い方を見直してみましょう〜。

プログラマがなりたい職業第1位になった話とか、昨今のプログラミングスクール問題とか

プログラマが小学生男子の「なりたい職業」の1位になったそうです。

まあ、「プログラマとゲームクリエイターを一緒にしていいのか」とか、「女子は全然ランクインしてないじゃないか」とか、「プログラマといっても幅が広いぞ?どの分野のプログラマなんだそれは」とか、その他あれこれツッコミを入れたくなる要素はあるかもしれませんが、個人的には「そうかあ、やっとここまで来たかあ」という嬉しい思いです。
というのも、僕は昔から「プログラマを子どもたちの憧れの職業にしたい」と思っていたからです。

僕の情報発信も多少は貢献できた?(要検証)

海外はさておき、日本国内においてはプログラマは長らく「なりたくない職業」みたいな扱いを受けていました。

正直な話、「僕が最初に入ったSIerは3Kだったかも」と思わなくもないですが、それでも基本的にプログラマの仕事は楽しいですし、ちゃんとした会社に入ればお給料もいいですし、何より自分の子どもに「自分の父親がそんな不人気職に就いているなんて」という思いをさせたくない、と考えていました。

現職のソニックガーデンに入社した当時(2012年)のブログにも、そんな僕の思いが書いてあります。

会社のため、お客様のため、プログラマを憧れの職業にするため、日本のIT業界発展のために精一杯頑張ります!

このたびソニックガーデンの7人目のメンバーになりました - give IT a try

やろうと思えばこんなに簡単にリモート勤務ができてしまう仕事もそんなにないと思います。 もっと自由なワークスタイルが増えて、世間の人たちから「プログラマっていい職業だね!」って思われるような時代がやってくるといいなあ

リモート勤務のようすを紹介します - give IT a try

そこまで表立った発言はしていないものの、「プログラマを子どもたちの憧れの職業にしたい」という思いはずっと抱き続けていて、僕自身が「理想的なプログラマのロールモデル」になるべく、「ほら、プログラマならリモートワークもこんなにしやすいよー。自由な働き方がしやすいよー」という情報発信をブログやらTwitterやらで随時やってきたつもりです。
だから、と言うつもりはありませんが、僕のこういった活動も多少は「プログラマ=なりたい職業第1位」に貢献できたかなあ、そうだったらいいなあ、と思ったりしています。

昨今のプログラミングスクール問題について

ただ、プログラマが「なりたい職業1位」になればそれで万事OKか、というとそうでもなくて、ここ数年個人的に気になっているのは、「うさん臭いプログラミングスクール問題」です。
「未経験でも半年学べばあなたも年収1千万のフリーランスに!!」みたいなアレですね。

プログラミングスクールは世の中にたくさんあって、全てのスクールに僕自身が潜入したわけでもないですし、おそらく悪いスクールもあればいいスクールもあるのだろう、と思っています。
ですが、昨今のネット広告やアフィリエイトブログの乱立を見ていると、ちょっと眉をひそめてしまうものが紛れ込んでいるのもたしかです。

ひとことで言えば、プログラマが憧れの職業になったことで、プログラマになりたい人たちの思いを食い物にしようとする輩が出てきたのが問題なわけですね。

こうなってくると僕の中ではまた新しい感情が湧いてきます。
プログラマの仕事が3Kだと言われてた頃に、自分の子どもに「自分の父親の仕事は不人気職」と思わせたくない、と考えていたのと同じで、最近は「プログラマの仕事は楽しくていい仕事なのに、それを目指した人たちが食い物にされて悲しい思いをしてほしくない」と考えるようになってきました。

そういえばつい先日もこんなツイートが話題になっていて、「うーん」という気持ちになりました。


だから僕はプログラミングスクールのメンターになった

そんな中で何か僕に取れるアクションはないだろうか、と考えた結果、去年から始めたのがフィヨルドブートキャンプのメンターの仕事(副業)です。

bootcamp.fjord.jp

フィヨルドブートキャンプもいわゆる「プログラミングスクール」のひとつです。
ですが、運営者の駒形さんと町田さんは昔から付き合いのあるRubyプログラマ/デザイナーさんで、彼らの人となりはよく知っていますし、決してプログラマを目指す人たちを食い物にするようなプログラミングスクールはやらないことをわかっています。

大々的なネット広告を打っている大手のプログラミングスクールに比べるとフィヨルドブートキャンプは全然小さいスクールですし、僕がメンターをやったからといってすぐに状況が改善されるとは思っていません。
ですが、「昨今のプログラミングスクール界隈はヨォ〜」とSNSで文句を垂れるよりは、何かしらの貢献ができるんじゃないかと思っています。
少なくとも、プログラミングスクールの中でいったい何が起きているのか、どういった問題が起きうるのか、といったことは、「中の人」になることでリアルに実感できるはずです。

ちなみに、僕が実際にメンターをやってみて感じたことは、先日書いた以下のエントリでまとめています。

blog.jnito.com

さっきも述べたように、僕がメンターをやったからといってすぐに状況が変わるとは思っていません。
しかし、プログラマを憧れの職業にするのに10年近くかかったのと同様、プログラミングスクールの問題も改善するためにはそれぐらい時間がかかるんじゃないかな〜と思っているので、自分のペースで気長にやっていこうと考えています。

まとめ

さくっと小さなポエムを書くつもりだったのが、思いのほか長くなってしまいました💦

最初の子どもたちの憧れの職業の話に戻ると、実は最近、中学生の息子が「将来プログラマになりたい」と考えているみたいです。
思春期なのか最近は口数が少ないので、その点について息子と深く話し合ったわけではないのですが、このあいだは「プログラミングを勉強するために自分のパソコンがほしい」みたいなこともつぶやいていました。(3月の高校受験が終わったら買います👍)

もちろん、まだ中学生なのでなりたい職業はそのうち変わる可能性も十分あると思っていますが、自分の父親の仕事にポジティブなイメージを持ってくれたのはとても良かったです!😊