プログラミングの初歩の初歩という意味で、表計算ソフト「エクセル」の関数について理解してみましょう。

オフィススイートについて

まず、「Excel(エクセル)」は、マイクロソフトのオフィススイート「Microsoft Office」のなかの1製品です。

  • Microsoft Office (1989-)

    • Word
    • Excel
    • Access
    • PowerPoint
    • Publisher (Windowsのみ)
    • Outlook (「Outlook Express」の上位ソフト)

Windowsパソコンにはプリインストールされていることもしばしばあります。

オフィススイートとしては、無料の「OpenOffice」「Kingsoft Office」なども存在します。
Microsoft Officeとの互換性はかなり高いです。

また、近年よく使われるのが「Google Drive(旧:Google Docs)」です。
クラウドストレージである「マイドライブ」上に、オフィススイートが提供されています。

同様のクラウド展開はMicrosoftも行っており、無料の「Office Online」と法人向けの「Office 365」が存在します。
Office Onlineは、クラウドサービス「One Drive」と、Evernote対抗ソフトである「One Note」などと密接に関係しています。

ちなみにMac上では、Microsoftからは「Microsoft Office for Mac」が提供されています。Apple純正のオフィススイートとしては「iWork」が存在します。

表計算ソフトの選定

「Office」や「iWork」、「Google Drive」といったオフィススイートのなかの表計算ソフトが、「Excel」や「Numbers」、「Googleスプレッドシート」です。

今回の授業では、Googleアカウントとブラウザさえあればすぐに利用可能な「Googleスプレッドシート」を使用してみたいと思います。

Google Driveにアクセスして、ログインしておいてください。

表計算ソフトの使われ方

◆計算の必要な表の作成

◆「エクセル方眼紙」

スキ

サッカー
レトロゲーム
ざるそば
ラジオ
アドベンチャー・タイム
Amazon
昔のTwitter
すイエんサー
風景を見ること(海外ドラマ、ストリートビュー、シューティングゲーム、車窓)
攻殻機動隊/夏目友人帳/西尾維新
中川家/古坂大魔王/ダウンタウン/なかやまきんにくん
マツコ・デラックスの出てるテレビ番組
ウィル・フェレル
ストレートに発言すること、言い切ること
ボブカット・ショートカット
おっぱい

キライ

虫全般
冷えたコロッケ
Facebookグループ
Windows
名探偵コナン/バクマン
話が進まないこと(銀行、区役所、病院、コールセンター)
YSEかNOかで答えられる質問にYESかNOかで答えないヤツ
デブをデブといじっても平気だと思ってるヤツ
スマホ見ながらだと歩く速度が1/2になるヤツ
黙ってる方が得だと思ってるヤツ
金貸してくれと言ってくるヤツ
急に返信してこなくなる女子

2017

ハースストーン [battel.net]
アスタブリード [PS4]
TITANFALL2 [PS4]
ミラーズエッジカタリスト [PS4]
モンスターハンターフロンティアZ [PS4]
ALENATION [PS4]
2/5 LET IT DIE [PS4]
Everybody’s gone to the rapture [PS4]
ベースピンボール []
Dead Ops Arcade [PS3]
Dungeon Siege3 [X360]
Mold on Pizza [Steam]
Republique [PS4]
戦国修羅SOUL []
解離性ミリオンアーサー [iOS]
1/5 OneMoreLine [Steam]
1/5 Super Hexagon [Steam]
1/4 ポケモンブラック [DS]
1/4 STAR WARS BATTLE FRONT [PS4]
とってもE麻雀ぷらす [PS4]
@SIMPLE DLシリーズG4U vol.1 THE麻雀 [PS4]
大戦略WEB [PS4]
古き良き時代の冒険譚 [PS4]
パックマンチャンピオンシップエディション2 [PS4]
Grim Fandango Remastered [PS4]
1/2 LIMBO [360]
1/2 HEXIC2 [360]
1/2 Hexic for iOS free [iOS]
1/1 Street Fighter X 鉄拳 [360]
1/1 SHOOT MANY ROBOTS [360]
1/1 女とドラゴン 幻獣契約クリプトラクト [PS4]

 

2016

12/31 Jetpac Refused [360]
12/30 LYNE [Steam]
12/24 タイムアベンジャー [PS4]
12/26 MAW [360]
12/23 Rock of ages [360]
12/18 スプロージョンマン [360]
12/18 Make7 [iOS]
12/17 Perchang [iOS]
12/17 Way Out [Steam]
ガンダムオペレーションNEXT [PS4]
Zenge [Steam]
Joy Ride Turbo [360]
Race Driver : GRID2 [360]
Outbound [360]
CastleStorm [360]
Super Time Force [360]
Spelunky [PS3]
Endless Frontier [iOS]
Adventure Capitalist [iOS]
Tap To Riches [iOS]
Make More! [iOS]
AbyssRium [iOS]
ファイナルタップタジー [iOS]
リトルビッグプラネット3 [PS3]
12/6 Hook [Steam]
スタンドマイヒーローズ [iOS]
Shadow Bug [iOS]
Beyond: Two souls [PS3]
10/1 BattleTime [Steam]
10/1 Mahjong Solitaire Epic [Mac]
10/1 Tracky Train [iOS]
9/13 Magic Mansion [iOS]
9/9 ディバインゲート [iOS]
みどりのほしぼし [iOS]
9/3 Mighty No.9 [PS4]
9/3 解離性ミリオンアーサー [PS4]
無双 [PS3]
セブンスドラゴン2020 [PSP]
TOKYO JUNGLE [PS3]
よるのないくに [PS3]
8/23 Blossam Blast [iOS]
8/20 DEAD STAR [PS4]
Furi [PS4]
8/14 Klocki [Steam]
8/14 100億人の俺の嫁 [Android]
8/14 武器投げRPG 空島クエスト [Android]
8/13 ワギャンのパネルしりとり [Android]
8/13 Unholy Heights [Steam]
8/13 Century City [Android]
8/7 カラドリウス ブレイズ [PS3]
8/7 hocus [iOS]
8/5 ルミネス エレクトロニックシンフォニー [Vita]
8/4 Power Hover [iOS]
8/2 Dragons World [iOS]
BARRIER X [iOS]
7/31 Drop Flip [iOS]
7/29 その勇者、ひきこもりにつき [iOS]
7/27 真・三国無双7 Empires [PS4]
暴走ブリック [iOS]
7/22 Pokemon GO [iOS]
7/21 超ダメージ勇者 [iOS]
7/8 聖闘士星矢 Zodiac Brave [iOS]
7/6 ニンゲン繁殖
7/5 ぼくの惑星 [iOS]
7/4 モンスターを集めてまいれ2 [iOS]
7/4 モンスターを集めてまいれ3 [iOS]
7/4 キンを集めてまいれ [iOS]
7/4 豆しば探検隊 [iOS]
7/4 パンツハンター [iOS]
7/3 Smash Fu [iOS]
7/3 フィッシングブレイク [iOS]
7/2 モンスターを集めてまいれ [iOS]
6/30 Horizon Chase [iOS]
6/29 Barrier X [iOS]
6/29 Board 2 Death
6/28 Splash Cars [iOS]
SkyWalk [iOS]
6/25 Cell Connect [iOS]
6/25 Soccer Cup [iOS]
6/17 Crossy Road [iOS]
6/17 みどりのほし [iOS]
6/15 庭ゾンビ [iOS]
6/12 Rocket Cars [iOS]
6/12 Road Trip [iOS]
6/9 さよなら海腹川背ちらり [Vita]
6/7 しばらく勇者 RunBrave [iOS]
6/6 Fits [iOS]
6/5 Two Dots [iOS]
6/5 Mekorama [iOS]
6/3 VOEZ [iOS]
6/1 クラッシュフィーバー [iOS]
5/31 TRIALS FUSION [PS4]
5/30 ガンダムブレイカー [PS3]
5/30 ラビオレプス [AC]
5/30 Zumas Revenge [Origin]
5/29 Octagon [iOS]
5/29 Master Spy [Steam]
5/27 Battle Group 2 [Steam]
5/27 Cities in Motion 2 [Steam]
5/23 Shooting Stars! [Steam]
5/22 Neon Drive [PS4]
5/19 RIDE [PS4] ここまでで70
5/19 Bushido Bear [iOS]
5/19 Super Sanctum TD [Steam]
5/18 DEAD OR ALIVE xtreme 3 Fortune [PS4]
5/17 Phantasy star online 2 [PS4]
5/16 Rollers if the Realm [Vita]
5/15 Kick & Fennick [Vita]
5/15 Jumping Balls [iOS]
5/14 Lane Lacer[ [iOS]
5/14 Looty Dungeon [iOS]
5/13 ジャッジ! [iOS] ここまでで60
5/11 Infinite Travel [iOS]
5/11 Dot and circle [iOS]
5/11 Dot Puzzle [iOS]
5/11 Animal Feeder [iOS]
5/11 放置キングダム [iOS]
5/9 Galaxy Admirals [Steam]
5/8 Osu! [PC]
5/8 Overture – Steam
5/7 真・三国無双7 Empires 共闘版 – PS3
5/7 戦国BASARA2 英雄外伝(HEROES) – PS2 – ここまでで50
5/7 Football Manager 2013 – PC
5/1 実況パワプロ野球サクセススペシャル – Vita
4/29 Triple Town – Steam
4/29 Audio Surf 2 – Steam
4/28 Solitaire(Wells Fargo) – iOS
Royal Revolt
4/27 Boximals Soccer – WindowsApp
4/26 City Bus Tycoon Free – WindowsApp
4/26 Airport City – WindowsApp
4/23 Destination – WP8 – ここまでで40
4/18 戦国無双クロニクル3
4/14 Counter Spy – ios
4/13 Ping Pong -ios
4/12 Cut the rope – ios
4/10 Urban Trial Freestyle – Vita
3/27 BROFORCE – PS4
3/22 ファンタシースターノヴァ – Vita
3/20 モノカゲクエスト – 3DS
3/20 BalanCity (β) – Mac
3/19 Halo5 – XboxOne – ここまでで30
3/19 BattleField Hardline – XboxOne
3/18 電撃文庫Fighting Climax – Vita
3/17 Goat Simulator – Xbox One
3/6 メルルのアトリエplus – Vita
3/6 ヴィーナスイレブン – iOS
3/6 みんなのGOLF ポータブル2 – Vita(PSP)
3/5 朧村正 – Vita
Piloteer – iOS
2/18 Tomb of the mask
2/18 討鬼伝 極 – ここまでで20
2/15 MouseCraft
2/8 Nom Nom Galaxy
1/25 ZHEROS – XBOXONE
1/19 勇者ヤマダ
1/19 崩壊学園
1/18 育成ヤンデレラ
1/17 グランブルーファンタジー
1/17 Back to Bed
1/17 ファントムオブキル
1/17 Lord of Knights
1/17 Hose It Down
1/ 魔王強すぎ
1/11 カプコンジェネレーション 第5集 格闘家たち PS3
1/9 ソリティ馬 3DS
1/6 ドラゴンズドグマオンライン PS4
1/6 ゲームざんまい 3DS
1/5 Jolly Jam
1/4 Pixel Flying Pig
1/2 Cubis
1/2 Flick Color

 

2015

12/22 麻雀鳳凰 – Wii U
12/21 Attack the light – Steven Universe – iOS
12/20 おっぱい大戦(DMM)- ブラウザ
12/17 中年騎士ヤスヒロ – iOS
12/17 Impossible Run – iOS
12/16 モンスターハンタークロス – 3DS
12/16 メタルスレイダーグローリー ディレクターズカット – WiiU VC
12/14 ジャンカラ少年
12/13 LOST REAVERS – WiiU
12/13 Teslagrad – PS4
Final Fantasy 4 – PS1
パイプドリーム – GB
12/10 シバ・カーリーの伝説 3DS
12/10 Woah Dave! Vita
12/7 Combo Quest
12/7 タイムサーファー iOS
12/7 The Swapper Vita
12/7 Super Exploding Zoo Vita
12/6 ネコつつき
12/6 Memento
12/6 モンスターバッグ
12/6 KILLZONE MERCENARIES
12/5 Dragon Fin Soup
12/4 ねこ大乱闘
12/4 Tower Rising(LINEタワー)
12/3 Blendoku 2
11/30 To-Fu Fury
ワンダースタジアム – WS
Drive Ahead
11/14 rop iOS
11/7 光追う者 iOS
11/6 Dungeons & Dragons ミスタラ英雄戦記 PS3
11/5 Plants vs. Zombies X360
11/2 LocoCycle One
10/29 SpireFall iOS
10/29 マドリス iOS
10/28 アサシンクリード クロニクル チャイナ One
10/27 バビルサ iOS
10/24 F-1 GRAND PRIX アーケード
10/24 ドラゴンスレイヤー1 GB
10/24 星のカービィ GB
10/22 Slow Down iOS
10/22 Impossible Geometry iOS
10/19 SHOPPING CART HIGHWAY R – iOS
10/17 シルエットミラージュ
10/13 メタルスラッグXX
10/11 TAPES – iOS
9/28 shadowmatic 
9/26 House of Fun 
9/23 片道勇者 Steam
9/22 ぼっちを探せ 
9/22 NFS Rivals One
9/19 ぷよぷよSUN決定盤 PS3
ぎゃるGUNVOLT Vita
9/16 Acient Surfer2 iOS
9/15 Run Bird iOS
Grow Home PS4
Flick Kick Football 
Traffic Racer Android
9/5 振リカエリマセン勝ツマデハ PS4
9/5 戦国エース アーケード
1943改 アーケード
Cisco Heat アーケード
ピット&ラン アーケード
9/5 Aaru’s Awakening PS4
9/3 アリス Android
8/26 King of Thieves iOS
8/16 ねこあつめ iOS
8/16 Panda Pop iOS
ヘイデイ
99bricks
8/8 マリオカート8 WiiU
8/8 アルカナハート3 Love Max!!!!!
8/7 スプラトゥーン
8/3 Jewel Beach

7/14 ディスガイア3 Vita
7/12 Titan Fall Deluxe One
7/7 テイルズオブシンフォニア ラタトスクの騎士 PS3
7/7 レイマンレジェンド Vita
AIR MECH ARINA
ハイスクールDxD NEW FIGHT Vita
Dungeon 999F
ローグレガシー
ソウルサクリファイスデルタ
5/30 SubaraCity iOS
Crypt of the Necro Dancer Steam
ディスガイア2
跳ねる忍者
2/18 ごちぽん
グミドロップ
Run bird
2/17 Radical [iOS]
2/17 Tap Titans [iOS]
Akiba’s trip2 [PS4]
鬼斬 [PS4]
2/8 Seabeard [iOS]
2/8 Puppet Punch [iOS]
2/8 Real Racing 3 [iOS]
2/8 ねこつつき [iOS]
2/? 99 Bricks [iOS]
1/25 PowerSmash Golf [One]
1/25 Killer Instinct [One]
1/21 ピコピコ達人 [iOS]
1/18 Strike Night [iOS]
1/18 Max: The Curse of Brotherhood [One]
1/18 Titan Attacks! [PS4]
1/17 Dash Man [iOS]
1/17 Duel [iOS]
1/15 Natural Doctrine [PS4]
1/15 Pix The Cat [PS4]
1/12 SpireFall
1/11 MUJO [iOS]
1/11 アドベンチャータイムの宝さがし [iOS]
1/10

「ライセンス(契約)」という言葉は、「著作権」を含めた、権利に関する取り決め全般のことを指します。

著作権」は、著作物(作品) と 著作者(クリエイター) の権利を守るために存在する、国際的な取り決めです。
創作活動で飯を食う、私たちクリエイターの「価値の源泉」でもあります。

しかしながら、ディズニーの「ミッキーマウス」の権利を過度に保護するために著作権法が改定され続けているなど、公正さに欠く面もあります
特に昨今では、悪意を持った過度な商標登録の問題(ベストライセンス社が有名)や「サブマリン特許」問題、CCCD(コピーコントロールCD)問題、DRM問題などとも相まって、自由なビジネス・創作活動を阻害するものとしても認識されています。

こういった従来の独占的な「著作権」に対して、1970年代のハッカーらによって「フリー」「オープン」という考えが生まれました。
以降、コンピュータ分野ではより自由で柔軟なライセンスが生まれ、現代のテクノロジーを支えています。

私たちクリエイターは、どのような形であれ「ライセンス」とは無縁でいられません。ややこしいけれど、大切なことです。

以下に、代表的なライセンスについて解説します。

 

目次

  1. 従来の「著作権」 (Copyright)
    • フェアユース
    • パロディ
    • 著作権延長法(ミッキーマウス保護法)
    • デジタルミレニアム著作権法
    • 二次創作活動(同人活動)
  2. パブリックドメイン
  3. GPL
  4. 修正BSDライセンス
  5. Creative Commons

 

1. 従来の「著作権」 (Copyright)

著作物に対する、著作者の独占的・排他的な権利。
「特許権」や「商標権」にならぶ知的財産権の一つ。

実際の法の運用は各国によって異なるが、「ベルヌ条約」などによって国際的な最低要件が定められている。

多くの国において、著作権は著作物の創作と同時に発生し、著作者の死後50年で切れる。

以下の場合は、著作権の適用が制限される(対象外となる)。
・私的使用を目的とした複製
・図書館における複製
・引用
など

※ フェアユース

著作権者の許諾なく著作物を利用しても、以下の4つの判断基準のもとで公正な利用(フェアユース)に該当すると判断されたばあい、著作権の侵害にあたらないとする考え。

  1. 利用の目的と性格
  2. 著作物の性質
  3. 著作物全体と利用された部分のバランス(量・価値)
  4. 著作物利用の市場に及ぼす影響

ただしこれは曖昧な指針で、訴訟となった場合に最終的な判断は個々のケースによる。
Googleが全世界のウェブサイトの「キャッシュ」を保存しサービス利用していることについては、フェアユースの範囲内であるとされている。

※ パロディ

フランスでは「パロディ規定」が存在し、「フランス的な風刺の伝統」という文化的意義のもとに、風刺作品は著作権の対象外となる。
(このことは、日本のアニメ文化がフランスで受け入れられやすいことと関係があるのかもしれません)

※ 著作権延長法(ミッキーマウス保護法)

「ミッキーマウス」は1928年に発表された作品である。
この法案以前、アメリカでは著作権の保護期間は75年であったため、2003年で権利が切れるはずだった。

1998年、ミッキーマウスの著作権切れが迫っているなか、権利者であるウォルト・ディズニー・カンパニーのロビー活動によって、保護期間が延長された。「ミッキーマウス保護法」「ミッキーマウス延命法」とも言われる。
法人の権利が長くなるなど、複雑になった。

アメリカ政府の延長要求を拒否し、保護期間50年を維持している国や地域にはカナダ・ニュージーランド・中国などである。

※ デジタルミレニアム著作権法

デジタルコンテンツの不正コピー防止のための保護法。96年WIPOの条約を根拠とし、98年アメリカで制定され、2000年に改正された(「ミレニアム」と名がついている由来)。
EUでも2001年に同様の「EUCD」が成立した。

この保護法に関してもっとも重要な点は、オンラインでの著作権侵害についての取り決めである。

オンラインで著作権侵害行為が発生した場合、プロバイダー(ISP)は問題となっているコンテンツを削除したり、情報発信者に警告することによって免責を得ることが可能になった。

(それまでは、プロバイダーがすべての責任を負う可能性があった)

※ 二次創作活動(同人活動)

同人活動において、まず、誰にも公表しない私的利用は著作権の対象外であるから問題ない。
しかし、即売会やオンラインでの頒布を目的とする場合は、著作権を考慮する必要がある。

適法な二次創作作品の頒布

  • 著作権者(いわゆる「公式」)による許諾がある場合
  • コミケやワンフェスなど「当日版権」が存在するイベントでの頒布

著作権者(いわゆる「公式」)が黙認している場合も、権利の侵害とはならないが、TPPのような法案・協定によって非親告罪化された場合には、第三者による告発などで有罪となりうる。つまり限りなく黒に近いグレーなだけであって、進んで行うべきことではない。

また、著作権者が問題視するはずのケースでも、二次創作物について刑事告訴ないし民事訴訟を行うことは極めて少ないのが実態。これは単に費用対効果の問題から妥協しているだけの状態であって「訴えられなかったらOK」と考えるべきではない。
(特に昨今は消費者に問題視された結果の「炎上」が及ぼす影響を無視してはいけない)

 

2. パブリックドメイン

著作権が切れた状態にあること。
ただし、著作権が切れていても「所有権」や「人格権」を侵害する場合は、自由に利用することは出来ない。
著作物が商標登録されている場合や、意匠権が存在する場合も、自由に利用することは出来ない。

ある地域(国)において著作権が切れていても、別の法域ではそうではない、という場合もある。

つまり「パブリックドメイン」の作品だからといって、関連する様々な状況にも配慮せずに二次利用するのは危険である。

 

3. GPL (General Public License)

リチャード・ストールマン(ハッカー文化・フリーソフトウェア運動の代表的存在。Emacsの開発者)によって策定された。
フリーウェア、コピーレフトの代名詞的なライセンス。

GPLでライセンスされた著作物は、ユーザーに対して以下の行為を許可する。

  1. プログラムの実行
  2. ソースコードにアクセスし、プログラムの動作を調べ、改変すること
  3. 複製物の再頒布
  4. プログラムを改良し、公衆にリリースすること

GPLは、二次的著作物についても上記4点の権利を保護しようとする。
この仕組みは「コピーレフト」と呼ばれる。
GPLでライセンスされた著作物は、その二次的著作物に関してもGPLでライセンスされなければならない。

GPLでライセンスされた著作物を改良・改変して作った二次的著作物も、同様にGPLでライセンスされなければならず、他のライセンスで提供することは出来ない。

つまり、

  • GPLのフリーウェアを改良して商品として独占的に販売することはできない。
  • GPLのフリーウェアを改良したら、ソースコードへのアクセスを提供しないといけない(求めに応じてソースコードを開示する必要がある)

 

4. 修正BSDライセンス(New BSD License)

まず、旧「BSDライセンス」(Berkeley Software Distribution)が、カリフォルニア大学バークレー校によって開発されたソフトウェア群のためのライセンスとして策定された。

これをさらに利用しやすく修正したものが「修正BSDライセンス」である。

GPLに似ているが、GPLよりも厳格ではなく、フリーウェアのライセンスとしてはもっとも扱いやすい。
最大のポイントは、GPLとは違って、二次著作物のライセンスは自由に決定することが出来る点である。

 

5. Creative Commons

ローレンス・レッシグ(サイバー法学の第一人者。フリー・カルチャーを提唱)によって策定された、コンテンツ再利用のためのオープンなライセンス。
一般的な著作権表記の「All rights reserved」に対して、このライセンスでは「Some rights reserved」という表記が用いられる。

flickr」は、Creative Commonsの写真作品の巨大なアーカイブとして有名で、ブログの記事写真などにもよく利用される。

まず、Creative Commonsには以下の4つの「オリジナルライセンス」が定義されている。

上記4つの組み合わせによって、実際の著作物の再利用可能なライセンスは決定される。

4つのオリジナルライセンスのうち「BY(表示)」は必ず含まれる。
つまり、Creative Commonsにおいて原作者などの表示は必須である。

 
 

ちなみに、このサイトの内容については、著作権法第35条「学校における複製」の範囲内で文章や画像を使用・引用しています。
これは非常に特殊なことです。

 

みなさんはライセンスについて一度よく把握した上で、

  • 人様の権利を侵害しない
  • 自分の権利が侵害されたときは強い姿勢で臨む

ようにしましょう(^ω^)

 


でもそのへんにいる先生よりは、今どきの文化にもアンテナ張ってるつもりなんです。

 

おもしろかった

「みわくのあくま」もけお
「わくわくろっこモーション」大沖
「無慈悲な8bit」山本さほ
「ぶんぶくたぬきのティーパーティ」森長あやみ
「かふん昔ばなし」かふん
「TAIL STAR」okama

 

イマイチ

「不思議なソメラちゃん」ちょぼらうにょぽみ ←「あいまいみー」のほうが断然いい
 
「かおすキッチン」服部昇大 ←読みづらい
 
「おしえて!ギャル子ちゃん」鈴木健也 ←ギャグがスベってる。この人はこういう絵を書きたかっただけなんだろうな
 
「少女終末紀行」つくみず ←「キノの旅」と同じく、劣化版「星の王子さま」。ココロの弱い人向けの作品は雰囲気だけで中身が薄い

localhost

読み込んだ画像を元に、テキストをレンダリングして新しい画像ファイルを生成します。

 

読込画像
http://zokei.koekatamarin.com/wp-content/uploads/2016/06/splabg.png

フォント
https://drive.google.com/file/d/0B4EpEP9nVtnvWjRpYTIxVlNvcWc/view
http://zokei.koekatamarin.com/wp-content/uploads/2017/07/ikamodoki1.zip

以下のimg.phpとおなじ階層に .pngファイル と .ttfファイル を設置

 

さらに上記スクリプトを改良して、合成するテキストを、クエリストリングからパラメーターとして受け取ることが出来るようにします。

img.php?name=なまえ&text=ぶんしょう

のようなURLにアクセスします。

 

この img.php によって生成された画像データは、PNG形式の画像ですので、画像ファイルのように扱うことが出来ます。

 

index.html

スクレイピングとは?

APIを使ったデータ取得の場合
・JSONなどのプログラムで扱いやすいデータが返ってくる
・サービス提供者が、APIを公開してくれている必要がある

スクレイピングする場合
・WebページからHTMLデータをそのまま取ってくる
・APIが公開されていなくても、サイトさえあれば無理矢理データを取ってこれる
・ただしユーザー認証が必要なサイトは工夫が必要

 

単純なページ取得

file_get_contents関数でファイルやURLのデータを取得

 

スクレイピングライブラリ

ライブラリとは、言語標準の関数では実現できない機能を、様々な人が様々なプロジェクト・プログラムで利用しやすいように、ひとかたまりにして配布されているプログラムコードのことです。

スクレイピングするためのライブラリ
・PHP Simple HTML DOM Parser
・Goutte
・phpQuery
いくつかありますが、古くからあって更新もされている「PHP Simple HTML DOM Parser」を選択するのがベストプラクティスだと思います。

PHP Simple HTML DOM Parser
ダウンロード
概要
解説ページ(日本語)

 

PHP Simple HTML DOM Parser の利用

スクリーンショット 2016-06-16 14.14.15

上記は商用サイトのHTMLソースコードであるが、「PHP Simple HTML DOM Parser」によって、HTMLタグをjQuery的に抽出していくことができる。

 

file_get_contents() ではなく、このライブラリ独自の関数 file_get_html() を使用する

コードの実行結果↓

スクリーンショット 2016-06-16 16.29.01

 

find()というのも、PHP標準の関数ではなく、Simple HTML DOM Parser独自のオブジェクトメソッド。

変数$htmlは、オブジェクト。
(Simple HTML DOM Parserクラスのオブジェクトインスタンス)
オブジェクトは、その内部にメソッドを持つ(定義されている)。
なので、オブジェクトのメソッドを使用する際は、
「オブジェクト->メソッド()」と表記する。

PHPは、中途半端なオブジェクト指向プログラミング言語なので、主語=オブジェクトのあるコード・ないコードが混在します。

 

実用的に絞り込む

ニュース欄のニュースを複数取得する

 

スクリーンショット 2016-06-16 16.03.42

 

アイデア

・Amazonのランキングを保存しつづけて、推移がわかるようにする
・いろいろなサイトのニュースを取得して、スポーツ新聞のようなレイアウトのCSSで表示し直す
・Steamのサイトからセール情報をチェックし続けて、新しいセールが始まったらメールを送信する
などなど…

 

注意点

スクレイピング処理は、言うまでもなく、相手方のサーバーからデータを取得します。
アクセス頻度によっては、相手方のサーバーに負荷をかける事になります。

このため、上記のような単純な作りだと、ユーザーがこのページにアクセスするたびに、自分のサーバーから相手方のサーバーにアクセスしてしまうことになります。
1分間に100人がこのサイトを使用したら、自分のサーバーから相手方のサーバーに1分あたり100アクセスしたことになって、明らかに不審なアクセス数です。
もしこのようなことで相手方のサーバーを停止させるようなことがあれば、不正アクセスの罪に問われかねません(不正な攻撃プログラムを開発・公開・利用幇助した)。

 

実際に2010年、脆弱なシステム環境で運用されていた図書館のサイト(サーバー)から、書籍データを取得するプログラムを作った人が逮捕されるという事件が起こりました。
岡崎市立中央図書館事件 – Wikipedia
※この事件は捜査関係者にIT知識が乏しかったせいで起きた不当な逮捕・勾留であると一般に考えられています。

 

このような意図せざる迷惑行為や無用の誤解を避けるためには、キャッシュの仕組みを利用します。
スクレイピング処理を公開サイトのコードに書くのではなく、1時間に1回管理者のみによって動作させる専用のコードを用意しておき、自分のサーバー上にキャッシュデータを生成しておきます。
サイトにアクセスするユーザーには、そのキャッシュデータを表示するようにします。

フォーム

HTMLコーディングの学習の中で、formタグというのを覚えてきたと思いますが、実際にフォームを動かすには、サーバーサイドプログラミングが必要です。

実装

htdocsのなかに、「anq」というフォルダを作ります。

index.html

 

anq.php

 

次のステップ

このサンプルでは、Webサイトとして公開するにはいくつか問題があります。

・確認ページがない
・入力内容のエラーチェックがない(文字数、全角半角、英数字など)
・何度でもアンケートに回答できてしまう
・結果ページをリロードすると、何度もデータが記録されてしまう
・悪意のあるフォーム入力に対応できていない(サニタイズの必要)

 

また、さらに高度なプログラムにしていくには、

・結果を集計するページを作る
・集計ページは管理者(特別なユーザー)のみが見られるようにする
・メールを飛ばす
・アンケートの設問をデータベースで管理すれば、様々なアンケートを沢山簡単に設置することができる

といった改善余地があるでしょう。

RDB

データベースとして現在でも主流なのはRDB(リレーショナルデータベース)です。
(2007年以降は、NoSQLも台頭)

RDBとして最高の性能を誇るのはOracle社の「Oracle」で、ひとつの業界標準と成っています。
ただしライセンスが高額なのが難点で、それなりの予算規模の業務システムなどで使われることが多いです。

オープンソースのRDBとしては、「MySQL」が無償なのでよく利用されます。
「PostgreSQL」のほうが性能は高いとされますが、ライセンス利用料が発生します。

MySQL

MySQLは、XAMPPによってすでにインストールされています。
データベース(RDB)はエクセルの表のようなものと言いましたが、実際にはエクセルのような「画面」を持ちません。
(プログラムやコマンドラインから利用するものなため)

見て分かりやすい管理ツールとして、PHP製のオープンソースツール「phpMyAdmin」というものがあります。
これもXAMPPによって一緒にインストールされているはずです。

phpMyAdmin
https://www.phpmyadmin.net/

データベース・テーブル・レコード

RDMにおいてデータは以下のように保存されています。

・データベース・・・エクセルファイル全体のようなもの
・テーブル・・・エクセルのシート1枚
・レコード・・・各シートのひとつの行

まずデータベース「Anq」を作成します。
そのなかに、テーブル「Entry」を作成します(カラム数:5)。

スクリーンショット 2016-06-10 08.47.09

作成できたら「Entry」テーブルを選択して「挿入」してみましょう。

スクリーンショット 2016-06-10 08.53.03

レコードがひとつできました。

SQL文

プログラムでレコードを追加するには、プログラムから「SQL文」というのを発行します。

ここでは、phpMyAdmin上でSQL文を打ってみましょう。
[crayon]
INSERT INTO Entry (name,answer1,answer2) VALUES (“Bob”, 1, “From SQL”);
[crayon]

レコードがもうひとつ増えました。

 

SQL文は、
・SELECT文・・・レコードの取得
・INSERT文・・・レコードの追加
・UPDATE文・・・レコードの更新
・DELETE文・・・レコードの削除
の4種類が基本になってきます。

この4種類は、情報システム全般における4つの処理「CRUD」に対応します。

C・・・CREATE
R・・・READ
U・・・UPDATE
D・・・DELETE

ブログサービスも、企業の基幹業務システムも、ITシステムはいずれもデータを「取得」「追加」「更新」「削除」するという4つの機能を組み合わせて構築されます。

基本の基本

PHPは、
以下のブラケットで囲んで記述する必要があります。

また、一般的に、「.php」または「.html」の拡張子でファイルを保存しておく必要があります。

サンプル

テキストエディタで、

と入力し、「hello.php」として保存します。
保存する場所は、
XAMPPをインストールしたフォルダの中です。

(Mac) /Applications/xammp/htdocs/
(Win) C:¥Program Files¥xampp¥htdocs

このフォルダーのデータをブラウザで表示するには、ブラウザのアドレス欄に

と入力します。

「Hello World」という文字が表示されましたか?

この「localhost」というのは、Webサイトの「yahoo.co.jp」なんかとおなじです。
ただし、他のコンピューターからは見られません。
というのも、XAMPPがインストールされた時に、コンピューターの設定を書き換えてくれていて、

「localhost」は「C:¥Program Files¥xampp¥htdocs」の別名である

ということが、このコンピューターでだけ通用するようになっているからです。

※コンピューターの外部からこのページを表示するには、このコンピューターのIPアドレスを打ち込みます。

PHPコードの説明

先ほどのPHPプログラムの説明です。

print() というのは、文字を出力するためのPHPの関数です。
echo と書くことも出来ます。

変数も出力できます。
PHPの変数は、頭に「$」をつけます。

PHP最大の特徴「HTMLと混ぜて書ける」

次のコードを、「test.php」として作成します。

 

【メモ】日時を取得する関数 date()

ユーザーが入力した情報を受け取る

get.php

ブラウザで、
http://localhost/get.php?name=john
にアクセスします。

$_GET[] で、GET形式の通信データ(パラメータ)を受け取れます。
GETのパラメータは、ブラウザではクエリストリングとしてページアドレスに自動的に追記されます。

http://localhost/get.php?name=bob
にすると、表示が変わります。

パスワードなどは、アドレス欄に表示されるとマズイので、GETではなくPOSTを使います。

GETとかPOSTとかいうのは、
HTMLのformタグに書くあれのことです。

このコードを、「form.html」として保存しましょう。

このHTMLフォームは、「post」形式の通信で(method)、「post.php」に対してデータを送信します(action)。

 

では、データを送信された先の、受け取り側となる「post.php」を作りましょう。

これは、入力された内容を単純にそのまま表示し返すだけのプログラムです。