paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。

20200204140738

ITエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。

プログラミング動画学習 paizaラーニング

Linuxだけで作れる!私の超快適な開発環境を紹介する話

f:id:paiza:20100204111616j:plain
Photo by Eduardo QuagliatoFollow

もじゃ(@s10akir)です。paizaラーニングでプログラミング学習動画制作のアルバイトをしたりバイト中にアニメを見たりしている専門学生です。(今は主にまちカドまぞくを見ています)

私がpaizaラーニングでアニメを見始めてから…もといアルバイトを始めてから、早いもので1年強が経過しました。

実は私はアルバイトのくせに業務では私物マシンのArchLinuxを使っているので、今回は私の開発環境のご紹介と「ぶっちゃけLinuxだけで仕事できるの?どうやってやるの?」というお話をいたします。

(当然ですがこれは私がみずから望んでやっていることで、普通にバイトする人には会社がMacも開発環境も用意してくれます。)

ちなみにpaizaラーニングでは「Linux入門編」を公開していますから、私の話に興味はないけどLinuxには興味があるという人は、ぜひそちらをやってみてください。

Linux入門編について詳しくはこちら

なおバイト中にアニメを見ている様子はこちら。

paiza.hatenablog.com

私の業務内容

まず、私がpaizaラーニングでアニメを見る以外にやっている業務内容についてご説明しておきます。

ふだんは主に

  • paizaラーニングのコンテンツ制作
  • リリースまでのデプロイ作業
  • リリース前の講座の検証
  • 社内ツールの整備

などをしています。

コンテンツ制作は、最初にあげた「Linux入門編」のような各講座の動画を作ったり、その講座に合わせた実行環境(受講画面右側で使える、PaizaCloudを使った実行環境やLinux環境などですね)を構築したりする作業です。私は主に後者のほうをやることが多いです。

リリースまでのデプロイ作業は、制作した動画や開発環境、ソースコードなどをみなさんに公開できる形でデータベースに登録する作業です。

リリース前の講座検証は、そのままですが実際にpaizaラーニングの講座を受講してみて、講座内容や動作環境に問題がないかをテストします。

社内ツールの整備は、これらの作業を効率化するツールを自分で作っています。

あとはアニメを見たり、ツイッターをしたり、アニメを見ながらツイッターしたりしています。

私の開発環境

というわけで、私の開発環境のお話をします。

f:id:paiza:20190926171048j:plain

私がふだん業務で使っている環境です。

私物マシンだからイントラネットに接続できないという制約はありますが、BYODが許されているので、私物のThinkpad X1 Yogaを持ち込んで開発しています。折り返してタブレットになる2 in 1マシンです!

私はプリインストールされているWindows10を完全に削除して、ArchLinuxのみをインストールして使っています(後述しますが、割とこのマシンでは茨の道な使い方です)。

www.archlinux.jp

デスクトップ環境はわりとコロコロ変える癖があるんですが、最近はi3wmで落ち着いています。

使っているアプリケーションに関しては、できればすべてコマンドラインで済ませたいと思っているため、主にzshに引きこもって、Neovimで開発しつつChromeで講座の検証をしている感じです。コードの規模によって全体を見通したいときなどは、VSCodeなどGUIエディタを使ったりもします。

業務で必要そうなソフトウェアと Linux 事情

各種開発環境(言語や実行環境)

たいていはOS問わず開発環境が提供されていますから、ここで有利不利が出ることはほとんどありません。

Windowsでいろいろな開発環境を構築しようとすると、相性が悪いものもあってトラブルがつきものだったりしますが、Linuxなら標準でパッケージマネージャが付属していてコマンド一本でインストールできたりするからむしろ快適です!

またWindowsで開発している方は誰もが一度は悩まされるであろう(?) git のトラブル「なんか知らんけど全行書き換えたことになってる…」も、Linuxの改行コードはMacと同じLFなので発生しません。(Windowsの場合はCRLFですが、これが設定によってはgit for windowsがいらぬ気をきかせて改行コード変換をかけてくれたりするせいで、全行書き換えたことになってるブチ切れ案件が発生するわけです。複数人で開発していると割と遭遇するトラブルです…)

ブラウザ

Google Chromeを始めとする多くのブラウザがクロスプラットフォームに対応しています。標準ではFirefoxがインストールされていることが多いです。

最近はChrome(正確にはChromium)ベースのブラウザが増えてきていますから、ほとんどの場合はお気に入りのブラウザをそのまま使えるかと思います。

私はもともとOperaを使っていたのと、縦タブが使えたりショートカットが設定できる項目が多くてキーボード操作との相性が最高なところが好きなので、Vivaldiを使っています。

エディタ

エンジニアがふだん使っているような最近のエディタは、大体がマルチプラットフォームに対応しています。有名どころでは、AtomやVSCode、SublimeTextなどはLinux版が存在しますし、ディストリビューションによってはこれらもコマンド一本でインストールできたりしますから、利用に関してはまったく問題ありません。

エンジニアの強い味方であるJetBrains社のIDEもLinux対応しています!

ただ、LinuxのオタクたちはみんなVimかEmacsで全てを済ませている気がします(これは私の個人的な偏見です)。私は前述の通りNeovim を使っています。

Docker

DockerはホストOSのLinuxカーネルを共有することで高速に動作する仮想環境ですが、当然ながらLinuxカーネルを持っているのはLinuxだけです。

WindowsやMacでDockerを動かす場合、間に仮想的なLinuxを挟むことになるので、その分のオーバーヘッドになって多少はパフォーマンスが落ちてしまいます。

しかしもともとホスト側がLinuxであれば、その上で直にDockerコンテナを実行できますから、結果としてめちゃくちゃ速いし余計なリソースを食わなくて済み、非常に快適です!正直これだけでもLinuxを使う価値があると思います。みなさんもLinuxを使いましょう!

コミュニケーションツール

最近は多くのアプリケーションがElectronで開発されるようになってきました。(エディタの項目であげたAtomやVSCodeもそうですね!)

ElectronのコアであるChromiumがマルチプラットフォーム対応なので、Electronで開発されているアプリに関して心配する必要はまったくありません。たとえばSlack、Discord等はElectron製なので、Linuxでも問題なく使えます。ちなみにSkypeなどもLinux版が存在しています。

その他

Webブラウザから利用できるサービスはどれも問題なく利用できますから、ツイッターもAmazon Prime Videoも大丈夫です。唯一の問題点があるとすれば、KindleがLinux版に対応しておらず、ブラウザ版が使いにくいので、勤務中や休憩中に漫画が読みたくなっても読めないことです。

ちなみにテクニックとして、「Linux版が存在しないがWebでは使えるサービス」は、Google Chromeに --app というコマンドラインオプションを渡してあげればアプリみたいに使えます。

これをうまく使えばAmazon Prime MusicやLINEなど、単体で起動しておきたいアプリを独立させて使えるのでとても便利です!.desktopファイルを作ってショートカットにしたり、pathの通っている場所にスクリプトを置いておけばQoLも爆上がりです。

# 例
#! /bin/sh
google-chrome-stable --app=https://paiza.jp


っというわけで、最初に言った通り私の業務は主に開発なので、特定のソフトウェアに依存していたり、Windows/Macじゃないとできないようなタスクはほとんどありません。むしろどちらかといえばLinuxとの相性がよい業務ばかりですから、基本的にはほとんど支障なくLinux環境で作業できています。

業務中に困ったケース

とはいえ、今までまったく困った経験がなかったかというとそんなことはないので、困ったときの話もしておきます。

ハードウェア相性

私の使っているマシン(Thinkpad X1 Yoga)はちょっと特殊なハードウェア構成をしているため、微妙に安定しておらず、特に最初のころはときどきハングアップしたり操作不能になったりすることがありました。(ミーティング中に出していたChromeがフリーズして悲しくなっちゃうとか)

ちなみに、Chromeが落ちる原因は搭載されているIntel UHD620とドライバの相性だったので、いろいろ設定してあげてからは割と落ち着いています。

Linux環境の場合、Windows/Macと違い、そのマシンへの最適化を自分で行う必要が出てくるケースもあります。

特に問題が起きていない場合はよいですが、私みたいに相性問題が起こってしまった場合は、自分でなんとかしていくのが基本です。

趣味でやってるならそんなトラブルもまた楽しいのですが、業務で、自分で望んでこの環境を使っているわけですから、何かあったときの責任は自分でとらなければなりません。ある程度のトラブルシューティングスキルも求められますし、問題を起こさないような相性のよいデバイス選定も必要です。

(私物マシンから)サーバ類への接続が許可されていない

これはLinuxだからではなく、私物マシンだからですが…。

業務で使うファイルサーバやDBサーバ、S3などの環境は、イントラネットに接続できない私物マシンからは利用できません。セキュリティポリシー的には至極当然な話なのですが、似たようなケースはいろいろなところであると思います。

私は、DBにデータを流し込みたいときなど、どうしても接続する必要が発生する作業は会社のMacを使ってやっています。そんな感じで使い分けられる予備系の環境がある場合は特に問題ないのですが、そうじゃない場合に自分だけ違う環境を使うのはリスクが高いです。

Linux環境だけでは業務が難しい場合について

多くの場合は対応する代わりのアプリがありますが、「業務上絶対にそのソフトでないといけない!」という制約があるならどうしようもありません。

たとえば、現時点でLinux向けのMicrosoft Officeは存在しないため、Officeは使えません。もちろん互換性のあるOfficeアプリはいくつもありますが、完全互換ではないので顧客と共有したりするドキュメントを作るには信用に欠けます。

私の業務範囲では、Microsoft Officeでドキュメントを作る必要はなく、Googleドキュメントだけで特に不自由はありません。同じような環境の方は、特に問題ないと思います。

ただ、Windows(もしくはMac)でしか動かないアプリケーションを使う必要がある!という方だと、当然ですがLinuxのみで業務を行うのは厳しいですよね。

こういった場合は、

  • Windowsとのデュアルブートにしておき、必要なときにOSを切り替える
  • ブラウザ上で使えるOffice Onlineを使う
  • どこかにリモート接続できるWindows環境を用意しておく
  • 仮想マシン上にWindows環境を用意しておく

などの対策をとれるなら、乗り切れないこともないです。(実際私はこれらの組み合わせで乗り切っています)

ただ、それぞれ一長一短あって、たとえばOffice Onlineではマクロが使えませんし、リモート環境は社内のセキュリティポリシーで不可能な方もいますよね。仮想マシンにインストールする場合も、Windowsのライセンス周りは割とややこしいので事前に入念な確認が必要となります。

products.office.com

www.google.com

まとめ

というわけで、多少環境は選びますが、エンジニアであればそこまで不自由なくLinux環境に置き換えられると思います。

最近は、Googleドキュメントを始めとしたクラウド系のアプリケーションが便利になってきたり、Chromebookを導入する例が増えてきたりと、クライアント側の環境を問わない働き方ができる空気も整ってきていますよね。

Linuxを導入できる環境にいて興味がある方は、ぜひLinux環境での業務を試してみてください。そして一緒にLinuxを愛しましょう。

paizaラーニングでは「Linux入門編」を公開していますので、「Linuxには興味あるけど初心者でまだよくわかんない…」という方はぜひこちらから試してみてください。そして一緒にLinuxを愛しましょう。


あと!paizaラーニングでは私たちと一緒にプログラミング学習動画制作をしてくれるアルバイトの方を募集しています!!paizaラーニングに興味があって、隣でアニメ見てるやつがいてもいいわよという方は、ぜひ応募してみてください。
paiza.jp



PaizaCloud」は、環境構築に悩まされることなく、ブラウザだけで簡単にウェブサービスやサーバアプリケーションの開発や公開ができます。
https://paiza.cloud




paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

paizaのスキルチェック

paizaのおすすめコンテンツ

Webセキュリティ入門 ハッカー入門 Webセキュリティ講座がスタート!CVは内田真礼さん! Python✕AI 機械学習入門講座 CVに上坂すみれさんを起用!人気の機械学習講座を公開中!
paiza転職 paiza新卒 EN:TRY paizaラーニング Copyright Paiza, Inc, All rights reserved.