投稿者: よろず工房

  • クラウドサービスの利用

    クラウドサービとは
     ネットワーク経由で、色々なサービスを利用者に提供する仕組み
     提供されるサービスの特徴と代表的なサービスを挙げる

    1.SaaS(サース、サーズ:Software as a Service)

     インターネット経由でサーバー上のソフトウェアの機能を利用する
       従来はパッケージとして提供されていたモノが多い
       無料で利用できるモノが多い

     代表的な例
       Google社・・・メール、ドキュメント、カレンダー等々
       Twitter社・・・ツイッター
       Zoom社 ・・・Zoom

    2.PaaS(パース:Platform as a Service)

     インターネット経由でプラットフォームの機能を利用する
         ※プラットフォームとは基盤となる動作環境のこと
       OS、サーバー、開発環境等が提供される
       無料より有料の方が提供されるサービスが手厚くなる

     代表的な例
       Microsoft社・・・「Azure Web Apps」
         仮想マシン、OS、開発言語等々
       Google社・・・・「Google App Engine」
         開発環境、開発言語、GoogleColab等々

    3.IaaS(アイアース、イアース:Infrastructure as a Service)

     インターネット経由で用意されたハードウェアや設備を利用する
       ユーザーは何も購入・設置・運用する必要はありません
       必然的に有料になります

     代表的な例
       Amazon社・・・AWS(Amazon Web Services)
         基幹系業務でも利用される数多くの実績あり
       Microsoft社・・「Microsoft Azure」
         Web系やMobile系のAppが数多く揃っている
         

  • Webサイト作成

    前提条件(レンタルサーバー、)を置いて記述します

    1.レンタルサーバー

     Webサイトのデータを保管するサーバーのレンタル費用が必要
       数多くのレンタルサービスがあるので、その中から選ぶ

       広告の掲載が条件で無料のレンタル会社も有ります

     一般的にはCPUと大容量メモリを調べる
       提供会社によって付加されるサービスは様々
       途中解約等も考慮しながら慎重に選ぶ

    2.独自ドメイン

     サイトURLを表す独自ドメインを取得し、維持費を払う
       初回には登録料、毎年には継続料が必要
         ※サブドメインを無料で用意している会社もあります

    3.SSL証明書

     SSL証明書を発行する際に費用が必要
       サーバー管理会社によって種々のサービスがあります
         ※無料の会社も有ります

     SSL証明書を使用するじょとによって通信データの暗号化を証明する
       ユーザーは安心してWebサイトを閲覧できる

  • XML文書の展開

    構造化されたXML文書を読みやすい文章(平文)に展開する

    1.XML文書の特徴

     XML(eXtensible Markup Language)は言語の仕様のことで、「拡張可能なマークアップ言語」と訳されており、文書のもつ「見出し」「本文」・・・などの論理構造を「タグ(<>で囲む)」と呼ばれるもので記述します。要するに文書の内容一つ一つに名前(タグ)を付与し、「タグ」を検索項目として文書の内容を読み取るといった手法を使って「書き手」と「読み手」の間で間違いなく情報を交換できるといった利点があります。

    2.XML文書の例

    <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xml:lang="ja">
    
    <channel rdf:about="">
    <title>●●●日本語でタイトルを記述●●●</title>
    <link/>
    
    <description>●●●日本語で文書の内容を記述●●●</description>
    <dc:date>2021-06-26 00:00:00+09:00</dc:date>
    <dc:creator/>
    <dc:subject/>
    <dc:rights>Copyright ●●●著作権の所有者を記述●●●</dc:rights>
    <sy:updatePeriod>weekly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    </channel>
    
    <item rdf:about="●●●文書のURL●●●">
    <title>新型コロナウイルスの感染症対策</title>
    <link>●●●項目の詳細情報を掲載するURL●●●</link>
    <description/>
    <dc:date>2021-06-09T00:00:00+09:00</dc:date>
    <dc:subject>●●●副題を記述●●●</dc:subject>
    </item>
    
    </rdf:RDF>

    (例)新着情報として提供される内容
      4行目・・・文書のタイトル
      7行目~14行目・・・文書全体の説明
      16行目~22行目・・・項目の記述、項目の数だけこの部分を繰返す
        ※20行目と21行目は19行目の内容を複数行の情報で補う

    3.XML文書を読み込む

    	$i = 0;
    	$url = "●●●新着情報が掲載されているurl●●●";
    	$rss = simplexml_load_file($url);
    
    if ($rss)
      {
    	 foreach ($rss->item as $item)
    		 {
    		  $title	= $item->title;
    		  $link 	= $item->link;
    	   $desc 	= $item->description;	
    		  $date 	= date('Y年 m月 d日', strtotime($item->children("http://purl.org/dc/elements/1.1/")->date));	
       ●●●項目に対する処理を記述●●●
         }
      }
    else
      {
     	echo "エラー発生";
      }
    

     3行目・・・XML文書(ファイル)全体を取り出す命令
     7行目~14行目・・・<item>タグが存在する間、繰返す
       ※各項目(item)をタグ名で取り出す(title、link、date等々)

     概ね新着情報等は規則正しく構成されているので、丁寧に構造を観察すれば、上記サンプルを修正するだけで読み込めます。

    4.注意点(simplexml_load_file)

     テスト段階で以下の様なメッセージが表示される場合
     
      simplexml_load_file(): httWarning:ps:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /●●●エラー発生のソースライン番号●●●

     使っているサーバーが外部のXMLデータの読込を許可していないために発生するエラーです。
     先ず使用しているサーバーの「php.ini」の「allow_url_fopen」パラメーターをチエックしてください。「allow_url_fopen=0」だと読込が許可されていないので外部のXMLデータは読込めません、「allow_url_fopen=on」に変更してください。
     「php.ini」の変更ができないサーバーだと「simplexml_load_file」の命令は使用できないので別の方法(テキスト形式のファイルとして読込む方法)でお願いします。

  • アプリの開発

    技術論に陥らず、方向性を検討する

    1.アプリには2種類ある

     課題解決を図る際にプログラミングが必要となれば、「Webアプリ」と「ネイティブアプリ」とを十二分に検討する必要がある。

     Webアプリ・・・インターネット(ウェブ)などのネットワークを利用するアプリケーションソフトウェア。プログラム本体はネットワーク上のWEBサーバー内に存在し、WEBブラウザを使って操作する。よく知られる例として動画共有サービス「YouTube」やウェブメールサービス「Gmail」、インターネット電話サービス「Skype」などがあげられる。

     ネイティブアプリ・・・手元の端末(スマートフォン・PC等)にインストールして利用するアプリケーションソフトウェア。プログラム本体は手元の端末内に存在する。よく知られる例として「App store」や「Google Play」経由で配布しダウンロードされるアプリがあげられる。

    2.各アプリの特徴を理解する

     アプリ開発に先立って、2種類のアプリのどちらかを選ぶ際の参考に比較表を用意する。

    Webアプリ ネイティブアプリ
    動作環境 アプリはインターネットを介してサーバー上で動作する アプリはダウンロードしたデバイス上で動作する
    動作速度 インターネットを通してサーバー上で動くので動作が遅く感じる 直接デバイス上で動くので動作が速い
    機能 フロント部分には工夫や配慮を施せる

    バック部分では大容量のデータを複雑に取り扱うことができる
    デバイス自体が持つ機能が利用できる
     地図の位置情報
     温度・方角 等
     身体の特徴(体温)
    開発言語 フロント部分にはHTML、JavaScript、CSS等他種多様な言語を使用する

    バック部分にはPHP、Java、Ruby、Python、SQL等の多種多様な言語を開発目的に合わせて使用する

    Android版
     Kotlin

    iOS版
     Swift

    開発コスト ゼロから独自開発すると、開発コストや期間が掛か
    公開費用 サーバー運用費に含まれ、公開に対しては無料

    Android版
     初回登録約3千円

    iOS版
     毎年約1万2千円

    公開審査 不要

    Android版
     無し

    iOS版
     審査あり(数日程度)

    使用開始 ブラウザでサイトにアクセスするだけで利用できる手軽さがある

    各サイトからダウンロードする

    Android版

     Google Play経由

    iOS版
     App store経由

    継続使用 広く浅くアクセスするユーザが多く、ロイヤリティが高いとは言えない ダウンロードしてまで利用するので、ロイヤリティが高いユーザーだと言える
    課金の仕組み 課金する場合にストアを通す必要がなく、手数料を支払う必要はない 課金する場合にはストア側へ手数料を支払う必要がある

    3.大まかな基準

     以下のポイントで切り分けてみる 
      ネイティブアプリ・・・手許で手軽に使うアプリ
      Webアプリ・・・複雑なデータ処理を伴うアプリ

  • WPのカスタマイズ(C)

    「親テーマ」を修正する

     「親テーマ」が更新されると、カスタマイズを見直す必要が発生します

    1.「抜粋」の表示をカスタマイズする

  • WPのカスタマイズ(B)

    「子テーマ」を修正する

    1.ヘッダーの文字サイズを小さくする

     タイトル文字の「h1.entry-title」の文字サイズ「font-size: var(–global–font-size-page-title);」を修正してタイトルを小さく表示させる。

     現状はCSS変数として「4rem」が指定されているので、CSSを修正して文字の大きさを「2.5rem」とする。

    大きい文字(画像)
    小さい文字(画像)

     CSSの修正に際しては、要素名が直ぐには分からないのでブラウザーを使って「開発者ツール」または「デベロッパーツール」を呼び出し要素名を探し出す。WPの投稿記事をブラウザーで表示した状態で「PF12」キーを押下すれば直ぐにツールが起動します。カーソル等を移動させながら丹念に目的とする要素名を探し出します。
     要素名が分かれば、後は規則に則って修正用のCSSを用意します。

     WPは複雑にスタイルシートが定義されており、それぞれ適用させる優先順位があって中々直ぐには目的とする結果が得られない場合があります。やむを得ず「!important」パラメータを使って結果を求めることも必要です。

    @charset "UTF-8";
    
    /*
     Theme Name:   Twenty Twentyone Child
     Template:     twentytwentyone
     
     Theme URI:    ●●●省略●●●
     Description:  Twenty Twentyone Child Theme
     Author:       河内・水簾洞
     Author URI:   https://ksrd.jp/suirendou/
     Version:      1.0.0
     License:      GNU General Public License v2 or later
     License URI:  http://www.gnu.org/licenses/gpl-2.0.html
     Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
     Text Domain:  twenty-twentyone-child
    */
    	
    .singular .entry-title {
    	font-size: 2.5rem !important;
    }
    

     「親テーマ」を変更しても「子テーマ」の修正内容は影響を受けません。スタイルシートに記述されているテーマ名は覚書程度に理解してください。
     ただし「親テーマ」が使用している要素名を変えると「子テーマ」の修正内容は反映されなくなります。テーマを変更する際には事前にテスト環境での確認をお願いします。

  • 子テーマの作成

    子テーマの作成方法について
      (WordPress Codexより)

    1.子テーマの設置場所を用意する

     WPサーバーの「テーマ」が既に設置されている場所に「子テーマ」ディレクトリを「親テーマ」ディレクトリと同列の場所に追加する。

     FTPソフト等を利用して、WPの「親テーマ」が設置されている場所を探し当てる。通常「wordpress」ディレクトリの下位に「wp-content/themes/」があり既に組み込まれている「twentytwenty」等のディレクトリが存在するのが分かる。この場所が特定出来たら、同列に「子テーマ」用のディレクトリを作成する。

    設置場所(例)

     「子テーマ」設置ディレクトリの名前には「親テーマ名-child」として「親テーマ」を明示しておきます。

    2.スタイルシート(style.css)を用意する

     テキストエディターで以下の 「スタイルシートヘッダ 」で始まる「style.css」ファイルを作成して、「子テーマ」用に設置したディレクトリの配下に保存します。
     下記「スタイルシートヘッダ」CSSで、親子の関係を表すのは「Theme Name:」と「Template:」の2箇所だけなので見本通りに半角で記述します。他の箇所は「子テーマの有効化」時に確認用にこの内容が表示されますので、スタイルシートが間違いなく反映されていることを確認します。確認後に分かりやすい文言に修正できますので必要に応じて修正願います。

    /*
     Theme Name:   子テーマの名称
     Theme URI:    <適宜>
     Description:  <適宜>
     Author:       <適宜>
     Author URI:   <適宜>
     Template:     親テーマのディレクトリ名
     Version:      <適宜>
     License:      <適宜>
     License URI:  <適宜>
     Tags:         <適宜>
     Text Domain:  <適宜>
    */

     「子テーマ」でコーディングしたスタイルシート(style.css)は「親テーマ」の該当部分を置換します。

    3.スタイルシートをキューに入れる

     「子テーマ」のスタイルシートは、「子テーマ」の「functions.php」で「wp_enqueue_script()」を使用してキューに入れる必要があるので、「子テーマ」側で「functions.php」を用意する。「import」命令で親のスタイルシートを取り込む方法は現在では推奨されていません。 

     「子テーマ」の「functions.php」には「子テーマ」のスタイルシートをキューに入れる機能とスタイルシートの場所を指定します。
     「add_action」は関数「theme_enqueue_styles」を使って指定されたファイルにlinkを張ります。
     関数内の「wp_enqueue_style」は「親テーマ」のスタイルシートが存在するディレクトリと同じ場所に「子テーマ」のスタイルシートを優先させるように追加します。「識別名」は他のスタイルシートとの識別用に半角の文字列をセットしておきます。キューにセットされたことを確認する際の目印になります。

    <?php
    
    add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
    function theme_enqueue_styles()
     	{
       wp_enqueue_style( '識別名', get_stylesheet_uri() );
    	}
    

     「子テーマ」の「functions.php」には「親テーマ」の「functions.php」と同じ内容をコーディングする必要はありません。「functions.php」の内容に追加する形で出来上がります。今後「親テーマ」がどのように変更されても「子テーマ」の内容は追加された形で動きます。「親テーマ」と同じことを記述するとエラーになります。
     「子テーマ」のスタイルシートが反映されないと思われるときには、WPの投稿記事のソースを確認する。識別用にセットした文字をidパラメータの中から探し出す(link rel=’stylesheet’ id=’識別名’ ・・・・)、この方法でスタイルシートが反映される優先順位を確認してください。

    
    <link rel='stylesheet' id='wp-block-library-css'  	   	       href='https://
    <link rel='stylesheet' id='wp-block-library-theme-css' 	       href='https://
    <link rel='stylesheet' id='wp-lightbox-2.min.css-css'      	   href='https://
    <link rel='stylesheet' id='識別名'				   	                href='https://
    <link rel='stylesheet' id='twenty-twenty-one-style-css'		     href='https://
    <link rel='stylesheet' id='twenty-twenty-one-print-style-css'  href='https://
    <link rel='stylesheet' id='hcb-style-css'                      href='https://
    

    4.子テーマの「有効化」

     WPの管理画面にログインし、管理画面 → 外観 → テーマに移動します。子テーマが表示され、有効化できる状態になっているので、「子テーマ」を有効化するとカスタマイズされた内容が動き出します。

     「子テーマ」が「有効化」された後は自由に「子テーマ」のテンプレートやスタイルシートを修正してWPを利用してください。

  • 子テーマの要否

    子テーマを作成する際の考慮事項

    1.テーマについて

     テーマとはWordPress(以下WPと表記)が投稿記事に関するページを事前にデザインし、phpプログラム、画像ファイル、jQueryファイル、スタイルシート等を即座に使えるようにセットにして提供しているモノを指します。好みに合わせて複数のテーマ群から選択しWPに組み込んで使います。

     WPからは毎年お勧めのテーマが1個提供されます。2020年だと「Twenty Twenty」であり、2021年だと「Twenty Twenty-One」といった分かりやすい名前で年々デザインに改良が加わったテーマが提供されるので気に入ったテーマがあれば取り込んで自由に使うことができます。

     WPからの提供の他に、沢山のテーマがその他企業からも提供されています。投稿記事の配置やコメント受付の位置等々に様々な工夫を凝らして「お勧めテーマ」としてネット上に無料(もしくは有料)て用意されており、これらの中から自由に選び簡単な手順に従ってインストールすればすぐに利用できます。

    2.無料と有料の違い

     有料のテーマは、例えばインターネットからの集客を行うことを目的としSEO対策を施した販売促進用のWPテーマとして提供されているモノが有ります。
     一方、無料のテーマは、作成実績の見本として提供されており、いつでも要望に沿ったテーマを開発できます(オーダーメードは有料)といった宣伝材料として示されていると感じます。

    3.テーマを使用する条件とは

     無料テーマであれ有料テーマであれテーマはソースコード(原型)で提供されるのでユーザが自由に修正して使用できます。
     さらに修正したテーマを再配布することも可能です、ただし「入手した時と同じ条件で再配布する」のが原則です。ということは入手し修正したテーマに対して著作権を主張し独り占めすることはできません、必ず入手条件に従って再配布することで成り立っているのがWPテーマの特徴です。

     次々と新しい内容のテーマが各社から提供されることの要因になっています。

    4.テーマを修正すると

     お気に入りのテーマにするために修正を施して使ったとすると、その後もっと好みに合ったテーマが見つかった時には難しい選択を迫られることになります。
     全面的に前のテーマを破棄して新しいテーマを使うのであれば、WPに新しいテーマを取り込めばすぐに問題なく使えます。
     前のテーマに施した修正内容を残して使いたいとなった場合には、新しいテーマに同じ内容の修正を施さないといけなくなります。

     新しいテーマに変えるたびに繰り返し修正作業を行うのは非効率になります。

    5.親テーマと子テーマ

     提供されたままのテーマを「親テーマ」とと呼び、修正したい部分だけを抜き出したテーマを「子テーマ」と呼び、繰り返し修正作業が発生することを防止します。
     まず「親テーマ」を使って基礎を築きます、次に「子テーマ」の内容を基礎部分にオーバーラップさせて使用します(上書きされた格好になります)。双方の内容がWPの規約に則ってさへいれば、「親テーマ」がどのように作成されていても「子テーマ」が間違いなく反映されます。

     「子テーマ」作成の必要性はこの点です。

  • Web上でPythonを動かす

    exec()コマンドでアプリとしてpythonプログラムを呼び出す

    1.phpのコーディング

     コマンドの文字列を用意する。
      先頭にpython起動コマンド、次にpythonブログラムへのパスを指定する。絶対パスでも相対パスでもよく、事前に十分確認しておく。

    $command = "python /・・・/・・・/・・・/test.py";
    exec($command, $output);

     execでコマンド文字列を呼び出す。第一引数の文字列のコマンドを実行し,処理結果を要素として第二引数に配列として出力(セット)する。

    2.pythonのコーディング

     処理結果はprint文で出力する。print文1個が出力エリア内の1要素(配列)となる。

    print('test1')
    print('test2')

    3.処理結果の確認

     処理結果の内容を一度は確認しておくことを勧める。処理結果は配列で返されるので、内容を実際に目で見てその後の処理等を考えておく。

    $command = "python /・・・/・・・/・・・/test.py”;
    exec($command, $output);
    print "$output[0]\n";   /*python1個目の内容(test1)を出力*/
    print "$output[1]\n";   /*python2個目の内容(test2)を出力*/

    4.引数の扱い(途中)

    5.日本語の扱い(途中)

  • コーディング規約

    「pep8(Python Enhancement Proposal)」から具体例を引用する。
      具体例を参考にし、開発環境に即して修正願います。

    1.インデントのスペース数を揃える

     「スペースは4つ」で揃えるとあるが「2つ」で問題なし。

    if num % 2 == 0:
      msg = "偶数"

    2.1行の長さは79文字まで

     「79文字以内」に制限するとあるが、読みやすさの観点からも制限を設ける方がよい。行の途中での改行は「\(半角バックスラツシュ)」を使用する。

    print(100 + 200 + 300 +\
          400 + 500)

    3.文字列の引用符を揃える

     Python では、シングルコーテーション「’」で囲まれた文字列と、ダブルコーテーション「”」で囲まれた文字列は同じで扱い。どちらかに揃える。
     文字列の中に引用符を含む場合は、逆の引用符を使う。

    str = "括弧の中についてはコーテーション'で囲む"

    4.式や文中の空白文字

     開始括弧 ( の直後や終了括弧 ) の直前には空白文字を入れない。
     カンマ 、 やセミコロン : の直前には空白文字を入れない
     カンマ 、 やセミコロン : の直後には空白文字を入れる

    print("空白文字を入れない")
    print("直前には入れない", "直後には入れる")

    5.演算子の前後に空白文字を入れる

     見易さの観点で空白文字を演算子の前後に入れる。

    weight = height * height * 22

    6.無駄なスペースは入れない

     最初は項目が揃って見易いが、その後の変更で項目の長さが変わったりすると、結果的に最初に入れたスペースは見にくくなる。

    #
    # 悪い例
    height = 1.8
    bmi    = 22
    weight = height * height * 22
    #
    # 良い例
    height = 1.8
    bmi = 22
    weight = height * height * 22

    7.スライスのコロンの前後に空白文字は入れない

     見易さを優先させる。

    list1[0:2]
    list2[::2]
    list3[4::-1]

    8.import文は行を分ける

     取込む内容を明確にする。

    #
    # 悪い例
    import item1, item2
    #
    # 良い例
    import item1
    import item2

    9.命名規則

     関数や変数
      全て小文字を使用する。単語と単語はアンダースコア(_)で区切る。
     定数
      全て大文字を使用する。単語と単語はアンダースコア(_)で区切る。
     クラス
      先頭一文字を大文字にする。
     その他
      適宜「pep8」を参照して決める。