読者です 読者をやめる 読者になる 読者になる

【05/21(土)】「新しいLinuxの教科書」を読む会を開催します

2016/05/21に、大阪で「新しいLinuxの教科書」を読む会を開催します。著者(の一人)である三宅も参加します。以前東京で開催したやつと基本的には同じ内容です。一人で読んでもはかどらないとか、本を読んだけど分からないところがあって質問したいとか、そういう人向けの読書の場とします。これを機会に本を読み進めて、Linuxの勉強をしましょう!

詳細

日時
2016/05/21(土) 13:00 〜 18:00 (13:00開場、13:30開始)
場所
大阪府大阪市北区西天満2-6-8 (堂島ビルヂング 地下1階)
定員
20人
参加費
無料
申し込みページ
http://linuxbook.connpass.com/event/30536/

内容(予定)

はじめに簡単なLinuxチュートリアルを行います。その後みんなで「新しいLinuxの教科書」を読みます。当日はその本を持ってきてください。分からないところや気になったところは適宜著者や他の参加者に質問しながら読み進めましょう。途中で著者による基調講演もあります。

新しいLinuxの教科書

新しいLinuxの教科書

その他

  • 会場には無線インターネット回線があります
  • 懇親会は行いません

よろしくお願いします!

WEB+DB PRESS Vol.92で「Linuxコマンド入門」特集記事を書いた

Linux

WEB+DB PRESS Vol.92で「Linuxコマンド入門」という特集記事を書きました。初心者向けにLinuxの使い方について解説しています。

WEB+DB PRESS Vol.92

WEB+DB PRESS Vol.92

  • 作者: 近藤宇智朗,大和田純,谷口禎英,後藤利博,黒瀧悠太,山下和彦,河野匡貴,古橋貞之,瀬尾直利,菅原元気,吉川崇倫,鈴木康平,星北斗,三宅英明,長野雅広,のざきひろふみ,うらがみ,稲富駿,伊藤直也,うさみけんた,丸山晋平,中島聡,はまちや2,竹原,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2016/04/23
  • メディア: 大型本
  • この商品を含むブログを見る

内容

全5章で、次の項目について書きました。

  1. Linuxをはじめよう
  2. Linuxの基本コマンド
  3. コマンドを組み合わせて活用する
  4. シェルスクリプトを書く
  5. テキスト操作とファイルの検索

基本的なコマンドから始まって、パイプラインシェルスクリプトの書き方まで解説しています。また、読者にはWeb開発者が多いだろうということで、Webの開発や運用で役に立ちそうなLinuxの使い方をいくつか例として紹介しています。これを読めば、どういう場面でLinuxが役に立つのか、どういう使い方をすれば便利なのかが初心者の人でも実感できると思います。

2016年4月23日発売です。ぜひ読んでください!

【04/16(土)】「新しいLinuxの教科書」を読む会を開催します

勉強会 Linux

2016/04/16に、「新しいLinuxの教科書」を読む会を開催します。著者である大角と三宅も参加します。一人で読んでもはかどらないとか、本を読んだけど分からないところがあって質問したいとか、そういう人向けの読書の場とします。これを機会に本を読み進めて、Linuxの勉強をしましょう!

詳細

日時
2016/04/16(土) 13:30 〜 18:00 (13:30開場、14:00開始)
場所
東京都中央区新川1-3-4 PAビル 4Fセミナースペース
定員
24人
参加費
無料
申し込みページ
http://linuxbook.connpass.com/event/29676/

内容(予定)

はじめに簡単なLinuxチュートリアルを行います。その後みんなで「新しいLinuxの教科書」を読みます。当日はその本を持ってきてください。分からないところや気になったところは適宜著者や他の参加者に質問しながら読み進めましょう。途中で著者による基調講演もあります。

新しいLinuxの教科書

新しいLinuxの教科書

その他

  • 会場には無線インターネット回線があります
  • 懇親会は行いません

よろしくお願いします!

「新しいLinuxの教科書」という本を書いた

「新しいLinuxの教科書」という本を書きました。Linuxの入門書で、友人の大角(id:ozuma)と二人で書きました。2015年6月6日発売なので、もう本屋さんに並んでいます。

新しいLinuxの教科書

新しいLinuxの教科書

学習に役に立つ本ができたので、ここで内容を紹介します。

目次

  1. Linuxを使ってみよう
  2. シェルって何だろう?
  3. シェルの便利な機能
  4. ファイルとディレクトリ
  5. ファイル操作の基本
  6. 探す、調べる
  7. テキストエディタ
  8. bashの設定
  9. ファイルパーミッションとスーパーユーザ
  10. プロセスとジョブ
  11. 標準入出力とパイプライン
  12. テキスト処理
  13. 正規表現
  14. 高度なテキスト処理
  15. シェルスクリプトを書こう
  16. シェルスクリプトの基礎知識
  17. シェルスクリプトを活用しよう
  18. アーカイブと圧縮
  19. バージョン管理システム
  20. ソフトウェアパッケージ
  21. APPENDIX 01 リモートログインとSSH
  22. APPENDIX 02 infoドキュメントを読む
  23. APPENDIX 03 Linuxと日本語入力
  24. APPENDIX 04 参考文献

どんな本か

上の目次からも分かるように、この本はごく普通のLinux入門書です。

逆に、この本では以下のような項目は取り扱っていません。

  • アプリケーション開発
  • サーバー構築
  • ネットワーク設定

これらは、この本では応用的な技術とみなしています。Linuxを使う用途はさまざまで、必要になる応用的な技術はその人によって違います。

でも、何を学ぶにしても前提となる、基本的な技術があります。基本が分からないまま応用を学ぼうとしても効率が上がらず、うまく進みません。

この本のねらいは、Linuxをどんなふうに使うにしても必ず必要になる基本的な技術を理解することです。応用を扱っていない代わりに、基本についてはすべて網羅しています。

具体的には、Linuxで次のようなことができることを目標としています。

僕の学生時代に、学校の先生は「シェルとテキストエディタさえ使えるようになれば、あとは何とかなる」と教えていました。今は少し時代が変わって、「バージョン管理システム」も必要になっています。これらをしっかり理解しておけば、もう怖いものはありません。さらに先の専門的な技術を学習するときでもスムーズに進むでしょう。

LinuxまたはUNIX系OSについて勉強したいという人にちょうどよい本になっているので、ぜひ読んでみてください。この本がLinux(またはUNIX系OS)学習の入り口となることを期待しています。

勉強会の無断欠席はやめよう

勉強会

僕はIT系の勉強会によく参加しているし、主催者として勉強会を開催したこともある。そういう中で、参加者の中に無断欠席する人がいるということが非常に気になっている。ここで言う無断欠席というのは、主催者への連絡なしに欠席すること。

無断欠席は主催者に非常に迷惑をかける行為なので、絶対にやらないでほしい。このあたりどうも主催者と参加者で意識に差があるようなので、主催者の立場でなぜ無断欠席がだめなのか、僕なりの意見を書く。

なぜ無断欠席がだめなのか

まず一番大きな理由が、無断欠席によって本来参加できるはずのキャンセル待ちの人が参加できない、ということだ。ほとんどの勉強会の参加枠には限りがある。定員を超えて申し込んだ場合は、普通キャンセル待ちになって、もしキャンセルが発生したら繰り上がって参加できる。でも、キャンセルの手続きを行っていない場合はこれが発生しないので、キャンセル待ちの人が参加できなくなってしまう。そのせいで、20人の枠に25人が申し込んだのに、当日15人しか参加してない、なんてことになったりする。

主催者はわざわざ開催している以上、一人でも多くの人に参加してほしいと考えている。というか、参加者がいなかったら開催している意味がない。なので、こういうケースは非常に、非常に残念なことなのです。

だいたい、どんな勉強会でも会場選びには苦労しているもので、およそ次のようなポイントを考慮して場所を探してる。

  • 開催日に空きがある
  • 十分な広さがある
  • 予算的に無理がない
  • みんながアクセスしやすい
  • インターネット接続できる環境がある
  • プロジェクタ、スクリーンが備え付けられている

開催する地域にもよるけど、こういう都合のいい会場がそんなに簡単に見つかるわけなくて、ほとんどの主催者は、悩みながら、どこかしら妥協しながら、それでもなんとか探してると思う。

その中でも、会場の定員というのは特に制限が強い。余裕のある部屋が見つかればいいけど、実際には定員を増やそうとすると会場の選択肢は狭くなる。有料の貸し会議室だったら、定員を20人から30人の部屋に変えただけで料金が1万円以上変わることもある。そんな中で、主催者は「15人ぐらい来そうだから、すこし余裕を見て20人入れる会場を探そう」とかいろいろ考えながら、少しでも多くの人が参加できるように工夫してる。

そうやってがんばってるのに、さっきみたいな入れるはずの人が入れないみたいなことが起きるともう悲しくて、やってられない。たぶん、この会場確保の大変さが無断欠席する人に理解されていないんだと思う。

あと、じゃあ定員割れの勉強会だったら無断欠席してもいいのかというと、そんなことはない。

特に懇親会はお店の予約が発生しているので、一人来ないだけでも金銭的な被害が発生してしまう。でもキャンセルの連絡があれば、お店に連絡して人数を減らしたり、代わりに追加の参加者を当日募集したりといった対策がとれる。

懇親会がなくても、部屋によっては備え付けの椅子の数が少なめで、増えそうなら追加で椅子を用意するとかいう場合もある。そういうのは急には用意できないので、主催者としてはなるべく早めに確定した人数を知りたいものだ。

それに、発表者にとっても参加者が何人なのかは重大なことだ。多めの人数だったら中には初心者もいるだろうから序盤は入門的なことを話そうとか、そういう工夫することがある。勉強会の内容を良くするためにも参加人数ははっきり決まっていたほうが良い。

そんなわけで、無断欠席する人は気がついていないだろうけど、勉強会を開催する上で参加人数を確定させるというのは非常に重要なことなのです。

どうしたらよいのか

ただし「絶対にキャンセルをしてはいけない」と言っているわけではないので、注意して欲しい。

たまたま大事な用事が入ったとか、当日急に体調が悪くなったとか、申し込んだのに参加できなくなることは当然ある。それはしょうがない。なので、参加できないと分かった時点で、できるだけ早くキャンセルの処理をしてください。勉強会の申し込みに使っているイベント管理サービスにキャンセルの機能が含まれている場合は、それを使ってください。そういう機能が無い場合は、Twitterやメールなど、何らかの手段で欠席する旨を主催者に伝えてください。

多分実際に無断欠席で多いのは、なんとなく申し込んだけど、忘れたとか興味がなくなったというケースだと思う。IT系勉強会は気軽なものが多いし、ボタンひとつで申し込みできるイベント管理サービスがいっぱいあるし、楽に申し込んでもらうのはいいことだと思う。それでもやっぱり、申し込んだ以上は自分でスケジュール管理して、参加しないときはキャンセルして欲しい。「申し込んだなら参加する」、「参加しないならキャンセルの手続きを行う」、あたりまえのことです。全然難しくないことなので、僕も含めて、みなさん気をつけましょう。

宇宙zsh #2を開催した

zsh uchuzsh

https://scontent.cdninstagram.com/hphotos-xpa1/t51.2885-15/s150x150/e15/11187020_405163169656087_873252848_n.jpg

2015/05/04に「宇宙zsh #2」というzshの勉強会を開催した(告知ページ)。今回は東京で開催ということで、一泊二日のちょっとした旅行も兼ねて開催した(僕は普段神戸に住んでる)。

内容

前半はzshについて基本的な設定から勉強しようということで、最初のインストールとよく使われる設定について解説した。

タイトル 発表者
はじめに @mollifier
今から始めるzsh @mollifier
本格的に始めるzsh @mollifier
zshでコマンドライン履歴を活用する @mollifier

後半はもう少し進んだ使い方について解説した。

タイトル 発表者
vcs_infoを使おう @mollifier
Antigenを使おう @mollifier
pecoを使おう @mollifier
anyframeを使おう @mollifier

あとは、@hoto17296さんと僕とでLTを2つやった。

タイトル 発表者
peco活用術 @hoto17296
oh-my-zshを使うのは止めよう @mollifier

発表の資料はconnpassの資料一覧ページにまとまってる。

レベルとしては、基本的には初心者向けを想定して進めた。初心者の人がこの勉強会をきっかけに使いはじめて、その後もう少し応用的なところも、今はまだ分からないことでも、なんとなく真似しながら、将来必要なときにまた振り返る、というようなつもりで発表した。

参加者の様子

zshを使い始めて1年前後の参加者がわりと多かった。「初心者歓迎」として募集をしていたけど、おおよそ想定通りの人が参加した感じだったように思う。

振り返り

keep

前半の「zshのインストール」と「代表的な使い方」という基本的な解説は続ける。実際には、基本的なところは分かっているので、そこは飛ばして発展的な話題を扱ってほしいという参加者もいる。でも参加者全員が基本を理解してるってことはありえないだろうし、最初に基本を抑えて、前提を揃えた状態で後半に進んだほうがよいと考えてる。

後半の約1時間は自習の時間として、その日学んだことの確認や、zshについての質問にみんなで答えたり議論する時間とした。シェルの使い方というのは自分で使ってみないと分からないものなので、話を聞いたその場で試してもらおうという意図。この時間についてはいまいち参加者からの反応がないので、意味があったのかどうかは正直よくわからない。でも、やっぱり話を聞くだけでなく自分自身で試してほしいので、これは続けたほうがよさそう。むしろ全体の真ん中あたりにも少し自習の時間を入れたり、今より増やしても良さそう。

problem

SlideShareのプレゼン資料からコピペできなくて困ったという意見があった。自分では気が付かなかったけど、言われてみると確かに不便。SlideShareのサイトからPDFをダウンロードすればいいんだけど、それも手間なので、PDFの元になっているMarkdownもあわせて公開するとよさそう。

あと、「初心者歓迎」と謳っていたけど、そもそも初心者って何?っていうのもはっきりしていなかった。初心者と言っても「シェルやCLI操作の初心者」と「zshの初心者」では意味が違う。僕としては後者の初心者を想定していたけど、前者の意味にとっていた参加者もいたかもしれない。前者の意味の初心者向けにしようとすると、ディレクトリとは、とかリダイレクトとは、とかそういうお話になってzsh関係なくなるので、そういう人向け勉強会は(宇宙zshでは)やるつもりはない。このあたりはもっと明示的に告知するべきだった。

try

沖縄とか北海道とか、別の場所で開催したい。

懇親会は今回やってないんだけど、参加者の反応も欲しいし、やってみるのも良いかもしれない。ただ懇親会を開催するとけっこう負担というか気にするところが大きくなるので、簡単にはできそうにない。要検討。

感想

そもそも僕は、自分のzshの話を誰かに聞いてほしいと思っていた。それで、まずはやってみようということで今回も含めて2回勉強会を開催して、とりあえず当初の目的は果たせたと思う。

参加者の側としてはどうかというと、反応から推測するに、この勉強会が役に立った人は(やや少なく見て)全体の5割から6割ぐらいだと思う。満点ではないけど、まあまあ悪くない感じだと思う。

継続的に続けるかどうか含めて、今後どうするかはまだ決めていない。でも、外に出て何かしらの活動をしないと自分の幅が狭くなってしまうので、これからも活動は続けていきたいと思っている。

参加してくれたみなさん、ありがとうございました。次回も(もしあれば)、またよろしくお願いします!

Linux, Mac, Windows 3つのOSの使いどころ比較

新しいMacBookが発表されて、USBポートが1個だけとか、いろいろ話題になってる。僕は買うつもりで、来月の発売を楽しみに待ってる。でもよく考えたら僕は普段Linuxを使っているので、なんでわざわざMacを買おうとしてるんだろう、という疑問が出てきた。なんか「Macの新しいやつ!!」みたいな感じで勢いで買ってしまいそうになってるので、これを機会に、冷静にそれぞれのOSのメリット、デメリットを検討してみることにした。

前提

現在、僕が個人的に使ってるPC一覧は以下の通り。

PCの主な用途としては、Webブラウズ、メール、動画閲覧、ソフトウェア開発、など。ごく一般的な使い方だと思う。

Linux, Mac, Windowsと3つのOSを使ってるんだけど、それぞれの長所、短所、主な役割をまとめてみた。

Linux

ここで言うLinuxとは、正確に言うとLinuxディストリビューションというか、具体的に言うとUbuntuのことを想定してる。

長所

  • 開発環境を整えるのが簡単
  • apt-getが便利
  • GNUツールが便利
  • テキスト処理に強い
  • UNIX哲学に則っている
  • シェルとかターミナルが便利

短所

  • 市販の周辺機器が動かないことがある。動かなかったとしてもメーカーはサポートしてくれない
  • 独占的なアプリケーション(オープンソースでないアプリケーション)が対応していないことが多い(iTunes, ATOK, Microsoft Office, Photoshopなど)

主な役割

Linuxマシンは、僕の場合はメインのPCとして使ってる。zsh, Vim, tmux, Gitが何の問題もなく動いて、テキスト処理とかプログラム開発とか普通にブログ記事を書いたりとかに関しては、3つのOSの中で一番やりやすいと思う。

それでも困ることはいくつかあって、その中でも一番厄介なのがiTunesが使えないこと。僕はiPhoneを使ってるんだけど、LinuxではiTunesが動かないので、iPhoneと同期出来ないし、iTunes Storeで買い物も出来ない。結局ここだけはWindowsを使って凌いでる。

それ以外にもぱらぱらと困ることがあるけど、まあ我慢できる程度。例えばATOKが使えないとか、Flash Playerが開発終了になってる(セキュリティアップデートはまだある)こととか。他にも、僕はHuluを見るんだけど、映画の日本語字幕が文字化けして読めないとか。

でも、日本語入力はまあなんとかなるし、Flash Playerもニコニコ動画ぐらいでしか使わないので、そこまで困ってない。Microsoft OfficeとかPhotoshopとかは元から使ってないので問題ない。Huluは気合でなんとか…。今は大抵Webアプリになっていてブラウザが動けば何とかなるので、特定のアプリが使えないっていうLinuxの弱点はだいぶなくなってきてると思う。

以前はノートマシンにもUbuntuを入れて持ち歩いていたんだけど、勉強会で発表しようと思ってプロジェクタに繋いでも映らないという事件が2回ぐらいあって、それで発表用のマシンにLinuxを使うのはやめた。事前にプロジェクタの種類が分かっていれば準備もできるんだけど、そんなことは普通ない。わざわざ発表の準備して行ったのにそんなことでだめでした、ってことになったらめちゃくちゃ悲しい。僕にとってノートマシンは発表するためにあるもので、発表できないと意味がないので、ノートマシンにはLinuxは使わなくなった。

Mac

Macは、MacBook Airで持ち運び用のマシンとして使ってる。

長所

  • iTunesが動く
  • 初期状態でフォントがきれい
  • iOSアプリの開発ができる
  • Unix系の便利なツールが(だいたい)使える
  • 独占的なアプリケーションでも、たいていMac版がある
  • 市販の周辺機器がたいてい動く

短所

  • パッケージマネージャーとしてHomebrewがあるけど、なんか中途半端。apt-getほど簡単じゃない
  • 開発環境を揃えるには最初にXcodeをインストールする必要があったり、微妙に面倒
  • 標準でGNUツールが入っていない。BSD由来のツールは使いにくい(sedとか)
  • OS自体を自由にインストールできない。Apple製のハードウェア上でしか使ってはいけない制限がある

主な役割

MacLinuxWindowsの間みたいな位置づけで、よく言えばいいとこ取り、悪く言えば中途半端なポジション。zsh, Vim, tmuxとかUnix系の便利なツールが使えて、ターミナルで快適に開発できる。その一方でiTunesとかATOKとか独占的なアプリでもMac版がある。なので、Macだけでほぼすべてのことができるのが強み。僕も3つのOSの中でひとつだけしか使えないってことになったら、Macを使う。

あとは、何も設定しなくても見た目がきれいっていうのもうれしいポイント。フォントは明らかにきれい。Linuxでも個別にインストールして設定すればきれいなフォントを使えるんだけど、そういう手間が必要ないっていうのは簡単で良い。

でも、開発環境としては、なんかこうしっくりこない感じがする。だいたいHomebrewでインストールするんだけど、なんか遅いし、たまにbrew linkとか手作業がいるし、OSのバージョンを上げたらHomebrewが壊れた、とかトラブルもあるし、いまいち安心して使えない。Rubyをインストールするときでも、なんか事前にopensslを入れろとか、readlineを入れろとか、gemでnokogiriをインストールするときも、その前に別途libxmlを入れておけとか、パッケージマネージャーのくせに完全にお任せできない。そもそも最初にXcodeを入れる必要があるのが面倒(なんかライセンスに同意するボタンを押したりしないといけないし)。

あと、BSD由来のツールが微妙に使いにくい。Linuxの(というかGNUの)ツールは、一部過剰なところはあるけど、やっぱり便利。それに比べるとMacに入っているツールは使いにくい。sedとかなんかおかしい。

なので、開発環境としてはベストでないと思ってる。僕にとっては、軽くて確実にプロジェクタに接続できる持ち運び用マシンという位置づけ。

Windows

Windowsはデスクトップマシンで、補助的に使ってる。

長所

  • Windows用のゲームで遊べる
  • iTunesが動く
  • たいていの市販の周辺機器が動く
  • 独占的なアプリケーションはたいていWindows版がある

短所

  • 開発環境を整えるのが難しい
  • シェルとかターミナルが貧弱
  • フォントが汚い
  • Linux由来の便利なツールが使えない、または対応が後回しにされることがある
  • パッケージマネージャーが無い。そのためアプリケーションのインストール、バージョンアップが面倒
  • テキスト処理に弱い
  • 何かと再起動を求められてめんどう

Windows

Windowsは、一言で言うと便利じゃないOS。開発環境を整えるのが難しいというか、面倒というか、まったくやる気にならない。

シェルもターミナルもしょぼいし、フォントが汚いのもつらい。Windowsでもフォントをインストールして使えるような気もするけど、僕はその方法を知らない。RubyとかGitとか、そいういうやつは明らかにWindowsを軽視していて、Windowsで使おうというのは茨の道。

それでもなんで使っているかというと、iTunesiPhoneを管理するため。MacでもiTunes使えるけど、WindowsだったらOSだけ買ってきてLinuxデュアルブートにできるので、費用が安くて済む。あとは、Windowsはゲームをするのにも向いてる。そういうわけでWindowsも使ってる。

まとめ

というわけで、3つのOSの特徴と使いどころを見直してみた。どのOSにも向き不向きがあって、ひとつには絞れない感じだと思う。

それで、結局僕にとって新しいMacBookがいるかというと、正直微妙なところ。勉強会のときぐらいしか使わないし、その割には高すぎる気がする。MacBook Airの一番安いやつのほうがよさそう。でも、ちっちゃくて軽いのを使ってみたいし、新しいやつはなんかよさそうなので、やっぱり買うことにします!