今日学んだこと

読書感想文とか、勉強した内容とか

SIの闇を利用した、未経験からのエンジニアへの道

今エンジニア(プログラマー/SE)が足りない・・・そんな話、よく聞きますよね。その一方で、エンジニアになりたいなーという話も良く聞く。

じゃぁ、なんでなりたい人がならないか(就職/転職しないか)というと、なり方がわからないからかなと思いまして。

なり方を僕の経験交えて書いたりすると需要あったりするかな?と書いてみる次第です。

SIってなんぞ?

企業や公官庁のシステムを作る事と思っていただければ、大体合ってます。

  • 社内の会計システム(簿記の記帳をシステムでやると思って頂ければ)
  • 社内の在庫管理システム

といった企業内で閉じるものはもちろん

  • オンラインバンキングシステム
  • オンライン証券システム

といった、その企業の顧客が使うものを作ったり

  • 受発注システム

といった企業間のやりとりをするようなものまで色々作ります。

SIの闇って?

金がかかる

上にあげた様な諸々を作るにあたって、少人数のプロフェッショナルが短期間で作り上げるかというと、大抵そうではありません。

2桁億円の予算で作るシステムや、3桁億円の予算で作るシステムなど珍しくありません。

公官庁が導入したシステムは予算みる事ができるので、ちょっと調べてみたらこんなのを見つけました。

http://www.cas.go.jp/jp/seisaku/nenkin/dai9/siryou4.pdf

http://www.cas.go.jp/jp/seisaku/nenkin/dai9/siryou4.pdf

これをみると、年金システムの刷新で1150億円と書いてますね。恐ろしい。

もちろん、こんな大規模なのばかりという訳ではないですが、単位が億の案件は少なくないです。

何が言いたいかというと、1つのものを作るにあたって、大量の人が必要になります。

人手が必要

システム開発じゃーとなって、必要となる人数。先ほど挙げた様な大規模なものだと、3桁人とか4桁人の人でが必要になってきます。

いわゆる大企業。N○TデータとかI○M、日○製作所などなどが自社からそれだけの人数を出せるかというと、まぁ無理です。

じゃぁどうなるかというと、いわゆるゼネコン構造で人を集めます。

ITゼネコン - Wikipedia

NTT系列や国内大手ITベンダー(日立、NEC富士通)の三社、外資系ITベンダー(IBM、HP、Oracleなど)系列のSIerが大手の顧客を囲い込み、インフラ構築からコンピュータ機器の設置、納入後の運用メンテナンスに至るまでを一括受注して利益を得ており、実際のプログラミングやテスト作業を中小のSIerに丸投げしている状態となっている

丸投げというのは言い過ぎ感ありますが、大手が受注し、それを「協力会社」という呼び名で中堅SIerが入ってきて、その中堅の下にもまた「協力会社」という名で人貸しが行われます。

ピラミッド構造が発生する訳ですね。

ピラミッド構造の上と下

いわゆる大手と呼ばれる会社。世間的には丸投げするだけで楽をできると思われがちですが、全くもってそんな事はありません。

「え?お前この○○億円プロジェクトの責任どうとってくれるの?」というプレッシャーや「は?協力会社に残業させるとその分金出さないといけないんだよ?」といったプレッシャーにさらされつつ、(特に赤字が見えてるプロジェクトだと)残業代もまともに出ない中連日徹夜するなんて事も多いです。

 

いわゆる中小企業と呼ばれる会社。言葉を悪く言えば下請け。

やってる事は人貸しなので、残業代が出ないという事は少ないです。これがメリットと言えばメリット。

ただし、烏合の衆の一員として働く事になるので、全体感が見えないなか、周りを知らない人ばかりななか、よく分からない要件を元に設計書を描いたり、よく分からない設計書を元にコードを書いたり、どう動くのかが正解なのかわからないコードに対してテストをする・・・といった事はよく発生します。

参画するプロジェクトによりけりですが、一つ言えるのはどのポジションでも辛い。というかお仕事って基本辛いものだよね・・・といった感じです。

ピラミッド構造の下に潜り込む

「協力会社」という名の下請け人貸し会社。

実際に手を動かす人たちだから、技術力が必要に思えるじゃないですか。実際そうではなかったりするんですよ。

http://employment.en-japan.com/search/search_list/?occupation=401000&topicsid=102_105&aroute=1

転職サイトで「未経験可 学歴不問」とかでエンジニアの求人を検索してみた結果がこちら。

f:id:nakazye:20150523142505p:plain

なんと150件も出てきます。

これらの9割が人貸し企業だと思ってくれて良いと思います。勤務地が地域表記だったり「プロジェクトによる」と書かれてたら、ほぼそうです。

エンジニアなのに未経験でいい。なんでだと思います?それだけ人が足りてないのと、それでなんとかなってきたなってきたという現実があります。

実際に潜り込んだらどんな感じ?

何を隠そう、僕のエンジニアキャリアの始まりはこういった会社ではじまりました。

研修期間は2週間くらいだったかな?まず「10日でわかるJava」という感じの本を渡された記憶があります。そして放置。なかなかひどい会社でした。

その後、協力しにいく会社(言い方悪く言えば、派遣先)が決まり、面談となります。

派遣先も10日でわかるJavaをやっただけの未経験者なんて取りたくないでしょう。会社主導の元、捏造された職務経歴書が用意され、経歴を捏造します。

模擬面接など練習をして、面談に挑みます。

なお、この時、大抵の会社では経験者と抱き合わせ販売されます。最初の最初は、さすがにフォローできる人がいないとクレームになりかねないので。

初めてのプロジェクト

そりゃもう悲惨でした。聞いたこともないフレームワーク、触ったこともないデータベース。設計書?ふーん、システムってそういうの作ってからコード書くのね、でもこれだけ見ても何していいか全くわからないんだけど。

1ヶ月くらいずっと頭真っ白でした。周りから、なんか頭から湯気が出てる様に見えるんだけど大丈夫?と言われた記憶もあります。

炎上案件だったので、連日の徹夜。いやー、辛かった。

 

ただ、多分どんな仕事でもそうだと思うんですが、わからんなりにも段々とわかることが増えてくるんですよね。

しかも、僕が仕事始めた当初、まだネットも貧弱な時期。会社からネットを使えなかったので、本片手に作業してました。

それに比べれば、わからないことがあればネットで調べられる今の時代は、もっとやりやすいんだろうなぁとか思います。

 

その後、お前はどうなったの?

そんな会社でしばらく仕事を続け、それなりにコードも書けるようになり、システム開発の進め方というの見えてきて。

2007年だったかな、ちょうど今と同じような感じでエンジニアの人手不足が叫ばれてた時期がありました。エンジニアだけでなく、どんな業種でも人が足りないと叫ばれてました。いわゆる好景気ってやつですね。

その時に転職でもしてみるかと、転職活動をしてみたら、いわゆる大手と呼ばれる所になぜか内定を頂き、今もその会社で仕事してます。

 

まとめ

何が言いたかったかというと、エンジニアってなる為のハードルが高く思われがちですが、実はそんなことなかったりするんですよ。

もちろん、知識や経験がモノを言う業界なので、「デキる」人になる為にはそれなりの努力は必要。

ただ、「勉強して少しはできる人になってから」という入り方だけでなく「まず入ってから実力つける」というやり方もあるよ、と。

 

こういう業界の構造自体が「そんなんだから日本のSIは・・・」と言われる要因になってるのはあるんですけどね。

どんな業界だろうと人は育てなきゃいけなくて、それをOJTとしてやると考えると、こうやって揉まれながらステップアップしていくというのはアリなんじゃないかなとも思ったりしてます。

 

もし、「仕事辞めてから就職活動してるけど、全然内定取れない・・・」とか「今の仕事辞めてシステム関係やりたい・・・」とか「そろそろニート脱したいと思ってる・・・」という人がいて、その人たちが選択肢の一つとして考えてくれると嬉しいなーと思ってます。

英語学習の記事ってよくバズるけど、すごく良いことだと思うんだ

昨日は中国語の話で今日は英語の話。

今までサボってた分、また定期的に書こうかな、と

 

まず結論から言う。みんな勉強の記事書こうぜ

学習関連の記事ってよくバズるよね

英語に顕著ですが(昨日の中国語記事もバズったけど、あれはネタ枠だと思ってる)、学習法がたくさんのブクマを集めているのをよく見ます。

で、そのコメントの中でスターがついてるのって「ブクマしてるお前らは、どんだけブクマすれば気がすむんだ?」とか「後で読むと言って本当に読んでるのか?実践してるのか?」みたいなのが多い。

 

僕もそういう記事を良く読むんだけど、「参考になるなー」というのも勿論あるけど、どちらかというと「僕以外にも頑張ってる人いるし、僕も頑張ろう!」と(持続力無いかもしれないけど)モチベーション上がるんだよね。

 

学習系の記事がバズってくれると、息抜きの時に読んだりして、「よし休憩終わりじゃー!もういっちょ頑張ろう!」って気になれる。

 

特に語学学習は単調

昨日のおっぱいドリブンみたいな学習法がずっとできるかというとそんな事は無く、基本単調な学習です。

nakazye.hatenablog.com

今、僕は次の昇進に要求されるTOEICスコアを取れてないのと、中国以外の国とも組んで仕事したいぞというモチベーションから、TOEICの勉強をしてたりするんですが、コレがまた単調で・・・。

弱い文法周りを抑えようと問題集進めてるんですが、集中力がなかなか続かない。

極力楽しくやりたいけど、ある程度以上を目指そうとすると基礎は絶対重要なはずで。

「嫌だ嫌だ」と自分からモチベーション下げながら勉強するのは論外ですが、「うっひょたのしー!」と勉強できる基礎はなかなか無いと思うんですよ。

 

で、「あー疲れたー」ってなった時に、学習系の記事読むと「おっしゃ、俺も頑張るぞ!」ってなるんですよね。

 

僕が定期的に読み返してたりするのはコレ。英語学習というカテゴリからはズレるかもしれないけど。

storys.jp

自分がやっていることが正しいと信じる

どんなにすごいスポーツ選手でも最初はできないはず。だから勉強も子供の頃からの積み重ねでデキるようになっているだけで「今自分がデキないのは経験が足りないからだ!」と言い聞かせ自分がやっていることが正しいと信じていた。

その結果、立ち止まることなく勉強し続けることができた。その過程はもちろん無駄なことばかりしていた。その無駄な経験が知恵になり行動を改善することができたと思う。

間違った道を通るのはヤダけど、最短距離を進める事なんて多分無いというか存在すら怪しくて、方向があってる事を時折確かめつつ、後は自分信じて進むしか無いんじゃないかなーと。そんな感じで解釈しつつ、よっしゃ俺も頑張ろうと自分に鞭打ってたりします。

 

で、お前は最近どんな事やってるの?

○○やってスコア××点アップしました!とか言えればいいんだけど、まだ受けれてないので。てか取り組み始めたのもここ最近だったりするんで効能を書けないのが悲しい限りですが、前述の通り文法やってます。

この問題集ひたすら解いてる感じです。

弱点の文法克服するぜー!と文法書頭に叩き込もうとも思ったんですが、辞書みたいな厚さのある文法書を全部叩き込むのは現実的じゃない。

むかーし買った勉強法の本、完全英語上達マップに「参考書読むんじゃなくて、問題解いて解説読んでを繰り返した方が効果的だよ」とあったので、その方法を取り入れてる感じです。

英語上達完全マップ―初級からTOEIC900点レベルまでの効果的勉強法

英語上達完全マップ―初級からTOEIC900点レベルまでの効果的勉強法

 
実際のステップ

僕は、Ankiというソフトを単語帳ソフトに問題と答えをぶち込んで、空き時間でも勉強できるようにしてます。

Anki - powerful, intelligent flashcards

iPhone

 

よくある有料ケータイの問題集ソフトを使ってもいいんですが、解説読んでもピンとこなかった部分に自分で注釈を入れたいのと、入力する過程が記憶に定着する助けになるかなという思いで自分で入力してます。

 

f:id:nakazye:20150521203439p:plain

まず問題文を写経する。{{c1::}}ってなってる部分は、単語帳形式にした際に隠れる部分です。

 

f:id:nakazye:20150521204928p:plain

続いて「これかなー」と思った答えを入力してみる。で、答え合わせ。

 

f:id:nakazye:20150521205014p:plain

合ってようが合ってなかろうが、訳文と解説文を入力。

腑に落ちないところがあればネットで調べて補足を追記。例えば最近だと「主語とbe動詞が省略された分詞構文です」とかあって「何だけそれ・・・?」と調べて追記したりしてます。

 

で、通勤中や空き時間にiPhoneで再テスト(無料でサーバーに保存する形での同期ができるのがこのソフトのすごいところ!)。以下のキャプチャはPCのものですが、iPhoneでも似たような感じです。

f:id:nakazye:20150521205455p:plain

おもて面と

f:id:nakazye:20150521205510p:plain

裏面

 

で、本題なんだっけ・・・?

いくら学習を楽しく!と考えても、こういう単調な作業って出てくると思います。

で、そんな時に「僕はこういう工夫してるよー」とか「こんな事覚えたよー」とかいった記事見ると、「よっしゃ俺も頑張ろう」となれるんですよ。

あと、僕が今この記事書いてて思ったのが、書く事によるモチベーションアップってのもあるんですよね。

 

って事で、勉強関連の記事はWin-Winだととても強く思うので、成果が出た/出す為に頑張ってる/今日こんな事を覚えた といった記事を書いてくれる人が増えるとその人にとっても、周りにとっても有益だと思うので、そういう記事を書く人が増えるとうれしいなぁというお話でした。

そして、そういう頑張ってる記事がバズる事はいい事だと思うし、萎縮せずにブクマつけて欲しいなぁというお話でした。

JavaScriptのテストにmocha使うと楽しいよ!

最近JavaScriptというか、coffeeスクリプトを頑張ってます。

以前リリース記事書いたProgrammer Profileが、やっぱりやっつけ仕事の弊害で改善するにしても限界が来てる感じで、いっそUI周りを刷新しようと頑張ってます。

nakazye.hatenablog.com

 で、どうせやるならと、gulp使ってbower使ってbackbone使ってmarionette使ってrequirejs使ってmocha使ってphantomJS使って・・・と足まわり固めるだけでかれこれ1週間近く使ってたりする次第です

 

僕のようなJavaScript知識ほぼゼロの人間が、いきなりモダンなJavaScriptをやろうとすると、多分同じ様に時間がかかり、試行錯誤が続き、心折れかけるんじゃないかなぁ・・・と思ってます。

本題

そんな感じで心折れながら環境固めてた訳ですが、mochaというJavaScriptのテストライブラリにて、興味深いオプションを見つけました

Mocha - the fun, simple, flexible JavaScript test framework

f:id:nakazye:20150326015159p:plain

Reportersという項目。

これを色々変更してみると

こんなのや

こんな感じのレポートが出せちゃう!楽しい!!

テストが数個だとすぐ終わってしまうので、たくさんテストを書こうというモチベーションにもなる!!

passしなかった場合は、ちゃんと当該内容が表示されるので、その点はご安心を。

そんなわけで、折れかけた心を癒してくれるテストレポーターの紹介でした

 

宣伝

以前紹介させていただいたサービス、Programmer Profileですが、最近更新が滞ってる様に見えるかと思います。が、現在ブランチ切ってそちらの方で鋭意改善作業中となりますので、引き続きご愛顧頂けると幸いです。

作業中のブランチ:

nakazye/ProgrammerProfile at renewal · GitHub

 稼働中のサービス(まだ旧UIです):

www.programmerprofile.net

英語勉強するなら楽しくやろうぜ!ノベルゲーを使った英語学習

僕はゲームが好きです。現実逃避として大変優れたツールであり、生活に潤いをもたらしてくれます。

僕は勉強が嫌いです。頭が悪く、記憶力が無く、すぐにわからんムキー!!となるので嫌いです。ストレスでしかありません。

ゲーム?XBOX3DS?それともP/ECE?ゲーム機持ってないよ

僕は箱メインで3DSでもよく遊んだりしますが、今回はPCです。

PCって言われても、僕Macだし/Linuxだし・・・

これから続くお話は、Windowsがベストですが、MacでもLinuxでも大丈夫です!(Linuxの場合は、Ubuntu推奨)。

PCゲームをよくやるかたはお気づきかもしれませんが、Steamのゲームを扱います。

なお、今回の説明は、Windowsでの動作事例を元にします。

前回書いた記事のブコメ

開発環境としてのデスクトップLinuxのススメ - 今日学んだこと

Windowsっ子なのにWindows一切出てこなかった。

2015/03/12 09:57

 と言われてしまったので・・・。

 実は今までメインで使っていたWindows機のCドライブSSDがお亡くなりになっており、かつインストールしていたWindowsMSDNサブスクリプション経由のもので、そしてMSDNサブスクリプションの期限はすでに切れており・・・という状態でした。

昨日、一念発起しSSDを換装し、Windowsも買ってきて復活させた次第です。

Steam?何それ

ゲームのオンラインストアサブスクリプション管理ツールとでも言ったところでしょうか。

Windowsだけでなく、MacLinuxにも対応しており(注:ただし、Windowsにしか対応してないゲームも多い)、最近はSNS的な要素も持ってたりします。

f:id:nakazye:20150315172639p:plain

今回の話とは全く関係ないですが、AoEシリーズがSteamで復活してます!みんなやろうぜ!

本題:ゲームを使った英語学習

数年前までは、Steamと言えばいかにも洋ゲー的なものばかりでした。インターフェースは英語だし、中で話される会話も英語なので、勉強にならないとは言いませんが、銃の名前を英語で言えるようになったり、ファンタジー世界の英語での用語が分かるようになっても、あまり実用的ではありません。そもそも会話があまりなかったりするゲームが多いので・・・。

しかし、ここ数年、ちょっと事情が変わってきており、ノベルゲーがいろいろと出てきております。

 たとえば

f:id:nakazye:20150315173643p:plain

こんなのとか

f:id:nakazye:20150315173730p:plain

こんなのとか

f:id:nakazye:20150315173849p:plain

こんなのなど

英語を勉強する!と意気込むのではなく、楽しめそうな気がしてきません?

実例紹介:Go! Go! Nippon!

Go! Go! Nippon! ~My First Trip to Japan~ on Steam

これはマジおすすめです。開発はかのOVERDRIVE。クオリティが低いわけがない。ただ、残念な点が1点あって、それはWindows専用ということ・・・

f:id:nakazye:20150315174550p:plain

最初にcurrency rateを入力するところから始まるあたりから、「あ、本気で外人向けに作っとる・・・」というのが垣間見えます

f:id:nakazye:20150315175100p:plain

そして、僕みたいなTOEIC300点な英語力な人にもうれしい日本語字幕付き!

f:id:nakazye:20150315175223p:plain

外国人の僕が日本に遊びに来た というストーリーなので、随所に日本の紹介がちりばめられてたりします。英語で日本のことを紹介する時など、そのまま利用できそうなフレーズが満載です!

あと、海外から来た人が日本のどういう点に注目するのかも垣間見れて楽しいです(自動販売機が道にあるのすげぇ!とかコンビニでSUICA使えるすげぇ!とかとか)

 

ちなみに、これから紹介する他のゲームもそうですが、勉強法としてはやっぱり音読がいいんじゃないかなーとか思ってます。

日本語の字幕を付けてしまうと、どうしてもそちらに目が生きがちなので(消すこともできますが、あれば便利なので使いたい。辞書引かなくていいので。)、英語読むのを忘れない為にも、セリフは全部音読するのが良いのかなーとか思ってます。 

実例紹介:Sakura Angels

Sakura Angels on Steam

こちらはMacLinuxでも動きます。前作のSakura Spiritってのが「Steamでギャルゲーが出たぞ!?」と話題になったこともあり有名なのですが、残念ながら僕はケモナー属性は持ち合わせていなかった為、購入は見送っていました。

Sakura Spirit on Steam

が、今作のSakura Angelsはどうやら学園ものっぽいので、つい先ほど勢いでカートに入れてみた次第です。

このゲームのちょっとしょんぼりな点は、日本語字幕がない事。全部英語です。

f:id:nakazye:20150315180718p:plain

「毎日同じ夢を見るんだ・・・」という、いかにも中二病な感じの出だし。

f:id:nakazye:20150315180914p:plain

And then, everything shall change.いいですね。言ってみたいですねこんなセリフ

f:id:nakazye:20150315181158p:plain

こういうゲームの設定は、たいてい両親が大人の事情で家にいないことがおおいですが、このゲームでは仕事が忙しくて家にいない設定の様です。

f:id:nakazye:20150315181610p:plain

日本語字幕ないのは辛いな・・・と思ってましたが、ストーリーは割とオーソドックスっぽく、「外に出ると人も車もいない。モンスターっぽい何かがいる!気づくと僕の前には武器を携えた美少女が!」と、たぶんこういうのを王道というんだろうなというようなストーリー展開なので、わからない単語を読み飛ばしてもなんとなくストーリーを追うことができます。

洋書の多読勉強法として「わからない単語があっても辞書で調べず読み飛ばせ!何度も遭遇してればなんとなくわかるようになる!」というのがあって試したことあるんですが、苦痛でしかなかったんですよね。ストーリー追えなくなって。

その点、ノベルゲーなら絵もありますし、(しかも王道ストーリーっぽいし)わりと楽しみながら読み進めることができてびっくりしました。

 

まとめ

 

最近のSteamは、ノベルゲーも多く、かつ英語で作られているので、楽しみながら勉強するためのツールとして使えます。

1つ注意点を上げるとすると、SteamはSNSの機能を持っているため、ユーザーが所持しているゲームを見れたりします。たとえば僕のページだとこんな感じ

Steam Community :: nakazye :: Games

もしかするとプライバシー設定で不可視にすることも可能かもしれませんが、ギャルゲーやってることがばれると世間的にいろいろまずいという方は注意が必要です。

 

今回紹介したもの以外でも、英語学習に使えそうなゲームがたくさんあったりするので、皆さんもぜひ探してみてください!

 

追記

ちょっとこういうゲームは受け付けない・・・という場合は、Kindleおすすめです!

 僕は、外人が主人公のストーリーだとあまり感情移入ができないので、ビジネス書が多めですが以下におすすめ本を列挙してみてます。

Kindleだと辞書が簡単に引けるので捗る!

英語学習が捗るkindle Word Wiseの紹介とお勧めの洋書 - 今日学んだこと

kindleで洋書を使った英語学習:便利機能を駆使する - 今日学んだこと

 

開発環境としてのデスクトップLinuxのススメ

前回の更新からかなり時間があいてしまいました。

ネットに規制がかかるかの国へ出張してたのと、本題であるLinuxデスクトップ環境を構築してたりしてで。

デスクトップLinux?

ここではサーバー用途との対比語として利用しています。実際はノートPCにインストールしてたりします。

なんでオススメ?結論はよ

構成によってはという前置き付きですが、軽いです。めちゃくちゃ軽いです。

今このブログを書いているのもlenovoのx100eという約5年前のネットブックだったりするんですが、メインマシンとしているMac mini Late2012 梅モデルより断然軽いです。

特にはてなブログの管理画面って、しょっちゅう固まるんですよ・・・。加えて、我が家の子は日本語入力さえしょっちゅう引っかかる。それがない。まさかネットブックが僕をストレスから開放してくれるとは思ってませんでした。

f:id:nakazye:20150311223050j:plain

参考までに、x100eのスペックのご紹介

CPU:Athlon Neo MV-40(1.6GHz)

メモリ:2G

CPUはまさかのシングルコアです。これで快適に動いてる!すごい!

どんな構成にしてるの?

Arch Linux+MATEという構成にしています。

そもそも、なんでネットブック引っ張り出してLinuxを入れようと思ったかというと、勢いで参加表明した勉強会(momonga.vim)への参加のためだったりします。

コーディングはずっと英字配列キーボードでやってきており、基本的にはデスクトップ使ってました。今持ってるノートPCは今回引っ張り出してきたx100eを除き日本語配列キーボード。勉強会定番と思われるmac bookもあるけど、日本語配列でコーディングできる自身がありませんでした(会社のノートPCも英字配列だったりするので)。

よって、今回のミッションは

  • 諸々の言語が普通に動かせたりコンパイルできる
  • 快適に開発できる→エディタがまともに動く
  • ブラウザが普通に動く→最近はWebアプリ作ることが多いので

として環境構築をはじめました。

快適にという点でこのPCでWindowsは論外なので、選択肢はLinuxBSDって手もあるけど)。いろいろ試してみると

といった感じで色々難あり。

そこで勢い&思いつきで試した最近なにかと話題のArchLinuxを入れたところ、僕のx100eが途端に輝き始めた次第です

ArchLinuxって?

最初に断って起きますが、僕は根っからのWindowsっ子です。エ○ゲが動かないPCなんてPCではないとずっと主張し続けてきました。何が言いたいかというと、アーキテクチャ面での説明ができるほど詳しくありません。すべて「僕はこう解釈している」「僕はこう感じている」という説明となります。

デフォルト構成は最小限だよ!

軽いポイントその1だと思っているんですが、インストール時の構成が最小限です。

どんだけ最小限かとwikipediaから引用すると

Arch Linuxのインストール作業はコマンドライン環境で行われる。パーティションの作成、ファイルシステムの作成・マウントなどを行い、pacstrapという小さなシェルスクリプトを実行して基本システムをインストールする。

インストール直後の状態では、必要最小限のGNU/Linux環境 — すなわちLinuxカーネルGNUツールチェーン、少数の追加モジュールとライブラリ、およびbashシェルのみが存在する。その後のシステムの設定やデスクトップ環境などのソフトウェアの追加は手動で行う必要がある。

Arch Linux - Wikipedia

インストール作業が、いわゆるウィザード形式ではなく、すべてコマンドで、しかもブートローダーの設定から自分でやる感じだったりします。ハードル高い。

ただ、それと引き換えに、使わないよくわからないプログラムが裏で動き続けてるという状況を排除できるので、ネットブックでも快適な作業が可能です。

OSとしてのバージョン?そんなもの無いよ

こちらもWikipediaより引用ですが

明確なバージョン名やリリース日を持たない「ローリング・リリース」システムを採用している。リポジトリ上のパッケージは個別に日々更新されており、定期的なアップデートを行っていれば、システムを常に最新の状態に保つことができる

 要は定期サービスパック的なモノは無く、(多分リポジトリ上でのテストが通れば)すぐにアップデートされるという方針。ちょっとコレインパクト大きそうだから様子見てから取り込みましょ とかいうのが無い。

罠にハマる可能性もあるけど、常に諸々の最新版が利用可能と考えれば良いわけです。

いつクラッシュしても良い様に、コレを気にLinux環境を整え、各種設定ファイル郡をGithubに置いておけば良いのかなと思ってます。

開発機なんですから、なくなったら困るものはVCSに置いておけば良いわけだし、逆にそういう構成を作ろうと思ういいきっかけになっています。

Arch Linuxって聞いたことあるけど、MATEってなんぞ?

MATE (デスクトップ環境) - Wikipedia

ArchLinuxは先ほど説明した通り、インストール時は最小構成です。

デスクトップ環境なんてものはありません。すべてCUIの世界です。

なので、デスクトップ環境を自分の好きな様に作れます。

で、その好きなように作れる選択肢の中で、軽さに定評のあるのがこのMATEなんですね。

ネットブックが快適に!快適に!とさっきから言っていますが、その快適さの大半を担っているのがこのMATEだと思っています。

ubuntuだって、CUIで使っている時は重いなんて思わないんですよ。それが、Unityと呼ばれるデスクトップ環境が入ってくると、ネットブックには耐えれない重さになってしまいます・・・。インストールするだけですぐ使えるのはメリットなんですが、少なくとも僕は(このPCでは)使用に耐えませんでした。

で、MATEです。

画面の構成はシンプル。同梱されてるテーマはおしゃれ(中二病なので黒が好き)。IMEもちゃんと動いてくれるし、Wifiの設定もGUIからできる。バッテリ少なくなると通知されるし、画面上からボリュームコントロールも効く!(てか、特別なことしなくても無線LANとサウンド関連が有効化されるのはマジ驚きました。これはMATEというよりArchの力かもですが)

 

terminal開いてみたところ

f:id:nakazye:20150311231548p:plain

 

今この記事を書いているfirefox

f:id:nakazye:20150311232429p:plain

 

MATEのデスクトップテーマ

f:id:nakazye:20150311232002p:plain

 

シンプルですが、その分ホント快適で、「なんで俺は今までMacでブログ書いてたんだろう。開発環境だけじゃなくて、ブログ書く環境としても断然こっちの方が快適じゃねぇか!」と、さっきから心地よい興奮のなかこの記事を書いています。

ブラウザが快適なのは、Flash入れてないからというのもあるかもしれませんが、それにしてもここまで入力が引っかからないのは驚愕です。

その他に快適に使う為になにかやった?

せっかくLinux入れてみたんだしー、と、色々と試してみました。

シェルをzsh

今まで便利さをよくわかっていなかったんですが、この記事見ながら設定したら、かなり快適になりました。

漢のzsh | コラム | マイナビニュース

個人的なお気に入りは、途中まで入力したあとでのhistory補完

vim <ここで↑>

とすれば、過去にvimで開いたファイルを元に補完してくれる。便利!(bashでもできるかもしれないけど)

その他諸々補完が便利になる機能があるので、使っていて便利だし楽しいです。

tmux

こちらは入れてみたはいいものの、まだ感動レベルの便利さは体感できてない代物。サーバーと連動させると便利みたいですけどね。

先ほど貼ったキャプチャの中で、コンソールが分割されているのがありますが、それがこのtmuxによって実現されています。

複数Terminalを一つの画面で!というのがポイントですが、複数開いて使うのでも別にいいかなぁというのが現状です。

もっとキーバインドが手に馴染んで、さっさかウィンドウ間を移動したりコピペできるようになれば、ありがたくなってきそうな予感がします。

Emacs/Vim

現在はVimを鋭意勉強中・環境構築中です。

が、コーディングするならEmacsの方が慣れてることもあって、まだ併用中です。

どちらも、この環境で設定ファイルを発展させたいなぁと思ってます。

なお、Linux環境でのTwitterクライアントとしてEmacsはものすごく優秀です。

f:id:nakazye:20150311231548p:plain

こんな感じでtmuxで分割した画面、もしくは別個に開いた端末画面で垂れ流しておくと便利便利!GUIEmacsで起動すれば、アイコンが表示できたりするのも面白いです。

 

まとめ

というわけで、エディタだったりブラウザだったりであれば、古いPCでも快適な環境を得ることができます。Visual Studio使いたいとか、Xcode使いたいといった場合は無理ですが、そうでなければサブ機として普通に活用できます。

というか、僕はこの子が当面メインになりそうな気がしてます。それくらい快適です。

 

もちろんゲームをしたり、DMMでムフフ動画を見るといった用途には全く持って使えないので(ゲームはNethackがありますが・・・)、メインマシンとして使うには無理がありますが、開発のサブ機としては普通に使えます。

そして何より楽しいです。パソコン触ること自体が楽しいと感じたのはホント久しぶりです。

最小限のところから、徐々に環境を整えていく。いかがでしょう?皆さんも試してみてみませんか?

追記

いろいろコメントいただきありがとうございます。

いきなりメインマシン代替としてLinux使い始めると挫折しやすいし、かといってVMで動かすと重かったりVM自体の設定に悩まされたり(ファイル共有どうやるんだ?とか、どうせだったらVagrant入れてみるか?とか)とするので、まずは古いマシンに用途を絞って入れてみると楽しいかも!というご提案でした。

 

id:toshi_suzuki

MATE環境を使うならLinux Mintの方が楽じゃないかしらん? それとも Arch Linux は究極的に軽いとか?

これ、最初に選択肢として考えたんですが、Ubuntuベースとのことで、触ったことあるUbuntuよりは別のベースのものがいいなーと思い、Archにしてみた次第です。で、使ってみて快適だったので紹介してみた感じです。

簡単さでいったら、Mintの方が絶対簡単で、かつ重さもそんな変わらないんじゃないかなと使ったことが無いながらに思ってます。

Ubuntu、僕の少ない経験の中でですがドライバ絡みでトラぶった事が無いので、そういう点でも初心者向けにはいいのかなーとか思ってます

もし利用されているのであれば、おススメ記事期待してます!

 

id:kuro_pp

 Arch Linux、MATE導入が面倒かったら、最初から入ってるManjaroとかどうかな

 Manjaro、よさそうですね。

別のArchベース紹介記事で

Archを使ったことがない方にオススメするかと言われると正直なところ微妙なところです。素晴らしいディストリビューションであることは間違いないのですが、Archのインストール手順を踏むことでLinuxに詳しくなれるのも事実なので、これを行うことで何かがおかしくなった時でも、なぜその現象が起きたのか、どうやったら直せるのか、ということまでわかるようになるかもしれません。

Arch Linuxの機能性を面倒なインストールなしで使えるLinuxディストリビューション『ArchBang』 | ライフハッカー[日本版]

とあって、これはこれでなるほどなーと思ってたりします。

軽快で手軽を求めるならMintがよさそうで、せっかくArch使うなら生っていうのもいいんじゃないかなーと思ってたりします。

 

id:OkadaHiroshi

 開発環境をLinuxにするのは賛成(僕もそうしている)だけど、ロースペックのマシンにするのは反対。高スペックにするとコンパイルも早いし、Vimに重めのプラグインを入れても大丈夫、仮想マシンもサクサク動かせるよ。

 こちらはまったくもってその通りでございます。

メイン開発機にすると、VM使いたかったり、IDE使いたかったりとLinuxだろうがある程度のパワーは必要かと思ってます。

「軽い環境のLinuxなら開発すべて賄える!」と間違った理解をしてしまうことを防ぐ点で、このコメントはありがたかったです。ありがとうございます。

 

id:t_massann

xubuntuとかlubuntuとかPuppy Linuxでもいいと思う。あと動画とかゲームも全くできないということはないよ 

 そですね。僕が導入した非力マシンでは難しいですが、ちゃんとしたマシンに入れれば色々できちゃいますね。

SteamってArchで動くんですかね?紙芝居系ゲームだったら僕の非力マシンでも動かないかなと思ってたりします。


Sakura Spirit on Steam

 

追記の追記

この記事に言及頂いた上での色々なディストロの紹介記事がありましたのでご紹介


5年以上前のPCでもLinuxで復活できますよ! - t_massannのブログ

色々試してみるの楽しい!

Vim起動時に出てくるウガンダへの寄付を行う手順

最近、コーディングする際はEmacsを利用してました。

プログラムを勉強し始めた時に、(当時メジャーだった)秀丸じゃない、別のエディタは無いかと探したところ、xyzzyというEmacsライクなエディタに出会いまして、そこから少し前にEmacsに乗り換えた感じです(Mac買ったというのもあって)

 

先日、Python(Django)で作ったWebアプリの紹介&α版試してみて依頼記事を書いたのですが、それがVimコミュニティの方たちに多く利用して頂けたんですね。ありがたい意見も沢山頂戴して。

趣味プログラミングの勧め:仕事しながら1週間で作ったサービスを紹介してみる - 今日学んだこと

で、VimコミュニティのLingerTwitter見てたら僕もVimを使ってみたくなり、先ほど会社PCに導入してみました(現在ちょっと遅めのお昼休み中。)

 

 Vimを起動すると

ここからが本題なんですが、Vimを起動するとこんなメッセージが出てきます。

f:id:nakazye:20150210140155p:plain

そして、:help iccfと入力するとこんなメッセージが

f:id:nakazye:20150210140323p:plain

チャリティウェア!ステキな響きです。余談ですが昔「少年ウェア」なんてのがあったのって最近の若い子は知ってるんですかね?

話がそれましたが、こういう心意気には大賛成なので、協力しようと思いました。

が、ここに載ってるURLを見ると、英語なんですよ・・・僕みたいにTOEIC300点な人でも協力したい!という人もいるかと思いますので、手順を紹介しようかと思います。

寄付する方法

1.ICCF Holland - Homeにアクセス
2.左のメニューからdonationを選択

f:id:nakazye:20150210141844p:plain

3.ページ中央のPaypalを選択

いくつか方法がありますが、Paypalが一番簡単かと思います。この際、ドルでの送金もできるけどユーロでの送金が好ましいよ。と書いてあるので、次以降のステップで特に理由がなければユーロで送金しましょう。

f:id:nakazye:20150210142157p:plain

4.Paypalで送金

Paypalの画面に移るので、金額を決めて送金します。デフォルトで単位はユーロになってます。2/10現在、1ユーロは134円くらいをつけてます。

なお、ここに記載した額+カード会社の為替手数料が上乗せされるはずなので要注意です。

f:id:nakazye:20150210142434p:plain

5.完了!

PayPalから支払完了のメールが来るので確認してください

f:id:nakazye:20150210142731p:plain

 

 

以上、いかがでしょか?画面は英語ですが、英語を入力する必要がある箇所は一つもありません。やってみると簡単だったりします。

もし、Vimからのお願いに応えてみたいな、という方がいらっしゃいましたら、参考になれば幸いです。

趣味プログラミングの勧め:仕事しながら1週間で作ったサービスを紹介してみる

2019/1/1追記:メンテの気力もなくなり、でもサーバー代はかかっており・・・という状況なのでクローズしました

 

1週間ほどブログの更新をサボっていたんですが、何をしていたかというと新しいWebサービス作ってました。

作ったもの

http://www.programmerprofile.net/

f:id:nakazye:20150207185352p:plain 

ソースも公開しちゃうよ!


nakazye/ProgrammerProfile · GitHub

何コレ?

プログラマーツイッターアカウントを言語毎に並べ立てるサービスです。コンセプトだったり作ったきっかけだったり諸々あるんですが、それは正式リリース時にとっておきます(Topに書いてある通り、まだα版の位置づけ)

 

趣味プログラミングのススメ

ここからが本題。

デザインが酷いとか、コードが投げやりとか、色々意見はあるかと思うんですが、一応動いてます。

コレ、2/1(日)の23時から開発始めたので、休日無しの仕事しながら1週間でここまで持ってきた感じです。今日も作業しましたが、デプロイとデータ登録くらいです。その代わり、ここ一週間夜はほとんどコーディングに当ててましたが。

仕事しながらでもできるよ!

何が言いたいかというと、完璧を求めなければ、これくらいのレベルなら、1週間くらいで作れちゃうんですね。

例外を握りつぶしてたり、変数名が実態と合ってないのを放置してたり、見た目以上にコードも酷かったりしてますが、動いてます。

1週間でできたというのは、前提として「仕事でプログラムやってる」というのがでかいですが、それでも1ヶ月も言語学べば、そのあと1ヶ月かけてこれくらい作れちゃうんじゃないかなぁと思ったりもします。

プログラマの素質は怠惰であること

って言ったのはラリーウォールでしたっけ?

怠惰に素早くもの作りする為に、世にある便利ツールを利用してます。

Django

僕は仕事でJavaを使う事が多いんですが、趣味ではpythonをよく使ってます。そのPythonでWebアプリ作る際に使っているのがDjangoと呼ばれるフレームワーク

Javaで同じもの作れと言われたら、多分倍から3倍時間かかってるかと思います(Javaが悪いわけでは無いです。大規模開発Pythonでやれと言われたら、逆に3倍以上の時間を費やす気がします。)


Django を体験しよう | Djangoと日本の仲間たち

bootflat

僕はデザインのセンスが全くもってありません。悲しくなるくらいありません。なので、世にあるアセット化されたものを利用しています。


Documentation - Bootflat

これがなかったら、1ヶ月かけても終わってなかったでしょう。

heroku

自分でサーバーを立てたり借りたりして、必要なものをインストールして、セキュリティリスクのあるソフトを無効化して・・・と自分でやると、それだけで数日かかってしまいます。

ソースを配置(git push)するだけ。それだけでサービスが公開できるherokuはホント革新的だと思ってます。

インフラ構築を勉強したいというなら別ですが、やりたい事がアプリ開発であれば、やりたい事だけに集中できる。


Heroku | Cloud Application Platform

これがなければ公開が1週間伸びてたかと思います。

new relic

一般的にはパフォーマンス監視ツールとして認識されてるかと思いますが、勢いでアプリを作った時にはエラー情報収集ツールとしてものすごく役立ちます。

f:id:nakazye:20150207193111p:plain

エラーが出たらアラートを出してくれて、かつ分かりやすく教えてくれる。これがなかったらバグ対応に倍時間が取られるんじゃないかなぁと思ってます。


Application Performance Management & Monitoring | New Relic

まとめ

最近は、そこそこのモノを作るのであれば楽して短期間に開発する事が可能です。

もちろん、時間をかけて作り込む事もできます。僕もここから改善をかけていこうと思ってますし。

何か、「こういうサービスがあったらいいな」というアイディアをお持ちでしたら、是非作ってみてはいかがでしょうか?

すでに知識がある人は、やってみると意外にサクッとできちゃうかもしれない。

言語から学び始める人は、作るからには凄いものをと肩肘張らず、このレベルで公開することを目標に頑張れば、割とすぐに達成できちゃうかもしれない。

趣味でのモノづくり、やってみませんか?

 

最後にお願い

1週間でできる事の実例をと思い、機能的にまだまだ不足しつつ、テストも完全ではない状態でこの記事を書いてます。

もし、動作がおかしいところを見つけましたら、ツイッター@nakazyeか、このブログのコメントなりで教えていただけると大変助かります。

また、このサービスのキモである「世のプログラマーの情報を集めたい」の情報が全く集まっていません。

「この人○○言語に詳しいよ!」という情報がありましたら、是非登録をお願いできないでしょうか。

f:id:nakazye:20150207192707p:plain

C#に詳しそうな人をTwitterで検索しよう!と思った時に、C#を単語として認識してくれず、かなり悲しい思いをしました。そんな人が、このサービスでフォローする人を探せたらなと思ってます。是非、ご協力をお願いします!

最後にURLをもう一度:

http://www.programmerprofile.net/

右上のログインメニューからサインアップお願いします。連携時に出てくると思いますが、勝手にツイートとかは権限の関係で不可能なので安心してご利用ください

追記

思ってた以上に沢山のアクセスを頂き大変感謝してます。早くβを名乗れるように、頑張って作業します。

なんどもクドイかもしれませんが、このサービスが有益なものになるか否かは、どれだけ情報を提供して頂けるかにかかってます。有名人じゃなくてもいいんです。その言語を使って何かやられてる方の情報を1人でも良いので登録頂けると助かります

もちろん、あなた自身の情報も大歓迎です(自薦推奨です!)