パスワードを忘れた? アカウント作成
6501070 story
プログラミング

システム管理者がプログラミングについて知っておくべき理由 104

ストーリー by hylom
プログラミングできない管理者なんて都市伝説だと思ってました 部門より
eggy 曰く、

米InfoWorldにて、Why admins shoukd know how to codeなる記事が掲載されている。記事では「プログラマになる必要はないが、コードを書くことができればより難しい問題をより高速に解決できる」とし、システム管理者に対しプログラミングのスキルを持つことの重要性を示している(本家/.InfoWorld記事)。

システム管理者は開発者ではないため、一日中コードを書いているというわけではないが、何か問題が起きた時に解決するためのツールを開発する必要が出てくる。そのため、使用されているプラットフォームをサポートするスクリプト言語にある程度精通している必要があるとのこと。また理想としては、複数の言語に精通していることが望ましいとしている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • スクリプト…… (スコア:5, おもしろおかしい)

    by Sukoya (33993) on 2012年10月24日 8時44分 (#2257670) 日記

    スクリプトなんて書けて当たり前。
    本当に必要なのは作ったスクリプトを正しく管理する能力だと改めて思い知らされたばかりのはずでありますが……

  • そんなものが存在するのか。
  • by wakatonoo2 (30019) on 2012年10月24日 9時28分 (#2257707) 日記

    ファーストサーバー:担当者のマニュアル無視を容認、独自プログラムで更新 削除コマンド消し忘れ [itmedia.co.jp]

    >報告書によると、同社のシステムメンテナンスは通常、社内マニュアルに沿って行われるが、不具合を起こした担当者だけは約10年前からマニュアルを無視し、自ら作成した更新プログラムを利用するなど独自方式でメンテナンスを行ない、上長もそれを容認していたという。

    >何か問題が起きた時に解決するためのツールを開発する必要

    地雷原というか、ソフトウェアの機能安全規格(ISO 26262、IEC 61508、IEC 62304など)からは
    真っ向から反目する流れですね。

    • by T.SKG (20663) on 2012年10月24日 10時04分 (#2257745) 日記

      最低限のプログラム能力もなければ、独自プログラムを書くことも出来ないから、
      安全だというものでも無いでしょう。

      プログラム能力の有無に関わらず、担当者や管理者は大抵、失敗や大失敗の経験がある。

      それでも惨事を広げないために、色々対策がなされていて、また失敗を繰り返さない
      ためにマニュアルやルールが作られている。

      件の事件は、マニュアル無視、上司の容認、システム設計不備、組織の下から上まで
      内在していた問題が連鎖して大惨事になったのです。

      担当者レベルのプログラミング能力の有無に話を持って行くと、問題の本質を見失うと
      思われます。

      親コメント
      • by wakatonoo2 (30019) on 2012年10月24日 12時40分 (#2257834) 日記

        ソフトウェアの安全規格というのは、プログラミング能力というより、
        バグを作りこまないためのプロセス管理規格のように感じます。

        タレコミ文からプロセスを無視するような独自方法を
        編み出せという意図が感じられたのでそのように書きました。

        天才的な能力に裏打ちされたのは、うまく行っている間は良いのですが、
        問題が起きたときに、重大な結果を招きやすいように感じています。
        バグの無いソフトウェアを天才が作り上げる時代は終わり、
        凡人がプロセス管理された状態で、一定以上のバグを作りこまないように
        進めるというのが、現在の主流に思います。

        親コメント
        • by T.SKG (20663) on 2012年10月24日 14時25分 (#2257955) 日記

          元記事の筆者も、IT忍者という言葉を使っているように、
          非正規軍的な活動が念頭にあるのでしょうね。

          こういう気分のまま、機能安全規格を必要とするような
          ソフトウェアを開発するのは、危険だと思います。

          しかし管理される対象も、安定運用が絶対のシステムから、
          日々改造されることが競争力の源泉になっているシステムとか、
          壊れても被害を許容できる代わりに費用も掛けたくないという
          システムもある訳です。

          またシステムの安全を確保するために、人的なコストを掛け
          るか、ハードにコストを掛けるかというバランスもあります。

          この程度の危険思想あるいは退嬰的思想の管理者がいても
          システムに依っては良いと思われます。
          (私も、元記事の筆者も恐らくは、その程度のシステムの方が
           まだまだ大多数だと想像しています)

          >真っ向から反目する流れですね。

          そもそも存在する奔放な流れを制する為の規格ですからね。
          放置すればすぐ染み込んで来る危険な流れをいかに断つか
          ということも「規格」の値打ちかと考えられます。

          親コメント
  • by Anonymous Coward on 2012年10月24日 8時21分 (#2257653)

    若いシステム管理者がサーバメンテナンスのスクリプトを書いていたので
    肩越しに覗いてみましたよ。

    テキストエディタ(Windowsの)の機能をフルに活用し、大量のコマンドを
    コピペコピペ、置換置換…というように並べて作ってましたね。

    萎えた。

    そこは、あーしてこーして、awkをちょちょいと振りかければ10行で書けるだろ?
    その方が作るのも早いし簡単。

    せめてエディタはviでやったほうが、編集も早いよ。
    マウスでドラッグして選択とかやってられんだろ。

    というわけで、プログラムとまでは行かないにしろ、スクリプト言語くらいは
    システム管理者は使えた方がいいと思う。

    シェルスクリプトを書けるか書けないかで、仕事の効率は10倍くらい違うことも。
    ていか、シェルスクリプトも書けないのにシステム管理者をさせてるのが悪い。

    Windowsサーバの管理者も、Power Shellとか使えたほうがいいんじゃないかな。

    • システム管理者ってわけじゃないけど、あるシステムのクラウドへの移行作業で、同僚が手作業に固執して困ったことが。
      手作業でも可能な作業時間・費用をもらってたけど、スクリプトでやった方が短時間ですむだろうし、ミスも少ないだろうに。
      自分の仕事を盗られる様で嫌だったのかなあ。
      彼はプログラミングは得意じゃないみたいだし。

      もっとも、最終的には私がスクリプトを組んで作業しましたけどね。

      ところで、

      Windowsサーバの管理者も、Power Shellとか使えたほうがいい

      PowerShellな。「Power」と「Shell」の間は空白無し。

      親コメント
      • by Anonymous Coward on 2012年10月24日 11時44分 (#2257808)

        手作業に固執する人って少なからずいますね。普段そのシステムを管理していて、イレギュラーな調査を頻繁に行っている人に多い印象です。手作業に固執されてしまう状況に遭った時にはその人に理由を訊くようにしていますが、こんな理由が出てきたのを覚えています。

        ・慣れないスクリプトによる自動化作業より慣れた手作業の方が信頼できる
        何か想定外の事態があった時に違和感を感じやすいのは慣れた作業の方だとの話。

        ・手作業だと各作業を目検できるので想定外の事態を把握しやすい
        これはスクリプトでやってもポイント決めて検証すれば同様かと思いました。

        ・「スクリプトを使用する」という要因によってトラブルが発生する可能性を増やしたくない
        スクリプトの信頼性より人間の信頼性の方を高く評価している場合ですね。
        # 私は自分が一番信頼できませんが。。

        親コメント
        • by Anonymous Coward on 2012年10月24日 14時19分 (#2257946)

          システム管理者じゃないですが、多数(数百人)の人が入力した情報を集計するような作業をしたことがあります。
          締め切り日に向かって順次入力されていく情報のアップデートを知りたかったこともあり、手作業はもとより頭になく、
          スクリプトを使った作業を行いました。その基本路線は正しかったと思っています。

          ただ、中には書き方に関する指示を無視したり(例えば名前とふりがなを逆に入力するとか)する人がいて、
          そういうのはスクリプトに例外処理を作り込むことで対応しましたが、そのチェックの手間が膨大なものでした。
          (1)正しく処理できているかどうかをチェック
          (2)正しく処理できていない項目を見つけたときには、例外処理を追加
          (3)例外処理が変な副作用を起こしていないかチェック
          を繰り返し行いました。
          世の中には、こちらには想像もつかないような、きわめていろんな変な入力の仕方をする人がいるものだと
          思いました。

          1回限りなら手作業の方が早かったかもしれません。でも何百件もあると、手作業だと、総数を数えるだけでも
          数えるたびに異なる結果になったり。

          親コメント
    • by Anonymous Coward on 2012年10月24日 9時32分 (#2257708)

      今時の若造はawkなんて知ってるはずありませんよ
      勧めるならRubyぐらいにしとかないと年寄り扱いされます
      #ターミナルやキーボードの仕様の相違をアプリケーション側で吸収しなければならなかった時代じゃないんだからviはもう卒業してくれ

      親コメント
      • by Ryo.F (3896) on 2012年10月24日 10時18分 (#2257756) 日記

        個人的にはRubyを勧めたい気持ちはよく解るんだけど、そうできない事情もあるんだよ。
        と言うのは、UNIX系で、Rubyがインストールされていない環境があるから。そう言う環境でも、awkが入っていないことはまず無い。
        インストールされてなきゃ、入れればいいじゃないか、ってのも甘い。ポリシ・規約でインストールできない場合があるから。
        自宅サーバじゃなくて、仕事だからね。

        親コメント
      • by Anonymous Coward on 2012年10月24日 10時14分 (#2257753)

        viかどうかはともかく、マウスはだめでしょう。キーボードからマウスに手を持って行く、その移動距離が無駄。

        「ターミナルやキーボードの仕様の相違をアプリケーション側で吸収しなければならなかった時代」よりも
        ずっと現代は進んでいるはずなのに、マウスなんていう、キーボードから離れたところに置かないといけない
        デバイスがいまだにのさばっています。

        マウスだけでほとんど用件が済んでしまうような、ウェブ閲覧だけのエンドユーザーならともかく、
        システム管理者がそれじゃあ話になりません。

        トラックポイントやタッチパッド(親指で操作)なら、まだいいけど。

        親コメント
    • by Anonymous Coward

      プログラミングに肝心なのは、格好良く書くことではない。
      解りやすく、確実に動作することである。
      その意味からすれば、可能ならば書き並べてループや複雑な手続きを使わない方が
      優れたプログラミンなのである。
      まあ、私は昔8ビットのアセンブラーでグラフィックの描画を作っていたけど
      100命令程度ならループのオーバーヘッドを避けるため書き並べていたのでそう思うのかもしれないが。

      • by miyuri (33181) on 2012年10月24日 8時57分 (#2257681) 日記

        システム管理者のプログラミング云々にアセンブラを出してくるのは変だし、アンロールした方が解りにくいよね:b

        親コメント
      • by Anonymous Coward on 2012年10月24日 9時10分 (#2257690)

        プログラマーとしてはプロでも、システム管理者としてはド素人とお見受けする。

        >プログラミングに肝心なのは、格好良く書くことではない。
        >解りやすく、確実に動作することである。

        格好良く書けと主張した覚えはないけど?
        でも、ソースコードを格好よく書くというのは、解りやすく確実に動作するにはとても重要で肝心なところ(二重に強調させてもらうが)。
        ちゃんと動いているように見えるからと言って、ぐちゃぐちゃなソースコードは、ちゃんと動くかすらわからない。

        となると、それを知らないあなたはプログラマーとしても素人なのかもしれないな。

        >その意味からすれば、可能ならば書き並べてループや複雑な手続きを使わない方が
        >優れたプログラミンなのである。

        例えばだ、5000ユーザの設定をまとめて変更する必要があったとしよう。
        1人のユーザの設定変更のコマンドを何行か書き、それを4999回コピーし、ユーザ固有の部分を目視しながらマウス操作でコピーして編集していく。

        単純だけど、これは質の悪いプログラムだ。
        ちゃんと動くとは思えない。
        5000人分のコマンドを手作業でなおしていくと、絶対にミスをする。
        これはとても優れているとは言えない。
        時間もかなり大きくなる。

        それよりも、じっくりしっかりきれいに10行で書いたスクリプトを書き、それを使ったほうが圧倒的に速いし確実だし優れている。

        大昔のシステム開発では何行のコードがいくらという価値を持ったのかもしれないが、システム管理者が書くスクリプト、プログラムは自分たちで使うもの。
        自分たちが楽をし、ミスをしないために作るもの。
        行数が多ければ優れているというわけではない。
        楽にならなければ意味がない。

        百歩譲って、コマンドを書き並べられたスクリプトが優れているとするなら、そのコマンドを書き並べるスクリプトを書くというのがシステム管理者の正しい姿なんだよね。
        コマンドをひたすら書き並べるだけなら、スクリプトにせずにそのまま実行するでしょう?

        >まあ、私は昔8ビットのアセンブラーでグラフィックの描画を作っていたけど
        >100命令程度ならループのオーバーヘッドを避けるため書き並べていたのでそう思うのかもしれないが。

        そうですね、システム管理者のプログラムとしてはド素人の考えですね、それは。

        親コメント
      • by Anonymous Coward

        100命令並べたのが1万個あったとして、それがいつも間違いなく動くことを保証してくれるならよいよ。

        問題はその業務を何年か繰り返したときにミスが起こらないことであって
        単一の業務を確実にこなすことは必ずしも最重要課題にはならない。

        ロケットの打ち上げのような一発芸なら君のスタイルも悪くない。

  • by Anonymous Coward on 2012年10月24日 8時23分 (#2257655)

    「そりゃそうだ」としか言いようがない意見だけど、贅沢を言えばきりが無いよね。
    それだけの能力を求めるなら、それなりの待遇を与えよ、ってことでもあるね。

    ところで、WindowsだとPowerShellが必須 [blogspot.jp]になりつつあるね。

  • by Anonymous Coward on 2012年10月24日 8時32分 (#2257662)

    大規模システムだと、運用管理ソフトウェアで監視するユーザーは、異常発生時にマニュアルに剃って操作をするため、システム管理者権限が必要になるし、マニュアル外の複雑な対処はシステムエンジニアの仕事だと思う。後者の実行部隊は…下忍レベル…はスクリプトのスキルが必要だろう。でも、対外部署の調整をするシステムエンジニアの上忍レベルの人間には不要かもしれない。

    一方で、中小規模だと複数の仕事を兼任することになる。つまり、広義にシステム管理者と言っても色んな仕事や役割がある。まずは、システム管理者の役割と仕事などの細分化が必要なのかもしれない。

  • by Anonymous Coward on 2012年10月24日 9時02分 (#2257686)

    Cみたいなのからシェルスクリプトなんかまで、どれも共通の構造のようなものがあるから、それは理解しておく必要があると思うな。
    制御構造だったり、変数とか、色々。

    あとは、他のコメントにもあるけど、テキストの編集くらいは。

typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...