まめ畑

ゆるゆると書いていきます

セキュリティ&プログラミングキャンプキャラバンに行ってきた【前半】

という事で、今回も簡単にまとめたいと思います。
毎度の事ですが、抜けがあるかもしれないのでご注意を。
404 Not Found
長丁場だったので、前半と後半2回に分けてエントリを書きます。
後半はセキュリティ&プログラミングキャンプキャラバンに行ってきた - まめ畑

プログラミング基礎(吉岡 弘隆さん)

ソースコードを読むための方針という話を始めて聞いたので大変参考になった。
コードを読むためには複数の視点を持つ事が大切であり、多角的にコードと向き合う事必要があると感じた。

  • プログラミングが好きな人と出会うこと、そのような人を増やすこと
  • アルゴリズムとは
    • 問題を解くための手順を定式化して表現したもの
    • コンピュータにアルゴリズムを指示するための命令がプログラム
  • なぜアルゴリズムを学ぶのか
    • 優れた先人の知恵がある
    • 優れたアルゴリズムとは何かを学ぶ
    • アルゴリズムとデータ構造を全く新たに考案しなければならない事はめったにない
    • 基本的なアルゴリズムの組み合わせで多くの問題は解ける
    • 何が既に解明されているか調べないと、車輪の再開発になってしまう
    • 自己流アルゴリズムは、開発に時間がかかったり、実行時間も遅くて拡張性も低い・・・
  • なんで読むの?
    • 仕事・趣味・不順な動機色々あるよね
    • コードは読むな、理解しろ
  • ソースコードを読む視点
    • 静的理解(字面での理解)
    • 動的理解(動作による理解)
    • 動的構造(規模・ディレクトリ構造・命名規則)
    • 動的構造(呼び出し経路・往路ファイリング・実行結果)
    • 微視的(細部からの理解)
    • 巨視的(全体からの理解)
  • 規模の把握
    • 規模を知らないと作戦を立てられない
    • 大規模になるほど、システマティックな方法論がいる
  • トップディレクトリは、ソフトウェアの論理的構造を表している
  • ソースツリーの把握は重要
  • 変更履歴を読むとソフトの成長の歴史がわかる
  • 情報収集
    • ML
    • 開発者に直接聞く
    • Bug DB
    • Googleに聞く
  • インターネットが変えた社会〜OSSについて〜
    • インターネットが全てを変えた
    • 大規模ソフトウェアを作る場合も、同じ場所に集まる必要が無くなった
    • 商品としてのソフトウェアはコードだけでなく、マニュアルやサポート・教育も含まれる
  • フリーソフトウェア
    • ソフトウェアは自由に利用出来るべきだと考える人がいる(80年代から積極的に活動している)
  • OSS
    • 90年台になってインターネットが普及した
    • 公開して自由に利用・改良・配布できるようにしたもの
    • フリーソフトという言葉を嫌った
    • 楽しいと作ったソフトウェアがどんどん普及していく
    • インターネットを動かしているソフトウェアの殆どがOSS
    • 誰もコントロール出来ない
    • 混沌の世界から開発される
    • 誰かに命令されているわけではない
    • 金銭的な報酬は無い
  • コミュニティによる開発
    • 見たこともあったことも無い人達が協力している
    • 技術はみんなのもの
    • 技術は会社に独占されるべきではなく、みんなの物でありそれが社会を豊かにする
    • OSSはみんなのものにしたら進化・進歩した例
    • ソフトウェアによって世界を良い方向へ変えていける
    • 誰でも参加出来る
    • 参加資格は、情熱、ちょっとした勇気と行動力
  • 勉強会へ行こう!
    • 楽しい
    • 専門家と知り合いになれる かも
  • 勉強会への参加の仕方
    1. IT勉強会カレンダーで興味のあるものを探す
    2. 行く(名刺を持っていくといいよ)
    3. 感想をBlogに書く
    • 人と出会うことの重要性
  • U20プログラミング・コンテスト
  • まとめ
    • ソフトウェアを作るのは楽しい
    • 世界中の人と協力して作るのはもっと楽しい
    • 世界規模の開発コミュニティがある

プログラミング応用(Webプログラミングの未来について)(竹迫 良範さん)

まずはこれが流れた。始めてみた。
D



NAMAZUソースコードは型紙!?
ドキュメントもビルドの方法もあるよ
オープンソースToysプロジェクト

  • Webプログラミングの未来について
    • Javascriptについてのお話
    • 地方とITについて
  • クライアント側でJSを必須とするWebアプリが増えてきた
  • RJSテンプレート(RubyでJSを自動生成するもの)
  • コンピュータの高速化でLLでも高速に動作するようになった
  • JSエンジン色々あるよね
  • V8の登場などで高速化競争激化
  • 量質転化の法則
    • 量が質に転化する時
    • 量を積み重なることで質的な変化が起こること
  • 言語処理系 → Javascript
    • logo.js
    • JsRuby
    • HotRuby
  • PHPJavascript
    • JSmarty
    • JSで動くテンプレートエンジン
    • Smartyクローン
    • 利用出来るメソッドやプロパティは殆どそのまま
  • サーバサイドでjsを共有
    • クライアントとサーバサイドで共有化
  • OPEN JSAN
    • JSのライブラリ集(CPANみたいなやつ)
    • 盛り上げていこう!
    • JSAN - Home
  • 地方におけるIT
    • インターネット → 地域の壁を簡単に越えられる
    • 地域格差は無くなる
    • 地域格差はもっと広がる(ex. 新幹線神話)
    • 情報 → 世界中どこにいても同じ情報が得られる
  • 地方にいると
    • 地方のことを第一に考える
  • 東京にいると
    • 日本全体のことを考えられるようになる
  • アメリカにいると
    • 世界全体のことをかんがえられるようになる
  • Mylingual.net
    • サイトを各言語に翻訳するサービス
    • 機械翻訳ではなく、ユーザがWiki形式でデータを編集
    • 正規表現もつなげるよ
    • セキュリティも大丈夫
  • 感想

Javascriptで実装された言語処理系は面白そう。
いくつか前から使ってみたかった物もあるので、使って何かを作ってみよう。
PCの高速化と処理系の高速化はこれからもどんどん進んでいけば、もっと面白い事が出来そうだ。