auの日記

プログラミング初心者の日記。(auはハンドルネームです)

オンプレミスとは

auです。

最近聞いて気になった「オンプレミス」について調べてみました。

オンプレミスとは

オンプレミス(on-premise)とは、サーバやソフトウェアといった、情報システムを自社内に設置し、運用することを指します。

ユーザが、外部にあるサービスに問い合わせ、そのリクエストに応じて、コンテンツを配信している方式をオンデマンドと言います。こっちの方が一般的で多いですね。

オンデマンドという方式と区別するために、オンプレミスという名前が使われるようになったらしいです。

オンプレミスは、サーバなどのインフラ環境を整える必要があるため、時間と初期コストがかかります。それでも、自由にカスタマイズできるメリットがあります。




Pythonのpprintモジュールとは

auです。

Pythonのことを調べていると、「pprint」というモジュールを見かけます。

普通の「print」の違いを知りたくて調べてみました。

pprintモジュールとは

pprintとは、「prentty-print」の略称みたいです。

綺麗に出力するという意味っぽいですね。

その意味の通り、list型やdict型のオブジェクトを綺麗に表示したり、str型に変換する機能があります。

pprintモジュールをimportして使います。

import pprint # importが必要

list_obj = [{"name": "au", "age": 21, "points": [10, 20, 30]}, {"name": "docomo", "age": 40}, {"name": "softbank", "age": 40}]

print(list_obj)
pprint.pprint(list_obj)

# 実行結果
普通のprint:  [{'name': 'au', 'age': 21, 'points': [10, 20, 30]}, {'name': 'docomo', 'age': 40}, {'name': 'softbank', 'age': 40}] 


[{'age': 21, 'name': 'au', 'points': [10, 20, 30]},
 {'age': 40, 'name': 'docomo'},
 {'age': 40, 'name': 'softbank'}]

一列ではなく、整形された状態で出力されています。

widthで1行に表示される分量、depthで深さを知ることができるのですが、使い方は参考を読めば分かりました。
それよりも「どこから改行されるのか、...表示になるのか」を確認してみようと思います。

widthの改行はどこから?

iimport pprint # importが必要

list_obj = {"name": "docomo", "age": 40}
docomo_dict = '{"name": "docomo", "age": 40}'

print("docomoの長さ: ", len(docomo_dict), '\n')
print("width=29")
pprint.pprint(list_obj, width=29)
print("width=28")
pprint.pprint(list_obj, width=28)

# 実行結果
docomoの長さ:  29 

width=29
{'age': 40, 'name': 'docomo'}
width=28
{'age': 40,
 'name': 'docomo'}

dokomoが改行されたのは、"width=28"でした。文字列の長さが29なので、{}や半角スペースなども含めた完全なる1行の長さでした。複数オブジェクトを扱う際に「,」が含まれると思いますが、これも含まれます。
widthは1から数えているみたいですね。

depthの「...」表記はどこから?

import pprint # importが必要

# リストのリストの辞書型という構造
list_obj = [[{"name": "au", "age": 21, "points": [10, 20, 30]}]]

print("depth: ", 2, "\n")
pprint.pprint(list_obj, width=20, depth=2)

print("depth: ", 3)
pprint.pprint(list_obj, width=20, depth=3)

# 実行結果
depth:  2 

[[{...}]]
depth:  3
[[{'age': 21,
   'name': 'au',
   'points': [10,
              20,
              30]}]]

リストの(深さ+1)リストの(深さ+1)辞書(深さ+1)という構造を用意しました。
depth=2で「...」が表示されたので、深さも1から数えているみたいですね。

セキュリティーペーパーとは

auです。

セキュリティペーパーとな何なのか気になったので調べてみました。

セキュリティペーパーとは

セキュリティペーパーとは、1枚の紙毎に持出管理用の磁性体を埋め込んでいる専用用紙のことです。

この磁性体に反応するゲートがあり、持ち出そうとしてもアラームなどが鳴り、セキュリティ面で優れています。

イメージ的には、ゲーム屋さんの入り口にある、店の物を持ち出そうとすると警報がなるやつです。

機密情報を、このセキュリティペーパーに記述して管理することで、持ち出されるリスクに対して対策をすることができます。

シールなどにもすることができ、これを貼るだけでセキュリティを向上させることもできるみたいです。

IoT機器を使っている事例だと感じたので、少しだけ興味を持ちました。

印刷に対してセキュリティ効果を発揮する紙をamazonで見つけたのでリンクを貼っておきます。めちゃめちゃ高いけど。


参考

www.hek.co.jp

RSS(RDF Site Summary)について調べてみた

auです。

クローリング・スクレイピングの勉強を少しずつしているのですが、RSSという存在を知ったので調べてみました。

f:id:program-shoshinsya:20200203223030p:plain

RSSとは

RSSとは、「RDF Site Summary」の略語です。という風に記載されているものもあれば、「Rich Site Summary」「Really Simple Syndication」と表記されているサイトもありました。どれも同じものを指し、バージョンによって呼び方が変わるようです。

RSSは、ニュースやブログの見出しとなるヘッドライン情報を効率的に配信するための文書フォーマットです。

XML形式で記述されており、「RSSリーダー」というツールを使うことで、多くのサイトのヘッドライン情報の更新情報・新着情報を自動的に収集することができます。

RSSリーダーにサイトのRSSを登録することで、利用できるみたいです。

今使っているアプリもこれを使って実装できるような気がしてきました。

参考
rfs.jp

www.asobou.co.jp

ユーザーエージェントとは

auです。

ユーザーエージェントについて少し詳しく知ろうと思い、調べてみました。

ユーザーエージェントとは

ユーザーエージェントとは、サイトにアクセスした際に伝える、自分の端末の情報のことです。

例えば、どんなOSを使っているのか、アクセスした端末はどんなスマートフォンの機種なのか、検索エンジンは何を使っているのかなどの情報を持っています。

この情報を通知することで、レスポンシブデザインを設定しているサイトで、その恩恵を受けることができます。
自分はスマートフォンですよということが通知できれば、スマートフォーン用のサイトを表示、パソコンならパソコン用のページを表示するということができます。

はてなブログでレスポンシブデザインの例を見てみます。スマホ版はディベロッパーツールを使って確認することができます。

パソコン
f:id:program-shoshinsya:20200202233545p:plain

スマートフォン
f:id:program-shoshinsya:20200202233650p:plain


UIがパソコンとスマホで違っていて、レスポンシブデザインに対応していますね。

参考
ferret-plus.com

クローリングで使うサイトマップとは

auです。

クローリングを勉強しようと思い、色々なサイトを見ていると「サイトマップ」というものを見つけました。深くは知らないことだったので調べてみました。

サイトマップとは

サイトマップとは、サイト全体のページ構成をまとめたページのことです。

つまり、そのサイトにどんなページがあるのかを伝えるためのページです。

これがしっかりと整備されていることで、クローラーの手助けにもなり、ページの負荷が軽くなったり、検索順位が安定する速度も早くなります。

サイトマップは2種類あります。

昔はクローラーもHTMLサイトマップを使っていたためSEO対策に利用していましたが、今はXMLサイトマップがあるのでSEO対策にはあまり繋がらないみたいです。

HTMLサイトマップを作るプラグインが用意されているものもあるらしいです。



XMLサイトマップの方がクローリングと関係あるみたいなので、もう少し触れてみます。

XMLサイトマップを導入する際には、Google XML Sitemapsというプラグインを使うようです。
このプラグインを利用し、Google Search Consoleサイトマップを送信するだけで設定できるみたいです。

その他にも、robots.txtに「Sitemap:http://example.com/sitemap.xml」のように、XMLサイトマップの場所を検索エンジンに教える方法もあるようです。

ちゃんと容量などの制約もあるようで、サイトマップファイルに含めることのできるURLは50000件までで、ファイルサイズは50MB以下にする必要があるようです。
超えてしまう場合には、XMLファイルを分割することで対応します。


参考
udemy.benesse.co.jp

bazubu.com

www.seohacks.net

静的サイトジェネレータについて調べてみた

auです。

React Gatsbyについて調べていたら、「静的サイトジェネレータ」というシステムの一つということが分かったのですが、静的サイトジェネレータを知らなかったので調べてみました。

静的サイトジェネレータとは

静的サイトジェネレータ(Static Site Generator)とは、CMS(コンテンツ・マネジメント・システム)の一つです。

CMSについて軽く触れておくと、Webサイトを作る際に必要な知識がなくても、簡単に構築・管理・更新ができるシステムです。お手軽Webページ管理システムって感じですね。
代表的なもので、WordPressがあります。

CMSの参考サイト
www.hitachi-solutions.co.jp


話は戻りまして、静的サイトジェネレータは、記事の内容をビルド時に作成します。普通のCMSでは、記事を開いたときに内容が生成されますが、静的サイトジェネレータは記事を開く前に生成します。

このようにすることで、様々な利点があります。

  • 処理負荷に強くなる:サイトを生成する際のスループットが軽くなるため
  • 可用性が高い:CMSでは、サイトを生成するためのDBに障害が起きた場合に止まってしまうが、それがない
  • Gitで管理ができる:エンジニアにとって嬉しい(GitHub Pageしか経験ないけど)

静的サイトジェネレータは、単純なテキストファイルで生成されます。記事の内容をMarkdown形式で記述していくことが多いようです。

デメリットもあるようです。

  • 動的にできない:「静的」とついているので当たり前ですが、PHPと連携して動的なサイトを作ることには適していないようです。
  • プラグインが少ない:Word Pressよりも歴史が浅いので当然ですが、プラグインが少ないです。楽はできなさそうですが、有名なプラグインを作れば英雄になれるかもしれません。

参考
qiita.com
photo-tea.com