SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Drupal補完計画
あるいは
脆弱性虐殺器官
Static Site Generator
2017-03-17 at Drupal Cafe Osaka 55
刀祢邦芳(Tone, Kuniyoshi)
自己紹介
● 仕事でつかうもの
○ Tableau
○ Power BI
○ Pentaho (Spoon)
○ システム監視ツール
■ SolarWinds, Veeam ONE, Zabbix, PRTG, OpManager etc.
○ PHPRunner
○ WinAutomation
● 言語/フレームワーク(順不同)
○ Powershell
○ JavaScript(Node.js)
○ Meteor, React, Riot
○ COBOL, FORTRAN, PL/1
○ マクロ・アセンブラ(6502, System/370)
● これから勉強したい
○ Azure ML Studio
○ Xamarin
○ Python for Machine Learning
○ Elixir + Phoenix
2
CMS遍歴
● HTML editor + FTP
● Zope (Plone)
● Nucleus
● Xoops
● WordPress
● Drupal
● Gatsby
● Pulse CMS
● Hugo
3
Drupalは最強!
● 多言語対応
● マルチユーザ対応
● 自在で多様なレイアウト
● ViewsとDisplay Suite使えば怖いものなし
● 全文検索
● タクソノミー
● 大抵のことはモジュールでできる
4
頑張ってDrupalで掲示板を作った
● 多言語対応
○ 日本語のみ
● マルチユーザ対応
○ 殆どの人がゲストアカウントで閲覧のみ
● 自在で多様なレイアウト
○ シンプルなレイアウトのみ使った
● ViewsとDisplay Suite使えば怖いものなし
○ メンバー名簿は頑張ってViewsで作った
■ でもGoogle Spreadsheetでもいいかも・・・
● 大抵のことはモジュールでできる
○ OG Mailinglistはちょっと大変だった
● タクソノミー&全文検索
○ あまり使っていない 5
でも、管理が大変
● セキュリティアップデートやらなきゃ・・
● バックアップもきっちりと
● yum updateも忘れずに
● LinuxのVPS
○ 万一の時は誰にも引き継げないかも!!
● 頑張って導入したOG Mailinglistだけど
○ なかなかバージョンアップしない
○ Gmail使ってないので、文字化けや不達多発
■ 無料のGmailは沢山送信すると叱られるかも
6
シンプルでいいから
安全性の高いサイトを
お手軽に開発・運用したい
7
● 初心に帰ろう
○ 1コンテンツ1ファイルで作成
○ フォルダ階層=コンテンツ階層
● テーマやテンプレートが使える
● 目次やサイトマップ、RSSは自動生成
● 開発用フォルダから公開用フォルダにコンテンツ
を生成
● DB不要
● Server Side Programming不要
○ 開発時はDBやコンテンツクエリー言語を使ってもよいのでは?
Static Site Generator登場
8
● DB不要なのでインストール簡単
○ 使用リソースが少ない
○ 公開サーバはWebサーバだけあればよい
● テキストファイルなのでGitで管理できる
● サイトの構成変更・移行が簡単
○ フォルダ構造を自在に変更
○ コンテンツの再配置=ファイルの移動
○ コンテンツの自動生成も簡単(grepでもできる?)
● 並行テストが簡単
● 強固なセキュリティ
○ 侵入経路はWebサーバやOSのバックドアのみ?
● CDN使わなくても早いが使えば爆速!
○ https://www.fastly.com や
○ https://www.akamai.com は高いけど
○ https://www.aerobatic.com/ なら使えるかも
Static Site Generatorの利点
9
● 全文検索やフォーム入力が難しい
○ 基本的に対話処理が苦手
○ しかし、対話処理が脆弱性を生む
● スキルが必要
○ 多くはコマンドライン+エディタで開発
■ Pulse CMSはWeb管理画面あり
○ HTML/CSS/JavaScriptの知識
● 公開サイトビルドに時間がかかる
○ Hugoの場合1記事1ms程度といわれる
■ 記事の数に関わらず最低1~3秒のオーバーヘッドあり
○ Gatsbyは爆速らしい
○ ビルド中に公開サイトアクセスがあると一時的に不整合が
発生し得る
Static Site Generatorの欠点
10
● Jekyl(since 2008):Ruby環境で動作
● Hugo(since 2013):次ページ以降で解説
● Hexo:Node.jsベース
<以上が御三家>
● Gatsby:最先端のCMS?
○ 開発環境はReactのヘビーな環境
○ 1.0ではコンテンツのクエリーにGraph QL使用
=========
● Pulse CMS(有償 1ドメイン$10/月)
○ 厳密にはフラットファイルCMS
○ 公開コンテンツはファイルからPHPが動的に生成
○ DBなし&自由なフォルダ構造という点でSSGライク
○ コアメンバーの1人が関西在住でMeetup開催中
様々なSSG
11
● https://gohugo.io 
● https://github.com/spf13/hugo
● 本体はGo言語
○ バイナリインストール時にはGo環境は不要
● コンテンツ記述はMarkdown
○ Front MatterにメタデータをTOML/YAML/JSONで記述
● hugoコマンド
○ 開発用Liveサーバー起動
○ コンテンツを生成
<以降はhttp://wdkk.co.jp/note/2015/0714-hugo/ を参考に解説>
What is Hugo(ヒューゴー)
12
● archetypes/
○ default.md (記事の素になるmarkdown)
● config.toml (サイト全体の設定)
● content/ (サイトのMarkdownファイル置き場)
○ ~~~.md (記事)
○ +++.md (記事)
● layouts/ (サイトのレイアウトデザイン)
○ _default/ (サイトの基本レイアウト)
■ single.html (基本レイアウト)
○ partials/ (部品レイアウト)
○ index.html (サイトのホームページレイアウト)
● static/ (サイトにそのままコピーするファイル群)
● themes/
○ 各テーマフォルダ/ 構造はlayoutsフォルダと同じ
● テーマ名=サブフォルダ名
● layoutsフォルダにない要素はここの内容が用いられる
○ theme.toml
フォルダ構成
13
フォルダ・ファイルの役割
14
● config.toml (config.yaml)
TOML形式(あるいはYAML,JSON)でサイト全体の設定情報を記述
サイトのBaseURL、タイトルなどサイト全体を通して使う情報を入力
● contentフォルダ
サイトの具体的な記事をmarkdownで記述し格納
サブフォルダで記事を分類可能
● archetypesフォルダ
記事を作成する際に基本となるmarkdownのファイルを置く。
コマンドで、
hugo new 記事のファイルパス/記事タイトル.md
を入力すると記事の.mdファイルがcontentフォルダ内に生成される。
このときdefault.mdにTOML(YAML) Front Matterを記述しておくと、生成された
記事にあらかじめメタデータが入力される。
フォルダ・ファイルの役割(続き)
15
● layoutsフォルダ
HTMLのレイアウトを格納
layouts内の_defaultフォルダの single.htmlファイルが基本レイアウトデザイン
ビルドでcontentフォルダ内の.mdの内容がlayoutsに挿入されHTMLが生成される
● layouts > partialsフォルダ
layouts内のHTML内に埋め込みが可能な部品
● staticフォルダ
加工せずそのままサイトに使う素材を格納
ビルド時にpublicフォルダ内に直接コピーされる
● themesフォルダとtheme.toml
複数のレイアウトテーマを格納するフォルダ
ビルドで指定するテーマはこのフォルダ内に入れておく必要がある
theme.tomlにはテーマの設定値やメタデータを記述する
私の掲示板の構造
16
site
├─archetypes
├─content
│ ├─info
│ ├─post
│ └─secretdata
├─data
├─layouts
│ ├─info
│ ├─partials
│ │ └─widgets
│ ├─post
│ ├─section
│ └─_default
├─public
│ ├─attached
│ ├─css
│ ├─img
│ ├─info
│ │ ├─2016-dosoukai
│ │ └─page
│ │ └─1
│ ├─js
│ ├─post
│ │ ├─500
・・・・
│ │ ├─509
│ │ └─page
│ │ ├─1
│ │ └─2
│ └─secretdata
│ ├─MailAddr
│ └─page
│ └─1
├─static
│ ├─attached
│ └─img
└─themes
└─mainroad
├─archetypes
├─exampleSite
│ ├─content
│ │ └─post
│ ├─data
│ └─static
├─images
├─layouts
│ ├─partials
│ │ └─widgets
│ └─_default
└─static
├─css
├─img
└─js
config.toml
baseurl = "/"
title = "みんなの掲示板"
languageCode = "ja-jp"
paginate = "5" # Number of posts per page
theme = "mainroad"
disqusShortname = "" # Enable comments by entering your Disqus shortname
googleAnalytics = "" # Enable Google Analytics by entering your tracking
id
[Author]
name = "管理人"
[Params]
subtitle = " 同期生の交流の輪を拡げよう " # Subtitle of your site
description = " 交流サイト" # Description of your site
opengraph = true
leftsidebar = false # Move sidebar to the left side if true
authorbox = true
post_navigation = true
17
config.toml(続き)
[Params.widgets]
search = false # Enable "Search" widget
recent_articles = true # Enable "Recent arcticles" widget
sections = true # Enable "Sections" widget
categories = false # Enable "Categories" widget
tags = false # Enable "Tags" widget
[[menu.main]]
name = "掲示板"
weight = 1
identifier = "post"
url = "/post/"
[[menu.main]]
name = "お知らせ"
weight = 5
url = "/info/"
18
記事のmdファイル
+++
date = "2017-02-05 22:43:00"
title = "効いた!"
+++
## 福沢諭吉です
以下はHTMLで書きます
昨日、Druaplってのを腰椎の関節に注射してもらったことを報告しましたが、本日スポーツクラブ
行って踊ったんだけど、効果抜群! <br />
いつもなら、動き出して 5分もすれば脚が痛くなっててさぼりさぼりだったんだけど、本日は、ほとん
ど痛みなく(ちょっと痛くなったけど) 60分を完了。<br />
よかった~~ <strong>坂本龍馬さん</strong>ありがとう</p>
<pre>
さて、次の課題?は、どれだけの期間、効果を発揮するかってことですね。
もう一つは、これをずっと続けなければならないのか、それとも、何度か注射するうちに回復して離脱
できるかってことですね。
</pre>
19
記事の表示
20
layoutsフォルダ
LAYOUTS
│ index.html     全体のindex.html
│ postindex.html    その他任意の HTMLを置ける
│
├─info
│ single.html   Infoフォルダの1コンテンツ表示用
│
├─partials
│ │ footer.html
│ │ pagination.html   ページ操作用のパーツ
│ │ sidebar.html
│ │
│ └─widgets
│ recent.html  近着表示ブロック
│
├─post
│ single.html    Postフォルダの1コンテンツ表示用
│
├─section        サブフォルダのコンテンツリスト用
│ info.html
│ post.html
│
└─_default
list.html    デフォルトのリスト表示
single.html   デフォルトのコンテンツ
21
サーバー環境
● 開発サーバー
○ Windows Server 2012
■ メモリー 12GB CPU 4コアの海外VPS
○ WebStormまたはVSCodeで開発
○ IISを特別なポートで公開してテスト
● 公開サーバー
○ Windows Server 2012
■ メモリー 768MB CPU 1コアのさくらVPS
○ VSCodeはぎりぎり動く
○ IIS+Basic認証+SSL
● どちらもWindowsなのでPCが操作できる人ならばリモート
デスクトップで何とか運用できるはず
22
コンテンツ編集デモ
23
メールによる投稿システム
● OG MailingListと同じことを実現
● https://github.com/kunichan2013/MailBlog 
● 定期的にGmailの未読をチェック
● 未読があれば最初の1件だけを処理
○ メールのReturn-PathのアドレスをCSVの名簿とチェック
○ 存在しないアドレスならば管理者にメールして終了
○ メールソースをファイルに書き出す
○ コンテンツのMDファイルに変換
■ 配信したコンテンツメールの返信ならば本文にコメントとし
て追加
○ 同じ内容を掲示板メンバーに送信
■ 送信メール数が多いときはGmailの無料アカウントでは送
信一時停止になる。
■ G Suite契約にすれば1日1万通まで可能
24
メールによる投稿のデモ
・公開環境にて実行
25
さてDrupalからの移行をどうするか
● 一応ツールはある
○ github.com/danapsimer/drupal2hugo 
○ Go環境で実行したが必要なテーブルがないということで
エラー
● 本文とコメントを1ページに表示したいのでScreen Scraping
方式にした
○ Node.jsに色々ツールがあるが手間がかかりそう
○ WinAutomation 評価版でScraping
● DrupalサイトのテーブルからNode番号NNNを抽出して
http://サイト/drupal/node/NNN
を巡回した
● 一応完了
チラッとデモします
26
● 人気番付
○ https://www.staticgen.com 
● 主要ツール比較
○ http://qiita.com/tamano/items/d3be25027c9b80bbfb7a
● Hugo関連
○ http://qiita.com/spiegel-im-spiegel/items/4c5859f7cac877068742
○ http://system.blog.uuum.jp/entry/2016/02/16/120000
○ 力作の連載
■ http://wdkk.co.jp/note/2015/0714-hugo/
Static Site Generator関連リンク
27
END
28

Mais conteúdo relacionado

Mais procurados

採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」Takayuki Fukumoto
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いているAkihiro Kuwano
 
InnoDB Table Compression
InnoDB Table CompressionInnoDB Table Compression
InnoDB Table CompressionTakanori Sejima
 
5.6 以前の InnoDB Flushing
5.6 以前の InnoDB Flushing5.6 以前の InnoDB Flushing
5.6 以前の InnoDB FlushingTakanori Sejima
 
WebComponentsとPolymer
WebComponentsとPolymerWebComponentsとPolymer
WebComponentsとPolymerTakahiro Maki
 
ニコニコニュースと全文検索
ニコニコニュースと全文検索ニコニコニュースと全文検索
ニコニコニュースと全文検索techtalkdwango
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニングKiyokazu Kaba
 
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!leverages_event
 
1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャ1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャMasakazu Matsushita
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テストTakahiro Moteki
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発Tatsumi Naganuma
 
EthernetやCPUなどの話
EthernetやCPUなどの話EthernetやCPUなどの話
EthernetやCPUなどの話Takanori Sejima
 
Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Brain Dots at dots. - Brain Dotsのアーキテクチャ -Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Brain Dots at dots. - Brain Dotsのアーキテクチャ -Masakazu Matsushita
 
DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!h2so5
 
フィードフォースと AWS と私
フィードフォースと AWS と私フィードフォースと AWS と私
フィードフォースと AWS と私a know
 
Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!Tanaka Yuichi
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画Kazufumi Ohkawa
 

Mais procurados (20)

採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
 
InnoDB Table Compression
InnoDB Table CompressionInnoDB Table Compression
InnoDB Table Compression
 
introduction of WalB
introduction of WalBintroduction of WalB
introduction of WalB
 
5.6 以前の InnoDB Flushing
5.6 以前の InnoDB Flushing5.6 以前の InnoDB Flushing
5.6 以前の InnoDB Flushing
 
WebComponentsとPolymer
WebComponentsとPolymerWebComponentsとPolymer
WebComponentsとPolymer
 
ニコニコニュースと全文検索
ニコニコニュースと全文検索ニコニコニュースと全文検索
ニコニコニュースと全文検索
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
 
1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャ1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャ
 
20150523
 20150523 20150523
20150523
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト
 
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjpElasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
EthernetやCPUなどの話
EthernetやCPUなどの話EthernetやCPUなどの話
EthernetやCPUなどの話
 
Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Brain Dots at dots. - Brain Dotsのアーキテクチャ -Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Brain Dots at dots. - Brain Dotsのアーキテクチャ -
 
DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!
 
フィードフォースと AWS と私
フィードフォースと AWS と私フィードフォースと AWS と私
フィードフォースと AWS と私
 
Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
 

Destaque

3Com 3C18120A
3Com 3C18120A3Com 3C18120A
3Com 3C18120Asavomir
 
Instrumento de Valoración CANAIMA.
Instrumento de Valoración CANAIMA.Instrumento de Valoración CANAIMA.
Instrumento de Valoración CANAIMA.luisibada
 
قانون كرة القدم
قانون  كرة القدمقانون  كرة القدم
قانون كرة القدمDriss adrafiha
 
Agile coaching with Insights from Indian culture
Agile coaching with Insights from Indian cultureAgile coaching with Insights from Indian culture
Agile coaching with Insights from Indian cultureAnand Murthy Raj
 
Sachpazis_Pile Analysis & Design example According to EN 1997-1_2004_March-2017
Sachpazis_Pile Analysis & Design example According to EN 1997-1_2004_March-2017Sachpazis_Pile Analysis & Design example According to EN 1997-1_2004_March-2017
Sachpazis_Pile Analysis & Design example According to EN 1997-1_2004_March-2017Dr.Costas Sachpazis
 
死闘!Og mailinglist
死闘!Og mailinglist死闘!Og mailinglist
死闘!Og mailinglistKuniyoshi Tone
 
2016年を振り返る
2016年を振り返る2016年を振り返る
2016年を振り返るKuniyoshi Tone
 
Presentacion sobre la expectativa de inflacion de la poliltica monetaria en G...
Presentacion sobre la expectativa de inflacion de la poliltica monetaria en G...Presentacion sobre la expectativa de inflacion de la poliltica monetaria en G...
Presentacion sobre la expectativa de inflacion de la poliltica monetaria en G...Rudy MC
 
Consolidate MySQL Shards Into Amazon Aurora Using AWS Database Migration Serv...
Consolidate MySQL Shards Into Amazon Aurora Using AWS Database Migration Serv...Consolidate MySQL Shards Into Amazon Aurora Using AWS Database Migration Serv...
Consolidate MySQL Shards Into Amazon Aurora Using AWS Database Migration Serv...Amazon Web Services
 
presentation on blind pepole
presentation on blind pepolepresentation on blind pepole
presentation on blind pepoletushar4609
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)SANG WON PARK
 
Unifi'd Ownage
Unifi'd OwnageUnifi'd Ownage
Unifi'd OwnageTim N
 
Drupal meetup in tokyo 2013
Drupal meetup in tokyo 2013Drupal meetup in tokyo 2013
Drupal meetup in tokyo 2013dokumori
 
第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会masayoshi shiraishi
 
Economic performance management approach, itc ltd sustainability report 2006
Economic performance  management approach, itc ltd   sustainability report 2006Economic performance  management approach, itc ltd   sustainability report 2006
Economic performance management approach, itc ltd sustainability report 2006varsha nihanth lade
 

Destaque (20)

3Com 3C18120A
3Com 3C18120A3Com 3C18120A
3Com 3C18120A
 
Instrumento de Valoración CANAIMA.
Instrumento de Valoración CANAIMA.Instrumento de Valoración CANAIMA.
Instrumento de Valoración CANAIMA.
 
قانون كرة القدم
قانون  كرة القدمقانون  كرة القدم
قانون كرة القدم
 
Agile coaching with Insights from Indian culture
Agile coaching with Insights from Indian cultureAgile coaching with Insights from Indian culture
Agile coaching with Insights from Indian culture
 
TYPES OF JOINTS
TYPES OF JOINTSTYPES OF JOINTS
TYPES OF JOINTS
 
2 клас урок 1 правила поведінки
2 клас урок 1 правила поведінки 2 клас урок 1 правила поведінки
2 клас урок 1 правила поведінки
 
2 клас урок 2 застосування комп'ютера в різних галузях
2 клас урок 2 застосування комп'ютера в різних галузях 2 клас урок 2 застосування комп'ютера в різних галузях
2 клас урок 2 застосування комп'ютера в різних галузях
 
Sachpazis_Pile Analysis & Design example According to EN 1997-1_2004_March-2017
Sachpazis_Pile Analysis & Design example According to EN 1997-1_2004_March-2017Sachpazis_Pile Analysis & Design example According to EN 1997-1_2004_March-2017
Sachpazis_Pile Analysis & Design example According to EN 1997-1_2004_March-2017
 
死闘!Og mailinglist
死闘!Og mailinglist死闘!Og mailinglist
死闘!Og mailinglist
 
2016年を振り返る
2016年を振り返る2016年を振り返る
2016年を振り返る
 
Presentacion sobre la expectativa de inflacion de la poliltica monetaria en G...
Presentacion sobre la expectativa de inflacion de la poliltica monetaria en G...Presentacion sobre la expectativa de inflacion de la poliltica monetaria en G...
Presentacion sobre la expectativa de inflacion de la poliltica monetaria en G...
 
Consolidate MySQL Shards Into Amazon Aurora Using AWS Database Migration Serv...
Consolidate MySQL Shards Into Amazon Aurora Using AWS Database Migration Serv...Consolidate MySQL Shards Into Amazon Aurora Using AWS Database Migration Serv...
Consolidate MySQL Shards Into Amazon Aurora Using AWS Database Migration Serv...
 
Team chemistry
Team chemistryTeam chemistry
Team chemistry
 
presentation on blind pepole
presentation on blind pepolepresentation on blind pepole
presentation on blind pepole
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
 
Conversacion
ConversacionConversacion
Conversacion
 
Unifi'd Ownage
Unifi'd OwnageUnifi'd Ownage
Unifi'd Ownage
 
Drupal meetup in tokyo 2013
Drupal meetup in tokyo 2013Drupal meetup in tokyo 2013
Drupal meetup in tokyo 2013
 
第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会
 
Economic performance management approach, itc ltd sustainability report 2006
Economic performance  management approach, itc ltd   sustainability report 2006Economic performance  management approach, itc ltd   sustainability report 2006
Economic performance management approach, itc ltd sustainability report 2006
 

Semelhante a Drupal補完計画

TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇Manabu Ori
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップYasuhito Yabe
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
Opa - Cloud Language
Opa - Cloud LanguageOpa - Cloud Language
Opa - Cloud LanguageTozo Tanaka
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾外道 父
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用Shinya Okano
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2tamtam180
 
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)tamtam180
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜Takahiro Inoue
 
2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)Naoki Okino
 
ログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてcyberagent
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"Kentaro Yoshida
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセスMakoto Kato
 

Semelhante a Drupal補完計画 (20)

TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
Code Pack の話
Code Pack の話Code Pack の話
Code Pack の話
 
Opa - Cloud Language
Opa - Cloud LanguageOpa - Cloud Language
Opa - Cloud Language
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
知っておきたいWordPress開発環境 2016年10月編
知っておきたいWordPress開発環境 2016年10月編知っておきたいWordPress開発環境 2016年10月編
知っておきたいWordPress開発環境 2016年10月編
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
 
2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)
 
ログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについて
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 

Drupal補完計画

  • 2. 自己紹介 ● 仕事でつかうもの ○ Tableau ○ Power BI ○ Pentaho (Spoon) ○ システム監視ツール ■ SolarWinds, Veeam ONE, Zabbix, PRTG, OpManager etc. ○ PHPRunner ○ WinAutomation ● 言語/フレームワーク(順不同) ○ Powershell ○ JavaScript(Node.js) ○ Meteor, React, Riot ○ COBOL, FORTRAN, PL/1 ○ マクロ・アセンブラ(6502, System/370) ● これから勉強したい ○ Azure ML Studio ○ Xamarin ○ Python for Machine Learning ○ Elixir + Phoenix 2
  • 3. CMS遍歴 ● HTML editor + FTP ● Zope (Plone) ● Nucleus ● Xoops ● WordPress ● Drupal ● Gatsby ● Pulse CMS ● Hugo 3
  • 4. Drupalは最強! ● 多言語対応 ● マルチユーザ対応 ● 自在で多様なレイアウト ● ViewsとDisplay Suite使えば怖いものなし ● 全文検索 ● タクソノミー ● 大抵のことはモジュールでできる 4
  • 5. 頑張ってDrupalで掲示板を作った ● 多言語対応 ○ 日本語のみ ● マルチユーザ対応 ○ 殆どの人がゲストアカウントで閲覧のみ ● 自在で多様なレイアウト ○ シンプルなレイアウトのみ使った ● ViewsとDisplay Suite使えば怖いものなし ○ メンバー名簿は頑張ってViewsで作った ■ でもGoogle Spreadsheetでもいいかも・・・ ● 大抵のことはモジュールでできる ○ OG Mailinglistはちょっと大変だった ● タクソノミー&全文検索 ○ あまり使っていない 5
  • 6. でも、管理が大変 ● セキュリティアップデートやらなきゃ・・ ● バックアップもきっちりと ● yum updateも忘れずに ● LinuxのVPS ○ 万一の時は誰にも引き継げないかも!! ● 頑張って導入したOG Mailinglistだけど ○ なかなかバージョンアップしない ○ Gmail使ってないので、文字化けや不達多発 ■ 無料のGmailは沢山送信すると叱られるかも 6
  • 8. ● 初心に帰ろう ○ 1コンテンツ1ファイルで作成 ○ フォルダ階層=コンテンツ階層 ● テーマやテンプレートが使える ● 目次やサイトマップ、RSSは自動生成 ● 開発用フォルダから公開用フォルダにコンテンツ を生成 ● DB不要 ● Server Side Programming不要 ○ 開発時はDBやコンテンツクエリー言語を使ってもよいのでは? Static Site Generator登場 8
  • 9. ● DB不要なのでインストール簡単 ○ 使用リソースが少ない ○ 公開サーバはWebサーバだけあればよい ● テキストファイルなのでGitで管理できる ● サイトの構成変更・移行が簡単 ○ フォルダ構造を自在に変更 ○ コンテンツの再配置=ファイルの移動 ○ コンテンツの自動生成も簡単(grepでもできる?) ● 並行テストが簡単 ● 強固なセキュリティ ○ 侵入経路はWebサーバやOSのバックドアのみ? ● CDN使わなくても早いが使えば爆速! ○ https://www.fastly.com や ○ https://www.akamai.com は高いけど ○ https://www.aerobatic.com/ なら使えるかも Static Site Generatorの利点 9
  • 10. ● 全文検索やフォーム入力が難しい ○ 基本的に対話処理が苦手 ○ しかし、対話処理が脆弱性を生む ● スキルが必要 ○ 多くはコマンドライン+エディタで開発 ■ Pulse CMSはWeb管理画面あり ○ HTML/CSS/JavaScriptの知識 ● 公開サイトビルドに時間がかかる ○ Hugoの場合1記事1ms程度といわれる ■ 記事の数に関わらず最低1~3秒のオーバーヘッドあり ○ Gatsbyは爆速らしい ○ ビルド中に公開サイトアクセスがあると一時的に不整合が 発生し得る Static Site Generatorの欠点 10
  • 11. ● Jekyl(since 2008):Ruby環境で動作 ● Hugo(since 2013):次ページ以降で解説 ● Hexo:Node.jsベース <以上が御三家> ● Gatsby:最先端のCMS? ○ 開発環境はReactのヘビーな環境 ○ 1.0ではコンテンツのクエリーにGraph QL使用 ========= ● Pulse CMS(有償 1ドメイン$10/月) ○ 厳密にはフラットファイルCMS ○ 公開コンテンツはファイルからPHPが動的に生成 ○ DBなし&自由なフォルダ構造という点でSSGライク ○ コアメンバーの1人が関西在住でMeetup開催中 様々なSSG 11
  • 12. ● https://gohugo.io  ● https://github.com/spf13/hugo ● 本体はGo言語 ○ バイナリインストール時にはGo環境は不要 ● コンテンツ記述はMarkdown ○ Front MatterにメタデータをTOML/YAML/JSONで記述 ● hugoコマンド ○ 開発用Liveサーバー起動 ○ コンテンツを生成 <以降はhttp://wdkk.co.jp/note/2015/0714-hugo/ を参考に解説> What is Hugo(ヒューゴー) 12
  • 13. ● archetypes/ ○ default.md (記事の素になるmarkdown) ● config.toml (サイト全体の設定) ● content/ (サイトのMarkdownファイル置き場) ○ ~~~.md (記事) ○ +++.md (記事) ● layouts/ (サイトのレイアウトデザイン) ○ _default/ (サイトの基本レイアウト) ■ single.html (基本レイアウト) ○ partials/ (部品レイアウト) ○ index.html (サイトのホームページレイアウト) ● static/ (サイトにそのままコピーするファイル群) ● themes/ ○ 各テーマフォルダ/ 構造はlayoutsフォルダと同じ ● テーマ名=サブフォルダ名 ● layoutsフォルダにない要素はここの内容が用いられる ○ theme.toml フォルダ構成 13
  • 14. フォルダ・ファイルの役割 14 ● config.toml (config.yaml) TOML形式(あるいはYAML,JSON)でサイト全体の設定情報を記述 サイトのBaseURL、タイトルなどサイト全体を通して使う情報を入力 ● contentフォルダ サイトの具体的な記事をmarkdownで記述し格納 サブフォルダで記事を分類可能 ● archetypesフォルダ 記事を作成する際に基本となるmarkdownのファイルを置く。 コマンドで、 hugo new 記事のファイルパス/記事タイトル.md を入力すると記事の.mdファイルがcontentフォルダ内に生成される。 このときdefault.mdにTOML(YAML) Front Matterを記述しておくと、生成された 記事にあらかじめメタデータが入力される。
  • 15. フォルダ・ファイルの役割(続き) 15 ● layoutsフォルダ HTMLのレイアウトを格納 layouts内の_defaultフォルダの single.htmlファイルが基本レイアウトデザイン ビルドでcontentフォルダ内の.mdの内容がlayoutsに挿入されHTMLが生成される ● layouts > partialsフォルダ layouts内のHTML内に埋め込みが可能な部品 ● staticフォルダ 加工せずそのままサイトに使う素材を格納 ビルド時にpublicフォルダ内に直接コピーされる ● themesフォルダとtheme.toml 複数のレイアウトテーマを格納するフォルダ ビルドで指定するテーマはこのフォルダ内に入れておく必要がある theme.tomlにはテーマの設定値やメタデータを記述する
  • 16. 私の掲示板の構造 16 site ├─archetypes ├─content │ ├─info │ ├─post │ └─secretdata ├─data ├─layouts │ ├─info │ ├─partials │ │ └─widgets │ ├─post │ ├─section │ └─_default ├─public │ ├─attached │ ├─css │ ├─img │ ├─info │ │ ├─2016-dosoukai │ │ └─page │ │ └─1 │ ├─js │ ├─post │ │ ├─500 ・・・・ │ │ ├─509 │ │ └─page │ │ ├─1 │ │ └─2 │ └─secretdata │ ├─MailAddr │ └─page │ └─1 ├─static │ ├─attached │ └─img └─themes └─mainroad ├─archetypes ├─exampleSite │ ├─content │ │ └─post │ ├─data │ └─static ├─images ├─layouts │ ├─partials │ │ └─widgets │ └─_default └─static ├─css ├─img └─js
  • 17. config.toml baseurl = "/" title = "みんなの掲示板" languageCode = "ja-jp" paginate = "5" # Number of posts per page theme = "mainroad" disqusShortname = "" # Enable comments by entering your Disqus shortname googleAnalytics = "" # Enable Google Analytics by entering your tracking id [Author] name = "管理人" [Params] subtitle = " 同期生の交流の輪を拡げよう " # Subtitle of your site description = " 交流サイト" # Description of your site opengraph = true leftsidebar = false # Move sidebar to the left side if true authorbox = true post_navigation = true 17
  • 18. config.toml(続き) [Params.widgets] search = false # Enable "Search" widget recent_articles = true # Enable "Recent arcticles" widget sections = true # Enable "Sections" widget categories = false # Enable "Categories" widget tags = false # Enable "Tags" widget [[menu.main]] name = "掲示板" weight = 1 identifier = "post" url = "/post/" [[menu.main]] name = "お知らせ" weight = 5 url = "/info/" 18
  • 19. 記事のmdファイル +++ date = "2017-02-05 22:43:00" title = "効いた!" +++ ## 福沢諭吉です 以下はHTMLで書きます 昨日、Druaplってのを腰椎の関節に注射してもらったことを報告しましたが、本日スポーツクラブ 行って踊ったんだけど、効果抜群! <br /> いつもなら、動き出して 5分もすれば脚が痛くなっててさぼりさぼりだったんだけど、本日は、ほとん ど痛みなく(ちょっと痛くなったけど) 60分を完了。<br /> よかった~~ <strong>坂本龍馬さん</strong>ありがとう</p> <pre> さて、次の課題?は、どれだけの期間、効果を発揮するかってことですね。 もう一つは、これをずっと続けなければならないのか、それとも、何度か注射するうちに回復して離脱 できるかってことですね。 </pre> 19
  • 21. layoutsフォルダ LAYOUTS │ index.html     全体のindex.html │ postindex.html    その他任意の HTMLを置ける │ ├─info │ single.html   Infoフォルダの1コンテンツ表示用 │ ├─partials │ │ footer.html │ │ pagination.html   ページ操作用のパーツ │ │ sidebar.html │ │ │ └─widgets │ recent.html  近着表示ブロック │ ├─post │ single.html    Postフォルダの1コンテンツ表示用 │ ├─section        サブフォルダのコンテンツリスト用 │ info.html │ post.html │ └─_default list.html    デフォルトのリスト表示 single.html   デフォルトのコンテンツ 21
  • 22. サーバー環境 ● 開発サーバー ○ Windows Server 2012 ■ メモリー 12GB CPU 4コアの海外VPS ○ WebStormまたはVSCodeで開発 ○ IISを特別なポートで公開してテスト ● 公開サーバー ○ Windows Server 2012 ■ メモリー 768MB CPU 1コアのさくらVPS ○ VSCodeはぎりぎり動く ○ IIS+Basic認証+SSL ● どちらもWindowsなのでPCが操作できる人ならばリモート デスクトップで何とか運用できるはず 22
  • 24. メールによる投稿システム ● OG MailingListと同じことを実現 ● https://github.com/kunichan2013/MailBlog  ● 定期的にGmailの未読をチェック ● 未読があれば最初の1件だけを処理 ○ メールのReturn-PathのアドレスをCSVの名簿とチェック ○ 存在しないアドレスならば管理者にメールして終了 ○ メールソースをファイルに書き出す ○ コンテンツのMDファイルに変換 ■ 配信したコンテンツメールの返信ならば本文にコメントとし て追加 ○ 同じ内容を掲示板メンバーに送信 ■ 送信メール数が多いときはGmailの無料アカウントでは送 信一時停止になる。 ■ G Suite契約にすれば1日1万通まで可能 24
  • 26. さてDrupalからの移行をどうするか ● 一応ツールはある ○ github.com/danapsimer/drupal2hugo  ○ Go環境で実行したが必要なテーブルがないということで エラー ● 本文とコメントを1ページに表示したいのでScreen Scraping 方式にした ○ Node.jsに色々ツールがあるが手間がかかりそう ○ WinAutomation 評価版でScraping ● DrupalサイトのテーブルからNode番号NNNを抽出して http://サイト/drupal/node/NNN を巡回した ● 一応完了 チラッとデモします 26
  • 27. ● 人気番付 ○ https://www.staticgen.com  ● 主要ツール比較 ○ http://qiita.com/tamano/items/d3be25027c9b80bbfb7a ● Hugo関連 ○ http://qiita.com/spiegel-im-spiegel/items/4c5859f7cac877068742 ○ http://system.blog.uuum.jp/entry/2016/02/16/120000 ○ 力作の連載 ■ http://wdkk.co.jp/note/2015/0714-hugo/ Static Site Generator関連リンク 27