おすすめ記事

  • Illustratorの代替ソフトウェアを調べてみた

    個人的にはAdobeのCCを契約していて問題ないです。

    ( 2019年 8月現在、就職してフリーの仕事がほぼなくなったのでフォトプランにしました。イラレ作業はアイコン作るくらいだったので、後述の通りXDに完全に移行しています。)

    しかしながら「製品の作図をする」ためにCC契約したいと言ってる知り合いがいまして、
    本業で毎日のように作図するではないようなので、それは契約には釣り合わない用途ではないかと感じました。

    その程度の用途であればフリーのベクターを扱えるソフトで十分ではないかと思ったのでどんなものがあるのか調べてみました。

    ツールを使うには学習コストがかかるので、それを考えると契約してもいいのかもしれないですけどね。

    ベクター、ベジェを扱うソフトということで集めています。

    XDはいいぞ!事足りることもあるぞ!

    2019/8/11 追記

    XDで足りる用途もあると思うので、以下の記事もぜひみてみてください。
    リンク先記事の範囲であればXDは無料で利用できます。
    (共有数に制限があるのみなので実はほぼ無料のツールなんです!)
    ぜひ読んでみてください。

    https://logzitsu.tlog.work/illustratorno-dai-tisofutohaxdde-juemari/

    Affinity Designer

    2019/6/17 追記

    https://blog.kamijin-fanta.info/2019/06/affinity-designer/
    有料ソフトだけど結構良さそうです

    Gravit Designer

    https://www.designer.io/
    すごくリッチそうです。
    機能的にはかなり充実してそう。でもそのぶん、覚えるコストがあるかも。

    Vectr

    https://vectr.com/
    オンラインでも使えるみたいです。
    作ったものを誰かに見せるとかもスムーズにできそうです。
    割とシンプルそうなので、多機能が必要ない場合はこれがいいかもしれませんね。
    cmなど単位の切り替えもできるみたいです。

    inkscape

    http://inkscape.softonic.jp/
    Illustratorの代わりといえば昔からこれだった。
    でもよく落ちる印象があり、なんとなく成果物もクオリティの低いものになりがちだった記憶があるのであまりオススメしません。
    アイコンの作成に使っても、レイアウトには使わない方がいいかも。

    その他

    もっといえば、パワーポイントとか、keynoteとか、googleスライドでもなんとかなると思うんですよね。工夫次第。

    以上でーす

  • ヘッドレス Chrome を使えるようになりたいのだ!

    「ヘッドレス」 ブラウザってなに?

    みなさんがネット今見ているもの、それがブラウザです。
    「前に戻る」「アドレスバー」など様々な部品で構成されていますが、そういった目で見えるものがなく、クリックではなく命令言語で動かせる。
    それが「ヘッドレス ブラウザ」なのです。

    それってなんの意味があるの?

    よく「業務が自動化できる」ということがメリットに挙げられます。
    言葉としての意味はその通りなんでしょうが、なんとも非常にピンとこない。
    個人的にはこれからの時代は「AIがお金を稼いでくれる」という言葉にも同じものを感じます。
    噛み砕いて説明しますと、普段皆さんはブラウザで仕事をすることが多いと思います。
    たとえば「Aというサイトからとある製品の金額を調べてファイルに記載する」という作業があったとします。これを分解すると

    • ブラウザを立ち上げる
    • アドレスバーに「A 製品名 金額」などと検索ワードを打ちます。
    • 表示された検索結果から A社の目的の製品のページを探し、サイトを表示します。
    • 製品の金額を探しコピーします。
    • ファイルを開き、書き込み保存します

    といった流れになります。
    もしこれが毎日必要なタスクだったとすると、
    このタスクを「ヘッドレスブラウザで毎日自動で3時に行う」 と設定します。

    • 特に作業なし

    となります。ヘッドレスブラウザがちゃんと動くようにさえしておけば何もする必要がないのです。
    これが「業務の自動化」です。
    ただし、検索する製品が同じ場合に限ってしまいます。
    この製品を自動で見つけて検索させるとなると、非常に複雑な命令になってしまうと思います。きっと。

    ルーティーンで大量な作業をさせるのは非常に得意なものになります。
    「スパム」なんて一般的に言われてるものも、こういった自動化作業の負の産物なのかもしれません。

    ウェブスクレイピング というネット上から情報を集めてくるものもこれで可能になるはずです。

    どーやってつかうのさ

    PCのターミナル/コマンドラインというところから命令を送ります。
    それだと別にあんまり便利ではないので、命令を記載したファイルを用意しておきそれをアプリから実行することが可能です。
    node.jsというものを使うのが一般的みたいですね。pythonでも動かせるみたいです。
    自分のPCからnode.jsで動かすことはもちろん可能ですが、node.jsが動く「サーバー」で自動化作業をさせるのもよくあることみたいです。

    こうすると、自分のパソコンの電源を常に入れておく必要がなくより自動感がありますね。

    利用環境を整えよう

    今回はサーバーで動かすまで行かないで、自分のパソコンでヘッドレスブラウザを動かすところをやって見たいと思います。
    偉そうに講釈を垂れてますが、自分も触るのはこれが初めてです。

    参考 こちらの記事
    https://developers.google.com/web/updates/2017/04/headless-chrome?hl=ja

    なんか、簡単に扱えるライブラリがいくつか存在するみたいです。
    「chromy」 と 「puppeteer」

    比較してる記事がありました
    http://techblog.raccoon.ne.jp/archives/52414951.html

    「puppeteer」が一応公式開発のものみたいなのでこちらの情報を収集して頑張っていきたいと思います。

    OSは mac
    ターミナルは vscode によってやりたいと思います。

    一応「puppeteer」なしで動かします。

    とりあえず動かす。

    chromeをインストールして、

    適当なフォルダを作成。vscodeで開きます。

    chromeのインストール場所を指定します。(以下はmacの場合)

    alias chrome="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome.app"
    

    PDFの撮影をしてくれます。

    chrome --headless --disable-gpu --print-to-pdf https://google.com/
    

    puppeteer をインストールする

    先ほど作ったフォルダで継続して行います。
    nodeをインストールしてある環境なので「npm」でやっちゃいます。
    未導入の場合は以下からインストールで
    https://nodejs.org/ja/

    npm install puppeteer
    

    ではtest.jsを作っていきましょう。

    test.js

    const puppeteer = require('puppeteer');
    
    (async () => {
        const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
        const page = await browser.newPage();
        await page.goto('https://www.yahoo.co.jp');
        await page.screenshot({ path: 'screenshot.png', fullPage: true });
        await browser.close();
    })();
    

    実行は以下の通り

    node test.js
    

    「yahoo」のスクリーンショットを取ってくれます。(すげぇ)

    puppeteerでなにができるか知りたいんだよなぁ・・・

    配布先でapiの説明があります。
    https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md

    英語が苦手なのが恨めしいですなぁ

    googleで検索して1位のサイトをスクショ

    const puppeteer = require('puppeteer');
    
    (async () => {
        const browser = await puppeteer.launch({ headless: true });
        const page = await browser.newPage();
    
        // Googleにアクセス
        await page.goto('https://www.google.co.jp/');
        // 検索窓に「logzitsu」と入力
        await page.type('#lst-ib', 'logzitsu');
        // 検索ボタンクリック
        await page.focus('input[name="btnK"]');
        await page.click('input[name="btnK"]');
        // 遷移完了を待機
        await page.waitForNavigation();
        // 検索結果の先頭リンクをクリック
        await page.click('.rc > .r > a');
        await page.waitFor(5000);
        // ページタイトルを表示
        const title = await page.title();
        console.log(title);
    
        // スクリーンショット
        await page.screenshot({ path: 'ss.png', fullPage: true });
    
        await browser.close();
    })();
    

    googleサイトのロゴ画像を保存

    const puppeteer = require('puppeteer');
    const fs = require('fs');
    
    (async () => {
        const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
        const page = await browser.newPage();
    
        // ページ作成
        await page.goto('https://www.google.co.jp/');
        await page.waitFor(2000);
    
        // ページタイトル出力
        console.log(await page.title());
    
        // URL出力
        console.log(await page.url());
    
        //特定の場所のテキストを出力 今回は右上のナビのclassを指定
        const texts = await page.$eval('.gb_P', item => { return item.textContent });
        console.log(texts);
    
        // スクリーンショット撮影
        await page.screenshot({ path: 'screenshot01.png', fullPage: true });
    
        //ロゴ画像ソースの取得
        var imgurl = await page.$eval('#hplogo', el => el.src);
        var viewSource = await page.goto(imgurl);
        fs.writeFile("./logo.png", await viewSource.buffer(), function (err) {
            if (err) {
                return console.log(err);
            }
            console.log("画像を保存したよ");
        });
    
        await browser.close();
    })();
    

    めっちゃ汎用性あるなぁ。
    もーちょいいろいろ組み合わせるといろんなことができそうな予感です。
    メールで結果を送ったり、チャットワークにメッセージを送ったりね・・・。

    https://logzitsu.tlog.work/node-js-%E3%81%A7-%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E9%80%81%E3%82%8B/
  • WordPressサイトを無料で…?できらぁっ! な「XFREE(旧Xdomain無料サーバー)」で WordPressサーバーを借りてみよう。

    2018年12月中旬に サービス名がXFREEになってます。
    おそらく基本的な使い方は変わらないです。2018/12/28 追記

    XFREEとは

    安定して優秀なサーバーとしてXSERVERが有名なのですが、その会社のドメイン提供サービス・・・・からさらに独立した無料サーバーサービスです。

    こちらのサイトは広告がついてしまうなど制限はありますが、ありがたい事に無料でサーバーを借りることができるのです。

    おためしで、そして学習用に借りるにはもってこいのサービスになっています。
    気に入ったらドメインを、そしてエックスサーバーを利用してあげてくださいね。

    XFREEの無料サーバーを借りよう

    早速借りてみましょう。
    お申し込みにはPCメールアドレスが必要ですので持っていない人は先に取得しておきましょう。

    https://www.xfree.ne.jp/

    エックスドメインはこちら

     

    サイトにアクセスし、
    グローバルメニューの「無料レンタルサーバー」へ移動しましょう。

    サイト中段の「サーバーご利用お申し込み」をクリック!

     

    「無料レンタルサーバーお申し込み」をクリック!

     

    入力欄にメールアドレスを入力してください。
    メールがおくられてきますので、メールに記載の【お申し込みURL】にアクセスし登録を継続しましょう。

     

    必要事項を入力していってください。

     

    管理画面にログインし、「無料レンタルサーバー」へ移動。

     

    サーバーIDを決めてください。入力が終わったら再度「無料レンタルサーバー」へ移動すると画面が変わっています。

     

    WordPress の部分の「利用開始する」をクリックしてください。
    クリック後またまた、「無料レンタルサーバー」をクリックしてください。

     

    WordPressサービスの管理パネル画面にログインすることができるようになっていますのでログインしてください。

     

    WordPressサービスの管理パネル


    新規インストールをクリックで、ワードプレスがインストールできちゃいます。

     


    上記の画像の通り内容を入れてください。URLと書いた部分は空欄でも大丈夫でした。
    決定し進んでいき、「確定(wordpressをインストール)」をクリックするとインストールされます。
    パスワードはインストール後表示されますのでしっかり控えておきましょう。

     

    完了です。これでワードプレスにログインできるようになります。
    お疲れ様でした。



     

    続いて「Wordpress」の使い方について解説していきたいと思います。

     

    https://logzitsu.tlog.work/wordpress-manual/

  • 知らないとテーマが作れない!5分で学ぶwordpress テンプレートタグ一覧

    こちらの記事は随時更新したいと思います。

    テンプレートタグとは

    ワードプレスの独自タグをテンプレートタグと言います。

    通常のPHPも知っていた方がいいので
    https://logzitsu.tlog.work/wp-php/
    こちらを見てください。この記事の内容の意味がわかればギリギリなんとかなるかも。

    よく使うものを知っておきましょう。
    テンプレートタグの傾向
    get となっているものは取得。
    the となっているものは出力までしてくれます。(ehco 不要)

    構築時に必要となるもの

    テーマスタイルシートの場所(cssと画像のパス)

    <?php echo get_stylesheet_directory_uri(); ?>
    

    使用例

    <!-- 画像に使う場合こんな感じ -->
    <img class="img-fluid" src="<?php echo get_stylesheet_directory_uri(); ?>/img/logo.png">
    
    <!-- スタイルシート読み込みはこんな感じ -->
    <link href="<?php echo get_stylesheet_directory_uri(); ?>/style.css" rel="stylesheet">
    
    <!-- JavaScript読み込みはこんな感じ -->
    <script src="<?php echo get_stylesheet_directory_uri(); ?>/js/script.js"></script>
    

    サイト情報

    // サイトのタイトル
    <?php bloginfo( "name" ); ?>
    
    // サイトのサブタイトル
    <?php bloginfo( "description" ); ?>

    サイトURL

    <?php echo home_url(); ?>

    使用例

    <!-- トップへのリンク -->
    <a href="<?php echo home_url(); ?>">TOPページへ</a>
    

    WPで必要な css / js などを出力してくれるやつ

    header.phpの「headタグ内の一番下」に追加

    <?php wp_head(); ?>
    

    WPで必要な htmlを出力してくれるやつ

    footer.phpの「bodyタグ内の一番下」に追加

    <?php wp_footer(); ?>
    

    bodyにページ別のクラスをつける

    これがついてるかついてないかで扱いやすさに雲泥の差がでますので忘れずつけましょう。

    <body <?php body_class(); ?>>
    

    パーツ系

    パーツを読み込む時に使います。

    <?php get_header(); ?>
    <?php get_footer(); ?>
    <?php get_sidebar(); ?>
    <?php get_template_part( パーツの名前 ); ?>
    

    特定のテンプレートのみでCSS/JSの読み込み

    テンプレートのヘッダー読み込みの上あたりに足すと読み込んでくれます。
    以下はテーマフォルダ内の
    「css/custom.css」 「js/custom.js」を参照する場合です。
    最初の引数はidになるので、識別しやすいわかりやすい名前をつけるといいです。
    読み込む順番を自邸することもできますがここでは割愛。

    <?php wp_enqueue_style( 'page-css', get_stylesheet_directory_uri() . '/css/custom.css'); ?>
    <?php wp_enqueue_script( 'page-script', get_stylesheet_directory_uri() . '/js/custom.js' ); ?>
    

    ループ関連

    メインループ(省略形)

    <?php while (have_posts()): the_post(); ?>
    <?php endwhile; ?>
    
    
    
    <?php //別の書き方
    if ( have_posts() ) {
    	while ( have_posts() ) {
    		the_post(); 
    		//
    		// 投稿がここに表示される
    		//
    	} 
    }
    ?>

    サブループ(例)

    <?php
    $args = array( 
    'post_type' => 'post', // カスタムポスト名
    'posts_per_page' => 5 // 投稿件数の指定
    );
    $the_query = new WP_Query($args);
    if($the_query->have_posts()):
    ?>
    <?php while ($the_query->have_posts()): $the_query->the_post(); ?>
    
    <!-- 記事タイトル -->
    <?php the_title(); ?>
    
    <!-- 記事内容 -->
    <?php the_content(); ?>
    
    <!-- 記事リンクURL(タイトル付き) -->
    <a href="<?php the_permalink(); ?>">
    <?php the_title(); ?>
    </a>
    
    <!-- 日付 -->
    <?php the_time("Y.m.d"); ?>
    
    <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>
    <?php else: //投稿がない場合 ?>
    
    <?php endif; ?>
    

    ループ内で使うもの

    記事タイトル

    「ループ内で使うもの」の欄でいきなりですが、これはループ外でも動きます。

    <?php the_title(); ?>
    

    記事内容

    <?php the_content(); ?>
    

    サムネイル

    <!-- 普通に出す -->
    <?php the_post_thumbnail(); ?>
    
    <!-- サイズを指定する(独自設定可) -->
    <?php the_post_thumbnail("thumbnail"); ?>
    <?php the_post_thumbnail("medium"); ?>
    <?php the_post_thumbnail("large");?>
    <?php the_post_thumbnail("full"); ?>
    <?php the_post_thumbnail("index_thumbnail");  //設定していれば任意の名前 ?>
    
    <!-- 画像がない時になんか表示する -->
    <?php 
    if(has_post_thumbnail()){
    the_post_thumbnail();
    }else if{  ?>
    <!-- 代わりの画像 -->
    <img src="default.png" alt="画像設定されとらんが">
    <?php } ?>
    
    <!-- bootstrap用 -->
    <?php the_post_thumbnail( 'full', array('class' => 'img-fluid') ); ?>
    
    <!-- ファイルパスのみ出力 -->
    <?php echo get_the_post_thumbnail_url (); ?>
    
    
    

    記事リンクURL

    <?php the_permalink(); ?>
    

    カスタムフィールド(ACF)の出力

    カスタムフィールドを便利に使えるプラグインを使った場合の出力です。

    advancedcustomfields

    <?php the_field('カスタムフィールド名'); ?>
    
    
    //繰り返しフィールド(スライダ)
    <div class="slide">
    <?php if(have_rows('repeater_field_names')): ?>
    <?php while(have_rows('repeater_field_names')): the_row(); ?>
    <div class=""><a href="<?php the_sub_field('sub_field_names'); ?>">
    
    <?php
    $image = wp_get_attachment_image_src(get_sub_field('img_cf'), 'full');
    ?>
    <img src="<?php echo $image[0]; ?>" alt="" />
    </a></div>
    <?php  endwhile;else :endif; ?>
    

    次の記事、前の記事

    ループ外側に設置してください。

    <!-- 個別記事 -->
    <?php previous_post_link(); ?>
    <?php next_post_link(); ?>
    
    <!-- 一覧ページ -->
    <?php previous_posts_link(); ?>
    <?php next_posts_link(); ?>
    

    WP-PageNavi プラグインのページ送り

    WP-PageNavi

    <?php wp_pagenavi(); ?>
    

    カテゴリー

    <!-- カテゴリー -->
    <?php the_category(); ?>
    
    <!-- タグ -->
    <?php the_tags(); ?>
    

    日付

    上の方を使うとアーカイブ一覧で同日の日付は出力されない。出力したい場合は下を利用。

    <!-- 日付 -->
    <?php  the_date(); ?>
    
    <!-- 時間 -->
    <?php  the_time(); ?>
    

    パンクズリスト

    https://ja.wordpress.org/plugins/breadcrumb-navxt/
    <div class="breadcrumbs" typeof="BreadcrumbList" vocab="http://schema.org/">
      <?php if(function_exists('bcn_display'))
      {
       bcn_display();
      }?>
    </div>

    functions.phpで使うもの

    //テーマでthumbnailをサポートする
    add_theme_support( 'post-thumbnails' );
    
    //新たに画像サイズを追加する
    add_image_size( 'original-size', 500, 300,true); 
    
    //ページ送りにclassを追加する(一覧)
    add_filter( 'previous_posts_link_attributes', 'add_prev_posts_link_class' );
    function add_prev_posts_link_class() {
      return 'class="prev"';
    }
    add_filter( 'next_posts_link_attributes', 'add_next_posts_link_class' );
    function add_next_posts_link_class() {
      return 'class="next"';
    }
    
    //ページ送りにclassを追加する(個別)
    add_filter( 'previous_post_link', 'add_prev_post_link_class' );
    function add_prev_post_link_class($output) {
      return str_replace('<a href=', '<a class="prev" href=', $output);
    }
    add_filter( 'next_post_link', 'add_next_post_link_class' );
    function add_next_post_link_class($output) {
      return str_replace('<a href=', '<a class="next" href=', $output);
    }

    参考:https://www.nxworld.net/wordpress/wp-add-class-previous-posts-link-and-next-posts-link.html

  • WEB更新担当必見!WordPressの基礎的な概念について知ろう!

    ワードプレスをとりあえず触りたい人は次の記事を読んでからこちらに移るといいかもしれません。

    https://logzitsu.tlog.work/xdomein/

    https://logzitsu.tlog.work/wordpress-manual/

    事前理解

    基本編

    ・ワードプレスはサーバーにインストールして利用するものである。
    ・データベースと接続し利用する。
    ・データベースにはさまざまな情報が入っており、それを引き出して表示している。
    ・ワードプレスはphp データベースはMySQL を利用している。

    ・htmlを出力するプログラムなので、今まで習得してきた、htmlや、cssの知識はそのまま活かせます。
    ・繰り返し出力 が多いのでidではなくclassを使うように心がける。

    ワードプレスができること

    ワードプレスはCMSと呼ばれる、ページを簡単に作成できるシステムです。

    その他の代表的なCMSといえば、様々な会社で運営されている「ブログサービス」です。
    ワードプレスはそういった「ブログのような仕組み」を個人で作成し、カスタマイズして利用することができます。
    ブログサイトだけでなく、コーポレートサイトなどに使われることも多いです。
    一見ブログっぽくないサイトも実はワードプレスであることがよくあります。

    このシステムにより、個人でも大規模なサイトを作成できるようになったのです。

    ワードプレスってセキュリティに弱いの?

    決してセキュリティに弱いわけではありませんが、度々乗っ取り被害などが発生しているのを耳にします。
    ワードプレス、もしくはプラグインにセキュリティーホールがあるとそこをつかれます。
    最新のアップデートをすることで危険は最小限に抑えることができます。
    バージョンの自動アップデートを止めていたりすると非常に危ないです。

    ワードプレスは数多くのサイトで採用されているため、狙われやすいのです。
    知識のない人が「独自で作ったCMS」の方がセキュリティに穴があるものが多いと思います。
    しかし、他で使われていないという点で安全です。攻撃者に仕様が把握されてしまうとやりたい放題だと思いますのでご注意を。

    ワードプレスの独自の概念や単語を理解しよう。

    Thema

    ワードプレスはテーマを切り替えることにより見た目を切り替えることができます。
    ワードプレスにおける制作とは顧客のためのオリジナルテーマを作成することです。

    Themaフォルダ

    wp-content → Thema にあります。
    主に触るのはここです。
    wp-content 以外のフォルダを触ることは少ないので覚えておきましょう。

    プラグイン

    足りない機能は、「プラグイン」という形で補うことができます。
    functions.phpという、機能拡張のためのファイルがありますので、ここに命令を記載し、プラグインを使わないということもできます。
    投稿ページ(single) / 固定ページ(page)
    ワードプレスはページに2つの区分けがあります。
    ブログのようにページがどんどん増えていくものは投稿ページ。
    一度作ってしまえば内容があまり変わらないものを固定ページで作成します。
    固定ページは親子関係を作れるという特徴があります。

    カスタム投稿

    投稿ページ、固定ページのほかに投稿の仕組みを追加できます。
    functions.phpに命令を書くのですが、CPTUIというプラグインを使うと簡単にできます。

    親子関係

    親子という概念も知っておきましょう。

    図のような感じです。

    パーマリンク

    サイトのurl構造の設定のことです。
    設定の更新を忘れると正常に動かない不具合がおきることがあるので、思い出したら更新する癖をつけましょう。

    スラッグ

    ページなどを識別するための単語。投稿ページ・固定ページ・カテゴリなどなど様々なところで出てきます。URLに使われたり、とっても重要なものです。

    タイトル、コンテンツ

    記事内から入力できます。テンプレートタグに出力用のタグを記載しておくことで出力できます。

    アイキャッチ、サムネイル

    記事に設定する画像です。
    一覧ページなど、ほかのページで呼び出すことができます。

    テンプレートタグ

    ワードプレスの独自タグです。
    ワードプレスを使ってないphpでは動かないので注意。

    カスタムフィールド

    タイトル、コンテンツ以外に入力欄を使いたいことがあります。
    そういった場合に増やす入力欄です。
    デフォルトのものは使いにくいのでACFというプラグインを使うことが多いです。

    カテゴリー・タグ

    ページに分類の情報をつけることができます。検索で使えたり同一カテゴリーの一覧ページなどを作ることができます。カテゴリーとタグは非常に似ており違いもあまりないのですが、ブログをやったことをある人は感覚的にわかるのではないでしょうか。
    カテゴリーは階層を作れます。
    カスタム分類 (カスタムタクソノミー)
    カテゴリー・タグ以外の分類を追加をすることもできます。
    これもCPTUIプラグインを使うとかんたんです。
    タクソノミ:カテゴリー・タグなど
    ターム:カテゴリーにおける単語

    例:
    タクソノミー → 「フルーツ」・ターム → 「りんご・ばなな・みかん」

    ループ(メインループ、サブループ)

    繰り返し処理に用いる記述です。
    記事の出力部分などなど繰り返しっぽくないところにも使うので注意。

    サブループは条件をしっかり固めてあるので、どこに書いても同じ動きをします。
    同一ページに複数置くことも可能です。
    サイドバーの記事一覧などに使います。

    メインループは、同じ記述でもどのテンプレートに書いてあるかで違う動きをします。
    基本的にはページにひとつだけ書きます。
    こちらはページ送り機能を動かすことができます。

    Themaファイル内のファイルを見慣れよう

    テーマファイルのルール

    ・ファイル名が重要です

    など、名前が役割を表します。名前と役割を把握しておきましょう。
下の主要なテンプレート一覧を参照。
    ・ファイルの置き場所も決まってます

    テーマフォルダ直下におきます。

    style.css以外のcssや画像など、テンプレート内で用いるファイルは任意の場所でOK
    主要なテンプレートファイルと役割

    style.css

    スタイルシート。

    index.php

    基本のテンプレート。本来は投稿一覧ページとしての役割を持たせるものですが、TOPページのテンプレートでもあるので中身はいろいろです。

    パーツ用のテンプレート

    header.php
    footer.php
    sidebar.php
    文字通りヘッダーやフッターで使われるものです。

    page.php

    固定ページテンプレート。
    特定のページ専用は「page-スラッグ.php」とする。

    single.php

    固定ページテンプレート。
    カスタム投稿 専用は「single-スラッグ.php」とする。

    archive.php

    一覧ページ用テンプレート。
    カスタム投稿 専用は「archive-スラッグ.php」とする。
    category.php
    tag.php
    taxonomy.php
    タグ・ カテゴリー・タクソノミー用の一覧ファイルです。

    404.php

    ページが見つからない場合のファイル。忘れずに設置しましょう。

    テンプレートには読み込み順序があります。

    たとえば、ユーザーが投稿個別ページを表示しようとした場合に

    single-post.php がなければ
    single.php がなければ
    singler.php がなければ
    index.php

    が利用されます。
    次の表の通りです。
    どのテンプレートが使われているかはbodyに
    bodyclassが使われていればある程度推測できます。

    テンプレート階層

    TECH::CAMP(エンジニアスクール)
  • Mac Book Air Early 2014 に 1TBのSamsung SSD 960 を載せてみた

    旧型Mac book AirのSSD換装!

    【キャッシュレスで5%還元】SAMSUNG製 SSD 960 EVO M.2 MZ-V6E1T0B/IT 1TB

    MacBook AirのSSD 換装に挑戦してみる

    通常は512GBまでしか選択肢しかないMacBookですが1TBにしてみました。
    当然ながらSSDの入れ替えはAppleの保証対象外になりますのでやる場合は自己責任でお願いします。

    2014年に買ったMacBook Air 。
    1月ぐらいのアップデート(多分スペクターとかメルトダウン対策)で致命的に調子が悪くなりパソコンを買い換えようか迷っていた時期もありましたが、
    2018年 3月くらいのアップデートでだいぶ安定して使えるようになってくれました。

    その不安定さ以外で不満を感じている部分といえばCPUの非力さと容量です。
     Illustrator や Photoshop のサイズの大きいファイルを開いた時にさすがに動作がもったりします。
    そして保存容量が最低の128 GB だったので、これ以上どんなソフトも入れられず写真や曲も入れられないということでした。動画編集とかしたいのに・・・。
    とはいえもう一台、windowsのデスクトップPCを所有しており、パワーを使う作業はそちらに任せていたので、あまり困ってはいなかったのですが。

    air旧モデルに搭載されたディスプレイも今となっては解像度の低いものですが、個人的にはそこはそんなに不満に感じませんし、筐体やキーボードなども結構気に入っているのでそのまま使い続けたい気持ちもそこそこあったのです。

    そこで容量を増やして延命を測ろうと思いました。

    保存容量を増やせば不満の一つも解決するし、新モデルやバージョンアップあったらその時に乗り換えよう、と思ったので思い切って容量を増やしてみることにしました。

    しかし、SSD換装について調べてみるとApple製品のSSDは特殊な規格形式らしくめちゃくちゃ金額が高いようでした。


    これは流石に高い・・・。

    追記:記事作成時の2018/9/18ごろは9万円ほどだったのですが、11月になるとちょっとお求め安い価格になってますね。
    トランセンド TS960GJDM820 [960GB JetDrive 820 SSDアップグレード PCIe Gen3x2 TLC MacBook Pro/MacBook/Mac mini用]
    アダプターを介するとスリープがうまくいかないという不具合があるので上記の値段に不満がない方はその方がいいかもです。

    しかし、High Sierra からSSD がアダプターを介して、通常規格のSSDが使えることがわかりました。
    M.2 SSDのnvneという規格が使えるようです。
    めっちゃ早い規格らしいです。
    1TBで約50,000円(2018年8月ごろ)。高いですが、デスクトップで M.2 SSD を利用できるデスクトップパソコンを持っていましたので今回 SSD の換装に失敗してしまっても無駄にはなりません。

    高いですけどね・・・。

    SSDを購入しちゃった

    買ったのはこれー


    追記:購入時5万だったんですけど、11月現在 3万円程度になってます。正直安すぎです!
    今後どういう値動きになるかは予想できませんので、今すぐ買ったほうがいい!(2018/11/14)

    自分のPCは「 MacBook Air (13-inch, Early 2014)」です。
    結構年で仕様が変わってるみたいなので購入はよく調べてからしてください。

    SSD端子 変換アダプター

    M.2(NGFF type 2280)SSD (AHCI&NVMe) から Apple Macbook Air 2013, MacBook Pro (Retina, 13-inch&15-inch, late 2013) A1465 A1466 A1502 A1398 用 128G 256G 512G SSDに変換するアダプタ

    (この商品のレビューでは問題ないので大丈夫だと思いますが、他の商品ページで買ったらアダプタが微妙に会わなくて端子を削ったという・・・。良い子は絶対に真似しないように。ハマらなかったら返品しましょう。)

    MacBook Airは簡単に開けられないよう星型ねじになってますので
    ドライバーセットも買いました。


    換装作業をします

    作業は自己責任でお願いします。またSSDの交換はAppleの保証対象外になる行為です。
    本ブログはこの記事で起こった問題の一切の責任を取りません。

    作業の流れ

    • 現状のバックアップ(タイムマシン作成)
    • USB起動ディスクの作成(*High Sierra以降にすること)
    • 裏蓋を開けてSSD交換
    • USB起動ディスクからOSのインストール もしくは↓
    • バックアップから旧SSD環境の復元

    とりあえずバックアップを取っておく

    まず、タイムマシンなどでバックアップを取っておきましょう。作業で純正SSDが壊れて泣いてもしらないですよー。

    現在のパソコンの状況を保存して、新たに接続するSSDで再現するためにも使えます。
    クリーンインストールも可能ですが、やはり元データは残しておきたいですよね。


    タイムマシン用の、外付けHDDが必要になりますので、持っていない人は合わせて買っておくと慌てることがありません。

    USBで起動ディスクを作りましょう。

    USBで起動ディスクを作ります。
    差し替え後にからっぽのSSDの代わりに、このUSBディスクから臨時でOSの起動とインストールを行います。
    High Sierra もしくは Mojave のインストールディスクです。
    参考 → https://support.apple.com/ja-jp/HT201372

    こういった、16GB以上のUSBが必要です


    High Sierra以上でないとSSDを全く認識してくれないので注意してくださいね。
    (ベースに入ってる古いOSのディスクユーティリティでうんともすんとも言わず「ダメじゃん、壊れてるじゃん」と半日悩んだのは私です)

    上記で事前準備は完了です。

    ネジを外していきましょう

    電源をちゃんと消し、コード類も全部抜きましょう。

    星型ネジでとります。ネジの長さが異なるのでそれぞれの位置をしっかりわかるように無くさないように作業を進めてください。傷も簡単についちゃうので気をつけて。

    全部とると、カバーが剥がせるはず。
    ドライバーに同封されているプラ棒が役に立ちますね。

    SSDを交換しましょう。

    おもったよりホコリだらけでした。写真もホコリっぽいですね、すいません。
    画像の部分がSSDです。静電気にも気をつけましょう。

    高いSSD、無駄に緊張します

    紹介したものはサイズもぴったりで、ネジもちゃんと使えます。
    もしネジが使えない場合は、しっかり刺さっていないと思います。

    新しいSSDを装着し、ネジを取り付け直しましょう。

    あとは作成したUSB起動ディスクからMACを起動

    option +電源で起動すると、USBを起動ディスクに選べると思います。
    ディスクユーティリティを選んで、SSDをフォーマットしてください。(怖い)
    あとはクリーンインストールしたり、HDDにバックアップしたタイムマシンから復元してもいいのではないでしょうか!

    以上です!

    追記

    再起動と、長期スリープに不具合があるらしいです。
    詳しくはこちらのブログにまとめられているようなので、参考にしてみてはいかがでしょうか

    http://vintagecomp.livedoor.biz/archives/51967351.html


    続き

    https://logzitsu.tlog.work/m2-ssd-%E3%82%92-gtune-%E3%83%9F%E3%83%8B%E3%82%BF%E3%83%AF%E3%83%BC%E3%81%AB%E6%90%AD%E8%BC%89%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/

    新しいmacを買ったので、現在デスクトップPCに搭載しています。
    この記事のmacbookairは純正のSSDに戻して、知り合いに売るかあげるかする予定です。

    https://logzitsu.tlog.work/macbook-pro-2017/