[{"data":1,"prerenderedAt":320},["ShallowReactive",2],{"$ft6jtkd6xhw3c":3,"$f34ap0va8ejncp":263},{"featured":4,"latest":129,"categories":227},[5,14,27,37,48,56,66,76,86,96,106,114,122],{"slug":6,"title":7,"date":8,"excerpt":9,"image":10,"categories":11},"custom-database-tables","Custom DataBase Tables","2015-11-24T02:29:34","You can create the new own table freely in the your WordPress database via this plugin. Then, you can make the management of table or (as view or entry or edit) data in a simple user interface.\\nAlso,","\u002Fassets\u002Fuploads\u002F2016\u002F02\u002Fcdbt-overview.png",[12],{"slug":13,"name":7},"cdbt",{"slug":15,"title":16,"date":17,"excerpt":18,"image":19,"categories":20},"10_php_tips_for_developers","PHP開発者が心得ておくべき10の鉄則","2016-01-11T18:38:09","PHPだけに限った話ではないが、プログラミングを行うに当たって、心得て、準備しておくと失敗が劇的に減る事柄をまとめてある良い記事を見つけたので、私なりの解釈で意訳しつつ、経験則を踏まえてあらためてまとめてみた。 オリジナ…","\u002Fassets\u002Fuploads\u002F2016\u002F01\u002Feyecatch-php-10-tips.jpg",[21,24],{"slug":22,"name":23},"column","コラム",{"slug":25,"name":26},"development","開発関連",{"slug":28,"title":29,"date":30,"excerpt":31,"image":32,"categories":33},"jquery-timeline-v1","2種類の横型タイムラインを簡単に作成できる「jQuery.Timeline」をリリース","2017-05-29T14:55:46","現在開発しているサービスで利用するべく、横型タイムラインを生成できるjQueryプラグインを自作したので、そこだけ単独でリリースしてみた。 ソースコード等はGitHubの方にリリースしてあるので、興味のある方は、そち…","\u002Fassets\u002Fuploads\u002F2017\u002F05\u002Fjquery_timeline_image.png",[34],{"slug":35,"name":36},"jqtl","jQuery.Timeline",{"slug":38,"title":39,"date":40,"excerpt":41,"image":42,"categories":43},"optimize-browser-cache-of-static-resources","更新されたJS、CSS、画像のみブラウザキャッシュを破棄して読み込ませる","2018-01-31T15:47:47","WEBサービスの保守や開発をやっていると、JavaScriptやスタイルシート、画像などの静的リソースを更新した際、しばしば「確認したけど、更新されてないよ」とか云われて、「ブラウザのキャッシュを消してからもう一度見て…",null,[44,47],{"slug":45,"name":46},"codes","コード集",{"slug":25,"name":26},{"slug":49,"title":50,"date":51,"excerpt":52,"image":53,"categories":54},"jquery-timeline","jQuery.Timeline version2 – full documentation","2019-03-04T20:40:48","Plugin Overview The jQuery.Timeline plugin provides you two types of the horizontal timeline. You can create a…","\u002Fassets\u002Fuploads\u002F2019\u002F03\u002Fjquery.timeline_v2.jpg",[55],{"slug":35,"name":36},{"slug":57,"title":58,"date":59,"excerpt":60,"image":61,"categories":62},"released-the-sloth","Released the Sloth of mobile-first CSS micro framework!","2019-04-16T18:04:25","I released the “Sloth” that is mobile-first CSS micro framework. I have long used frontend framewo…","\u002Fassets\u002Fuploads\u002F2019\u002F04\u002Fsloth_doc_head.png",[63],{"slug":64,"name":65},"sloth","Sloth",{"slug":67,"title":68,"date":69,"excerpt":70,"image":71,"categories":72},"challenge-to-conceal-the-wordpress-site","WordPressサイトを徹底的に秘匿化する","2020-02-02T23:59:58","私は自分の個人サイトをはじめ、仕事でもWordPressサイトを運用している。WordPressは気軽にサイトを立ち上げられてカスタマイズも簡単な、素晴らしいオープンソースなのだが、世界中で使われまくっているその知名度…","\u002Fassets\u002Fuploads\u002F2020\u002F02\u002Fshutterstock_1878005929.jpg",[73],{"slug":74,"name":75},"wordpress","WordPress関連",{"slug":77,"title":78,"date":79,"excerpt":80,"image":81,"categories":82},"what-is-forkor","Made a shortened URL app called Forkor","2020-07-07T22:27:01","What’s Forkor? Forkor is a service that provides a shortened URL feature that allows you to redirect any…","\u002Fassets\u002Fuploads\u002F2020\u002F07\u002Fforkor.png",[83],{"slug":84,"name":85},"forkor","Forkor",{"slug":87,"title":88,"date":89,"excerpt":90,"image":91,"categories":92},"manual-about-svg-japan","インタラクティブな日本地図を生成するJSプラグイン「SVG Japan」","2020-11-16T21:19:58","各都道府県をそれぞれ選択・クリック可能なインタラクティブな日本地図を生成するネイティブJavaScript建てのプラグイン「SVG Japan」を作ったので、その紹介と使い方をまとめておく。ちなみにソースコードはgit…","\u002Fassets\u002Fuploads\u002F2020\u002F11\u002Fsvg-japan.png",[93],{"slug":94,"name":95},"svg-japan","SVG Japan",{"slug":97,"title":98,"date":99,"excerpt":100,"image":101,"categories":102},"wp-ignitor-plugin-to-conceal-wordpress-site","WordPressサイトを秘匿化するプラグイン「WP Ignitor」","2021-01-19T15:28:21","以前「WordPressサイトを徹底的に秘匿化する」という記事で、WordPress建てのサイトを秘匿化する方法を取り上げたのだが、あれをサイト構築時に毎度実施するとなるととても労力が必要であった。そこで、もっとお手軽…","\u002Fassets\u002Fuploads\u002F2021\u002F01\u002Fbanner-1554x500-1.png",[103],{"slug":104,"name":105},"wp-ignitor","WPイグナイタ",{"slug":107,"title":108,"date":109,"excerpt":110,"image":111,"categories":112},"tastewp","無料でWordPressサイトを複数作成できるWEBサービス「TasteWP」","2021-03-25T20:21:59","私が日本語翻訳に協力しているWEBサービス「TasteWP」について紹介しようと思う。 https:\u002F\u002Ftastewp.com このサービス、サインアップすることなく無料で自分用のWordPressサイトを作れるとい…","\u002Fassets\u002Fuploads\u002F2021\u002F03\u002FTasteWP_screenshot.png",[113],{"slug":74,"name":75},{"slug":115,"title":116,"date":117,"excerpt":118,"image":119,"categories":120},"monster-hunter-rise-skill-simulator","モンハンライズのスキルシミュレータを作ってみた！","2021-06-28T20:24:52","コラムで連載していたNintendo Switch版『モンスターハンターライズ』のスキルシミュレータ開発がやっと一段落して一通り完了した。いやぁ、記事書きながら同時並行で開発すると思っていた以上に時間がかかるもんだなぁ…","\u002Fassets\u002Fuploads\u002F2021\u002F06\u002Fmhrss_v100.png",[121],{"slug":25,"name":26},{"slug":123,"title":124,"date":125,"excerpt":126,"image":42,"categories":127},"comparison-of-javascript-date-libraries","JavaScriptの日時ライブラリを比較してみた","2021-07-28T22:39:19","ネイティブJavaScriptで日時を取り扱う場合、ビルトインされているDateオブジェクトを使うことになるのだが、このDateオブジェクトは取り扱いにクセが多く、直感的に日時を操作できない点でも有名である。そこで、専…",[128],{"slug":25,"name":26},[130,141,153,165,175,184,192,195,198,206,213,220],{"slug":131,"title":132,"date":133,"excerpt":134,"image":135,"categories":136},"pulllog_launched","ガチャ履歴を記録・分析できるWebサービス「PullLog」","2025-08-22T13:05:30","このたび、新しい個人開発サービスとして 「PullLog（プルログ）」 をリリースした。 URLはこちら https:\u002F\u002Fpulllog.net PullLogとは？ PullLogは、ソーシャルゲームのガチャ履歴を記録…","\u002Fassets\u002Fuploads\u002F2025\u002F08\u002Fpulllog_stats_jp.png",[137,140],{"slug":138,"name":139},"industries","プロダクト",{"slug":25,"name":26},{"slug":142,"title":143,"date":144,"excerpt":145,"image":146,"categories":147},"mockapi-php-openapi-schema-generation","モックAPIのレスポンスから OpenAPI 3.0 スキーマを自動生成するPHPツール","2025-04-17T09:31:52","私自身がそうなのですが、OpenAPI仕様書を毎回手作業で書いていて「面倒だな」と思ったことはありませんか？ そんな（私と）あなたにぴったりのツールがあります。 レスポンスの例さえ用意すれば、OpenAPI 3.0 スキ…","\u002Fassets\u002Fuploads\u002F2025\u002F04\u002Fswaggerui-preview.png",[148,151,152],{"slug":149,"name":150},"mockapi-php","MockAPI-PHP",{"slug":138,"name":139},{"slug":25,"name":26},{"slug":154,"title":155,"date":156,"excerpt":157,"image":158,"categories":159},"ambient_playlist_customize","Ambientでメメントモリのラメントプレイヤーを作る","2023-11-30T17:32:39","「Ambient」の最新バージョン 1.2.0で実装した「疑似フェーダー」機能を使って、ソーシャルゲーム「メメントモリ」のYouTube公式チャンネルで公開されているMVを集約したラメント専用プレイヤーを作ってみた。 ラ…","\u002Fassets\u002Fuploads\u002F2023\u002F11\u002Fambient_mememori_1.png",[160,163,164],{"slug":161,"name":162},"ambient","Ambient",{"slug":138,"name":139},{"slug":25,"name":26},{"slug":166,"title":167,"date":168,"excerpt":169,"image":170,"categories":171},"released_ambient_demo_version","Ambientメディアプレイヤーのクラウド版デモを公開","2023-11-22T13:47:36","つい先日「Ambient」の最新バージョン 1.1.0をリリースして、それに合わせてクラウド版デモサイトも公開してみた。 なお、クラウド版デモでローカルのホストコンピュータのメディアを再生するには、そのメディアファイルも…","\u002Fassets\u002Fuploads\u002F2023\u002F10\u002FAmbientMediaPlayer-typologo.png",[172,173,174],{"slug":161,"name":162},{"slug":138,"name":139},{"slug":25,"name":26},{"slug":176,"title":177,"date":178,"excerpt":179,"image":170,"categories":180},"ambient-media-player","YouTubeと自分のPC内メディアを同時に再生できるメディアプレイヤーを作ってみた","2023-10-20T00:00:25","私はよくPCで何か作業をするときには音楽を垂れ流していることが多い。 そういう時にかける曲は、手持ちのアルバムCD等からPCに取り込んだ音源だったり、さらにはYouTubeの動画だったりとメディアや再生環境がバラバラだ。…",[181,182,183],{"slug":161,"name":162},{"slug":138,"name":139},{"slug":25,"name":26},{"slug":185,"title":186,"date":187,"excerpt":188,"image":189,"categories":190},"what-is-the-sunorhc","Sunorhc is a date-time library for JavaScript","2021-08-25T22:55:55","Sunorhc is a lightweight library for handling dates and times for JavaScript. The library wraps a native JavaS…","\u002Fassets\u002Fuploads\u002F2021\u002F08\u002Fshutterstock_1091212919_resized.jpg",[191],{"slug":25,"name":26},{"slug":123,"title":124,"date":125,"excerpt":126,"image":42,"categories":193},[194],{"slug":25,"name":26},{"slug":115,"title":116,"date":117,"excerpt":118,"image":119,"categories":196},[197],{"slug":25,"name":26},{"slug":199,"title":200,"date":201,"excerpt":202,"image":203,"categories":204},"mhrise-skill-simulator-creation-chapter-12","モンスターハンターライズのスキルシミュレータを作ってみる！ 第12回","2021-06-21T13:11:46","今回は「マイセット登録」と護石データの「エクスポート／インポート」機能の追加をしていく。折り良く（悪く？）「FF7リメイク・インターグレード」や「FORTNITEシーズン7」が出たこともあって、そっちをプレイしてたらこ…","\u002Fassets\u002Fuploads\u002F2021\u002F04\u002Fb6ca09e9a7f6faf27641f62dabe64c6ff97b4f326aa478379e3c112aa28eb9ab.jpg",[205],{"slug":22,"name":23},{"slug":207,"title":208,"date":209,"excerpt":210,"image":203,"categories":211},"mhrise-skill-simulator-creation-chapter-11","モンスターハンターライズのスキルシミュレータを作ってみる！ 第11回","2021-06-07T14:52:31","さて、今回はユーザー個別データの管理部分を開発していく予定だが、まずその前にやっておくことがある。 新スキル「風雷合一」に対応する Ver.3.0の大型無料アップデートで追加された新スキルに「風雷合一」というのがある…",[212],{"slug":22,"name":23},{"slug":214,"title":215,"date":216,"excerpt":217,"image":203,"categories":218},"mhrise-skill-simulator-creation-chapter-10","モンスターハンターライズのスキルシミュレータを作ってみる！ 第10回","2021-06-02T00:29:10","今回は、護石管理画面の作成だ。この護石管理では、ユーザーごとに護石の登録を行う機能と、登録した護石を削除する機能を持つ仕様になる。この画面から登録した護石データはデータベースに格納するので、フロントエンド側からのリクエス…",[219],{"slug":22,"name":23},{"slug":221,"title":222,"date":223,"excerpt":224,"image":203,"categories":225},"mhrise-skill-simulator-creation-chapter-9","モンスターハンターライズのスキルシミュレータを作ってみる！ 第9回","2021-05-22T23:56:27","さて、今回はVuexによるデータ・キャッシュの実装だ。一度データベースから読み込んだデータをフロントエンド側で再利用可能なストアに格納することで、データベースへの接続回数を減らしてシステム負荷を下げるとともに、UX的な…",[226],{"slug":22,"name":23},[228,230,232,236,238,239,240,241,242,244,247,248,250,252,254,258,261],{"slug":161,"name":162,"count":229},3,{"slug":13,"name":7,"count":231},7,{"slug":233,"name":234,"count":235},"csnp","Custom Sticky Notes",2,{"slug":84,"name":85,"count":237},1,{"slug":35,"name":36,"count":229},{"slug":149,"name":150,"count":237},{"slug":64,"name":65,"count":237},{"slug":94,"name":95,"count":237},{"slug":74,"name":75,"count":243},37,{"slug":245,"name":246,"count":237},"wpqt","WP Qiita",{"slug":104,"name":105,"count":237},{"slug":22,"name":23,"count":249},29,{"slug":45,"name":46,"count":251},16,{"slug":138,"name":139,"count":253},5,{"slug":255,"name":256,"count":257},"lifelog","ライフログ",64,{"slug":259,"name":260,"count":235},"uncategorized","未分類",{"slug":25,"name":26,"count":262},45,{"type":264,"post":265},"post",{"slug":266,"title":267,"date":268,"excerpt":269,"image":42,"categories":270,"modified":272,"html":273,"tags":274,"related":283,"prev":306,"next":313},"it-is-great-trait-that-implemented-since-php54","PHP5.4から実装されたtraitの使い勝手が素晴らしい","2015-09-17T11:10:56","現在開発しているプラグイン「CustomDataBaseTables」のバージョン2からは、動作環境をPHP5.4以上に変更した。その理由は、PHP5.4から実装されたtraitとClosure::bindTo、そして配…",[271],{"slug":25,"name":26},"2015-11-24T01:49:19","\u003Cp>現在開発しているプラグイン「CustomDataBaseTables」のバージョン2からは、動作環境をPHP5.4以上に変更した。その理由は、PHP5.4から実装された\u003Cstrong>trait\u003C\u002Fstrong>と\u003Cstrong>Closure::bindTo\u003C\u002Fstrong>、そして配列の短縮構文（従来の\u003Ccode>array()\u003C\u002Fcode>に代わって\u003Ccode>[]\u003C\u002Fcode>と書けるようになった）を使っているからだ。\u003C\u002Fp>\n\u003Cp>特にtraitとバインドによるクロージャー複製による恩恵は大きくて、この二つの合わせ技で動的なコンポーネントのレンダリング処理を仕込んでいる。この合わせ技については、また別の機会に紹介しようと思う。\u003Cbr \u002F>\n今回は、使い勝手がすこぶる良い\u003Cstrong>trait\u003C\u002Fstrong>を取り上げてみる。\u003C\u002Fp>\n\u003Ch3>traitを使うとクラスの横拡張ができる\u003C\u002Fh3>\n\u003Cp>PHPでは他の言語のようにクラスの多重継承という仕様がないので、依存関係が縦連結する継承方式しかない。でも、traitを使うことによって、今までのクラスの難点だった継承による階層構造を劇的に改善できる。そして、traitはMixinクラスのように再利用性のあるメソッドグループをサブクラス化して、クラスの本流である継承構造から分離させられるので、上手く利用すればソースの保守性も向上するのだ。\u003C\u002Fp>\n\u003Cp>──と、まぁ、文字で説明されてもいまいちピンとこないので、図で書いてみた。\u003C\u002Fp>\n\u003Cp>まず、従来のクラスの継承構造のイメージ：\u003C\u002Fp>\n\u003Cp>\u003Cimg decoding=\"async\" src=\"\u002Fassets\u002F2015\u002F09\u002Fgeneral_class_model.png\" alt=\"従来の縦継承クラス\" title=\"従来の縦継承クラス\" class=\"center-block\" \u002F>\u003C\u002Fp>\n\u003Cp>機能別などで派生クラスを細分化したりすると、縦継承の階層がどんどん長くなって行ってしまい、処理によっては継承順とかも結構重要だったりして、クラス構造全体の見通しがよろしくない。\u003C\u002Fp>\n\u003Cp>これが、traitを使うと：\u003C\u002Fp>\n\u003Cp>\u003Cimg decoding=\"async\" src=\"\u002Fassets\u002F2015\u002F09\u002Ftrait_class_model.png\" alt=\"traitを使ったクラスモデル\" title=\"traitを使ったクラスモデル\" class=\"center-block\" \u002F>\u003C\u002Fp>\n\u003Cp>traitによって共通的に使える機能を水平展開できるようになり、階層構造がかなりすっきりして見やすくなる。\u003C\u002Fp>\n\u003Cp>また、従来のクラス構造だと、継承途中に派生クラスを追加もしくは削除したい時など、継承順を考慮しながら、前後のクラスの\u003Ccode>extends\u003C\u002Fcode>を書き換える必要が出てくるが、traitとして追加する場合、追加したい階層のクラス内に\u003Ccode>use\u003C\u002Fcode>文を書くだけで事足りる。\u003C\u002Fp>\n\u003Cp>もし修正をクラス図に落とし込まなきゃならない開発案件の時とかを想像すると、継承構造の変更とか極力避けたくなる。そうすると、既存クラス内に拡張が追加されて単クラスが肥大化していく。同時にソースの保守性は低下してく…みたいな羽目になりかねない。\u003C\u002Fp>\n\u003Cp>そんな時にtraitはかなりお手軽にクラスを拡張できるうえ、本流のクラスの継承構造を変更しないので、修正が非常に楽になる。\u003C\u002Fp>\n\u003Cp>下記に「CustomDataBaseTables」での実際の使用例を紹介しておく（実際にはtraitごとに別ファイルになっている）。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>trait CdbtAjax {\n\n  protected function ajax_init() {  \n    (中略)\n  }\n\n(省略)\n\n}\n\nfinal class CdbtFrontend extends CdbtDB {\n\n(中略)\n\n  use CdbtAjax, DynamicTemplate, CdbtShortcodes, CdbtApis, CdbtExtras;\n\n\n(中略)\n\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>インスタンス化するファイナルクラスは上記のCdbtFrontendともう一つ管理画面用のCdbtAdminがあって、それぞれのクラスで共通的に使う、Ajax処理やテンプレート操作、WordPressのショートコード制御などをtraitとして再利用している建て付けだ。\u003C\u002Fp>\n\u003Ch3>trait利用時の注意点\u003C\u002Fh3>\n\u003Cp>traitを利用する時に気をつけないといけない点はいくつかあるが、だいたい下記の3つぐらいに注意していれば困ることはあまりないかと。\u003C\u002Fp>\n\u003Ch4>traitの優先順序\u003C\u002Fh4>\n\u003Cp>trait利用時にオーバーライドされるメンバーがあった場合、優先順序は次のようになる。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>現在のクラスのメンバー ＞ traitのメンバー ＞ 継承元のメンバー\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>※ traitが現在のクラスから呼び出されていた場合\u003C\u002Fp>\n\u003Ch4>同名メンバーのコンフリクト\u003C\u002Fh4>\n\u003Cp>複数のtraitを利用している時に、複数trait内に同名のメンバーが存在するとエラーになる。基本的に同名メンバーは定義しないに越したことはないのだが、機能が重複する部分があるもののあえて分離しておいたtraitを一緒に使わないといけないケースなどがあるかもしれない。\u003Cbr \u002F>\nそういう場合は\u003Ccode>insteadof\u003C\u002Fcode>を使って、同名メンバーのどっちを使うか指定するか、\u003Ccode>as\u003C\u002Fcode>を使ってメンバー名のエイリアスを定義し共存させる。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>class FinalClass {\n    use Trait_1, Trait_2 {\n        Trait_2::method insteadof Trait_1;\n        Trait_2::method as aliase_method;\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>上記の例だと、Trait_1とTrait_2には同じ\u003Ccode>method\u003C\u002Fcode>という名前のメソッドがあってコンフリクトしているが、FinalClassではTrait_1の\u003Ccode>method\u003C\u002Fcode>を使用するように指定している。さらに、使われなくなったTrait_2の\u003Ccode>method\u003C\u002Fcode>は別名\u003Ccode>aliase_method\u003C\u002Fcode>として利用できるようにしてある。\u003C\u002Fp>\n\u003Cp>──\u003Ccode>insteadof\u003C\u002Fcode>と\u003Ccode>as\u003C\u002Fcode>でなんとかコンフリクトは回避できるが、コードの見通しが悪くなるので、こういう使い方はしない方が良い。\u003C\u002Fp>\n\u003Ch4>traitのネスト\u003C\u002Fh4>\n\u003Cp>traitは他のtrait内からも使用できる。だが、これをやり始めるとクラスが毛細血管のように拡散していってしまい、クラス構造が把握しづらくなる。ソースの見通しも非常に悪くなってしまう可能性があるのでやめた方が良い。\u003C\u002Fp>\n\u003Cp>私としては、traitは極力インスタンス化するファイナルクラスでuseするようにしている。\u003C\u002Fp>\n\u003Cp>他にも注意点はあるのだが、あまりトリッキーな使い方をすると、収集がつかなくなって自分の首を絞めることになるので、実用的な路線で利用していくのが最善かと思う。\u003C\u002Fp>\n\u003Ch3>まとめ\u003C\u002Fh3>\n\u003Cp>WordPressの推奨PHP環境が5.6となり、さすがに世の中のPHP普及バージョン環境も5.4ぐらいにはなって来たかと思って調べてみたら、54%もPHP 5.3以下の環境があってまだまだ主流のようだ…。\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>\n  Usage statistics and market share of PHP version 5 for websites\u003Cbr \u002F>\n  \u003Ca href=\"http:\u002F\u002Fw3techs.com\u002Ftechnologies\u002Fdetails\u002Fpl-php\u002F5\u002Fall\" title=\"http:\u002F\u002Fw3techs.com\u002F\" class=\"origin pull-right\">http:\u002F\u002Fw3techs.com\u002F\u003C\u002Fa>\n\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Cp>う～ん、とても素敵なtraitの機能をまだ体験してない人も多いってことだな。\u003C\u002Fp>\n\u003Cp>──というか、このままPHP5.4以上必須な条件でプラグインのバージョン2をリリースしてしまうと、使えなくなってしまうユーザーさんも結構いるってことがちょいとショックだ…。何か対応策を考えないとな…。\u003C\u002Fp>\n",[275,278,281],{"slug":276,"name":277},"php","PHP",{"slug":279,"name":280},"php5-4","PHP5.4",{"slug":282,"name":282},"trait",[284,289,294,299],{"slug":142,"title":143,"date":144,"excerpt":145,"image":146,"categories":285},[286,287,288],{"slug":149,"name":150},{"slug":138,"name":139},{"slug":25,"name":26},{"slug":166,"title":167,"date":168,"excerpt":169,"image":170,"categories":290},[291,292,293],{"slug":161,"name":162},{"slug":138,"name":139},{"slug":25,"name":26},{"slug":176,"title":177,"date":178,"excerpt":179,"image":170,"categories":295},[296,297,298],{"slug":161,"name":162},{"slug":138,"name":139},{"slug":25,"name":26},{"slug":300,"title":301,"date":302,"excerpt":303,"image":42,"categories":304},"tips-of-sending-emails-that-includes-multibyte-strings-on-php","PHPで日本語のメールを送信する時のおさらい","2020-05-17T22:23:28","久々のおさらいシリーズ。 最近、仕事で単発のメールフォームを作ったのだが、メール送信周りの処理をスクラッチしたところ、受信するメーラーによって文字化けしたり、迷惑メール化しちゃったりと結構色々大変だったので、そのノウ…",[305],{"slug":25,"name":26},{"slug":307,"title":308,"date":309,"excerpt":310,"image":42,"categories":311},"changed-how-to-specify-constructor-method-of-widget-from-wordpress-43","WordPress4.3からウィジェットのコンストラクタ指定方法が変わった","2015-09-16T09:26:49","WordPress 4.3から、ウィジェットの仕様が変更されて、PHP4.x系のコンストラクタ指定が非推奨になった。デバッグモードをONにして、WordPress 4.3のサイトにアクセスすると、まれに下記のようなPHP…",[312],{"slug":74,"name":75},{"slug":314,"title":315,"date":316,"excerpt":317,"image":42,"categories":318},"i-live-my-life-the-way-i-would-like-6th","好きなことだけして生きてみることにした 第6回","2015-09-19T19:30:49","この当時、私の趣味の執筆活動において効率化したいと思っていた願望（イコール要求）は、次のようなものだ。 多数の登場人物の情報をデータを網羅するのが大変なので、（エクセルとかではなく）参照しやすい形でデータベース化したい。…",[319],{"slug":22,"name":23},1793391398371]