Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
What to Upload to SlideShare
What to Upload to SlideShare
Loading in …3
×
1 of 36

第34回シェル芸勉強会

0

Share

Download to read offline

シェル芸の活動の意図を珍しく話しました。

2018年3月17日。GMOデジロック株式会社さんにご協力いただき、GMOインターネットグループ 大阪オフィス内のGMO Yours大阪で開催いたしました。

Related Books

Free with a 30 day trial from Scribd

See all

第34回シェル芸勉強会

  1. 1. jus & USP友の会共催 シェル勉強会@関西 (第34回いつも難しい問題ばっかり出す上田が 真面目に考えた初心者用シェル芸勉強会) 千葉工業大学 上田隆一 この 作品 は クリエイティブ・コモンズ 表示 - 継承 3.0 非移植 ライセンスの下に提供されています。
  2. 2. contents • 1: シェル芸とは • 珍しく普通のプレゼン • 2: 練習 • AWK、sed • 3: シェル芸勉強会 • 本編 2018/3/17 第35回シェル芸勉強会 2
  3. 3. 1: シェル芸とは 2018/3/17 第35回シェル芸勉強会 3
  4. 4. ファイル • こういうやつ • これは何? • 正しく説明できますか? • 私も自信なし 2018/3/17 第35回シェル芸勉強会 4
  5. 5. ファイルの歴史(Wikipediaから教えてもらったもので恐縮ですが・・・) • 「ファイル」という言葉が使われ始めたのは1952年 • 当初はパンチカードに格納された情報を指した • 初期のころは装置自体をファイルと呼ぶことが多かった • ファイルシステム機能がOSに搭載され、1つの補助記憶装置上 に複数の「ファイル」が存在するという形態が登場(1962年) • 一度に取り扱うデータを外部の記憶媒体にアウトプットした集 まりがファイル 2018/3/17 第35回シェル芸勉強会 5 Wikipedia, ファイル (コンピュータ)のページより (CC-BY-SA 3.0)
  6. 6. ファイルの歴史(その後。さらにWikipediaから) • ・・・しかし、オブジェクト指向の考え方を導入し使用者を中心に おいたアップルのMacintoshにおいて、ファイルの取扱いにリソー スの概念が取り入れられた • ファイル内にデータとともにリソースを保管したことで、ファイル 作成後は、そのファイルを選択すれば(たとえばGUI画面上でファイ ルを選択するためダブルクリックすれば)、オペレーティングシス テムによって最適なアプリケーションが選択される(起動される) ようになった 2018/3/17 第35回シェル芸勉強会 6 Wikipedia, ファイル (コンピュータ)のページより (CC-BY-SA 3.0)
  7. 7. ファイルの歴史(さらにその後。さらにさらにWikipediaから) • 一般的なパソコン利用者には、どんなアプリケーションで作っ たかを事前に思い出すことなく、作成済みのファイルの名前さ え識別して選択すれば、適切なソフトウェアが起動されるよう になり、これにより使い勝手が向上した • 後、Windowsにおいてこのリソースの概念は使用者には「拡張 子によるアプリケーションの関連づけ」として提示されるもの として知られる • めでたしめでたし 2018/3/17 第35回シェル芸勉強会 7 Wikipedia, ファイル (コンピュータ)のページより (CC-BY-SA 3.0)
  8. 8. その結果(ざっくり) • よかったこと • 便利になった • それを否定する人はいないはず • コンピュータがよく分からない人でも仕事ができるようになった • これも良いこと • 私も「よく分からない人」だった(始めて触ったのは大学生のとき) • よかったとは言えないこと • 不用意にファイルをクリックして事故 • ウイルスなど • コンピュータがよく分からない人の声が大きくなった 2018/3/17 第35回シェル芸勉強会 8 注意: 中身は「aho」 というテキスト
  9. 9. ファイルに対するマジョリティーの「理解」 • あるファイルは専用のアプリケーションでしか開けないのが普通 • 別にそれは良いが・・・ • オフィススイートを売りさばく会社の儲けの構造の一部 • エクセル方眼紙の遠因 (ドキュメントはWordやExcelでしか作れないという認識) • マジョリティーの「理解」はプロを誘惑 • 後で困るような便利機能を無批判に提供 • どうせ理解できないからと決めつけてテキトーなアドバイス、商売 2018/3/17 第35回シェル芸勉強会 9
  10. 10. テキトーな仕事の例 • 某メモ帳 • テキストの最初に「.LOG」と入れると日付が自動挿入 • 普通の人にとっては「便利だからいいじゃん」 • 仕事でシステムを作っていると大変気を使う • 他の勝手にファイル書き換え問題の事例 • 某メディアプレーヤーがMP3を • 某表計算ソフトがcsvファイルを • いちいち検証はできないけど、データファイルが自分たちのソフト ウェアでしか開けられないことを想定しているような態度 2018/3/17 第35回シェル芸勉強会 10
  11. 11. ユーザはどうあるべき? • 便利なものは使った方が良い • 自動車が自動運転できるなら使うに越したことはない • しかし、コンピュータは「情報の処理」という、 仕事や生活上で極めて重要なスキルと関係している。 • ユーザも成長することで効率の良い働き方、社会が実現 • 今の状況でユーザが成長できるか • どっちかというとアヘン窟への誘惑が多い 2018/3/17 第35回シェル芸勉強会 11
  12. 12. テキストファイル • 特定の文字コードに基づき、字だけを表すバイナリだけで構成 • 何か他の情報をつけたければそれもテキストで記述 • 実は「マジョリティーの理解」に抗う存在 • 閲覧、編集、変換可能なソフトウェアが多い • 慣れないと不便で少し考えなければならないけど、主体的になる • そんなに理解は難しくないはずなんだけど・・・ • 「字をコンピュータに記録するときの普通の方法です」で説明が済むはず • 実際は、テキストをメールに添付すると 「何で開いていいか分からない」と言われる(普通という認識はない) 2018/3/17 第35回シェル芸勉強会 12
  13. 13. テキストへの回帰 • 計算機の計算能力、記憶容量の向上 • 例: • Microsoft Officeのファイルフォーマット • バイナリ → zip圧縮されたテキスト(XML)ファイル • ウェブアプリケーション • HTML、CSS、JavaScriptなどで構築。データはJSONなど。SVGなど画像もテキストで 扱われることが • ROS(robot operating system) • ロボット用分散ミドルウェア。主にテキストでセンサデータなどをやりとり • (スマートフォンのアプリなど逆の例も) 2018/3/17 第35回シェル芸勉強会 13
  14. 14. コマンドとテキスト • コマンドのほとんどは汎用的なもの • 読み込むデータのフォーマットはテキスト一択 • コマンドや(CLI上の)エディタのスキルは汎用的 • コード、文書、システムの設定ファイルの閲覧、編集 • 扱うファイルの種類 = スキルの数 • コマンドを使える人と使えない人の意識の違い • 使える人: GUIも使える。自分が思っているより効率よく仕事をしている。 • 使えない人: 「何でわざわざ不便なことをしているのか?」と思う 2018/3/17 第35回シェル芸勉強会 14 どうやって使えない人に興味を持ってもらうか
  15. 15. 「シェル芸」の活動 • コマンドに親しむ = テキストに親しむ • まずはできる人に楽しんでもらえるように • できる人が楽しんでいると、その周りに人が集まって、できる人が増える。 さらにその周りに・・・と、マジョリティーまで降りていくことが目標 • 各自の秘技だったものが自然に表に出る流れを作る • シェル芸という名前、問題作り、雰囲気作り • 禁忌: 教義化、競技化、折伏、論争、攻撃、...(劣情に訴えない) 2018/3/17 第35回シェル芸勉強会 15
  16. 16. 界隈の人々の シェル芸活動 • 勉強会 • 初期はUSP友の会の幹事中心、 現在はその枠を超えて有志で • 今回が第34回(2012年10月〜) • 他流試合を企画いただく • #バイオシェル芸 • ウェブ上でのゲリラ活動 • いろんな人が愉快にやらかす • シェル芸bot爆誕 • 派生: 難読化シェル芸、危険シェル芸、 バイオシェル芸、Vimシェル芸 2018/3/17 第35回シェル芸勉強会 16
  17. 17. まとめ • シェル芸 • 楽しければ良い。便利ならなおさら良い。 • 活動としてのシェル芸 • 社会的には全く知られていない • シェル芸が認知される必要はなく、ものの考えが浸透していくことが目標 • データとアプリケーションの分離 • 正義感を振り回してはいけないが、 非効率な方法、麻薬的な方法には毅然と茶化す • とりあえず本職がソフトウェア関係でない人を少しずつ・・・ 2018/3/17 第35回シェル芸勉強会 17
  18. 18. 2: 練習 2018/3/17 第35回シェル芸勉強会 18
  19. 19. コマンド • ここで言っているのは主に「フィルタコマンド」 • フィルタコマンド • 標準入力からテキストを読んで加工し、標準出力から出す • 標準出力から出すだけのコマンドもあるが、基本的に仲間 2018/3/17 第35回シェル芸勉強会 19
  20. 20. フィルタコマンド(と、そのお友達コマンド) • 基本的に何をするものか分かりにくい 2018/3/17 第35回シェル芸勉強会 20 1から6まで出して何になる? エディタで見たら良いじゃないか
  21. 21. 組み合わせると少し便利に 2018/3/17 第35回シェル芸勉強会 21 IPアドレスのリストを作る 1〜6から1つ数字をサンプリング
  22. 22. もっと組み合わせるともっと便利に • Twitterの特定のアカウントがツイートするか監視 • 自分のサイトから特定の学会での論文リストを持ってくる 2018/3/17 第35回シェル芸勉強会 22
  23. 23. どういうことか? • コマンドは自己完結しない • 組み合わせて使う • プログラミング言語におけるライブラリの関数のような位置付け • 汎用的、単機能でないと使い回しができない • シェルスクリプトでもワンライナーでも • テキストを流れ作業で変換 • 組み合わせにある種のセンスが必要かもしれない • 普通のプログラミングとは少し違う • 関数型と言えるかもしれない 2018/3/17 第35回シェル芸勉強会 23
  24. 24. 誰でもできるの? • 正直よく分からない • 上達していくには: 端末を使う • テキストで文章を書いてみる • MacならばなるべくFinderを使わない • コマンドを調べて使ってみて調べて使ってみて・・・ • 通常の学習のプロセスが身についているなら大丈夫 2018/3/17 第35回シェル芸勉強会 24
  25. 25. 組み合わせが思いつかない!という人は • ワンライナー中、あるいはほどんとAWK、sed、Perlで済ます • 「シェル芸身につけたい!」という場合はAWKから入るのが良いかも • コマンドは「AWKが面倒な場合に使う」くらいに考える • 例: seq 10の出力を2行ずつ足す 2018/3/17 第35回シェル芸勉強会 25 面倒 楽
  26. 26. AWK(GNU Awk) • プログラミング言語だがワンライナー中でよく使う • 書いたコードは毎行に適用 • 各行に同じ処理を適用したいときに便利 • PerlやRubyではオプションが必要で地味に面倒 • 最初に覚えること • パターン: 検索に使う(grepのような使い方) • アクション: パターンにマッチした行に行う処理を書く 2018/3/17 第35回シェル芸勉強会 26 $ awk ‘パターン{アクション}パターン{アクション}...’
  27. 27. パターンの練習 • 「http」という語句を検索 • 1列目が「http」 2018/3/17 第35回シェル芸勉強会 27
  28. 28. パターンの練習(続き) • 7以上の行だけ抽出 • 偶数の行だけ抽出 • 先頭の3行だけ抽出 2018/3/17 第35回シェル芸勉強会 28
  29. 29. アクションの練習 • 各行の数字を倍に • 1列目だけ抽出 2018/3/17 第35回シェル芸勉強会 29
  30. 30. パターン+アクション • 偶数の行だけを抽出し2倍に • /etc/servicesのコメント以外の行の1列目を10行だけ出力 2018/3/17 第35回シェル芸勉強会 30
  31. 31. sed(GNU sed) • 主に文字列の置換に利用 • sed ’s/置換前の文字列/置換後の文字列/g’ • 後ろの「g」がないと1行あたり1回だけ置換 2018/3/17 第35回シェル芸勉強会 31
  32. 32. sed + 正規表現 • 少しずつ覚えましょう • 小文字とスペースを検索して消去 • あらゆる斉藤さんを斉藤さんに一本化 2018/3/17 第35回シェル芸勉強会 32
  33. 33. 後方参照 • 正規表現で引っ掛けた文字列を再利用 • 1、2: (正規表現) で引っ掛けた文字列が順に入る(はバックスラッシュ) • &: 引っ掛けた文字列全体が入る • -rをつけると(拡張正規表現が使え、)が不要に 2018/3/17 第35回シェル芸勉強会 33
  34. 34. 3: シェル芸勉強会 2018/3/17 第35回シェル芸勉強会 34
  35. 35. 今回の問題 • 簡単な問題 • ・・・と言っても誰でもすぐに分かるわけではありません • 進め方 • 1問15分くらい • 初心者 • こちらでヒントを出します • 紛れ込んだ玄人 • 別解をたくさんツイートのこと 2018/3/17 第35回シェル芸勉強会 35
  36. 36. ということで開始 2018/3/17 第35回シェル芸勉強会 36

×