なっくるすきるす

ねえJekyll、キミ何文字までイケんの?

戻る

前書いた記事が、なぜかデプロイに失敗するんですよ(´・_・`)

んで、記事本文をごっそり削除して、テンプレ記述や「戻る」リンク部分だけにしたら、デプロイできた。
と言うわけで、コレもしや文字数に問題が…と、思ったんですね。超長文だったし。

というわけで、この記事ではJekyllでマークダウン形式の記事をデプロイする際、何文字くらいまでイケるのか順次試していこうと思います。
やりかたですが、生成AIのチカラを借りて、一段落で千文字ぴったりの文章をいくつか作り、徐々に貼り付けていきます。デプロイできなくなるまで、やっていきたいです。

んで千文字ぴったりの文章つくるとか、生成AIなら楽勝なんでしょ?と思ったら、意外に過不足が生じますねー。結構、手直しをしています。文字数多い分には、文言をちょっと変えたり、文を削ったりでいいですが、足りない分はね…(;’∀’)AIに任せきりにしておくと、内容自分で考えて足すのが、ツラくなってしまいます(退化)。お早目段階でデプロイできなくなってくれれば、そんなに大量の文を用意しなくても済むでしょうけど、場合によっては、相当な手作業による文言修正が、必要になるかも、しれませんな…。楽しみ、楽しみ。(つよがり)

一応、今のところは技術系ホームページのつもり(先のことはわかりませんが)なので、技術系の文章をとりあえず追加していくつもりでいます。プログラミング言語の特徴やオブジェクト志向の話など。でもネタに困ったら、近所のケーキ屋さんのハナシとかに、なっちゃうかもです「なんでやねん」

よく考えたら、こういう企画を考えるより先に、Jekyllのドキュメントとか調べた方が、よかったんじゃね?という気が、うっすらしなくもないですが、でも、

試すのが好きなんだ!

試すのが好きなんだ!

試すのが、好きなんだああああ!(絶叫)

それでは、見てください!(シャクティ風) (ここまでで、マークダウン形式のHTML記述など含めて1,000文字)

プログラミングの世界は、常に新しい技術や概念が登場し、その進化のスピードは目覚ましいものがあるため、プログラマーにとって、一度学習した知識だけで満足することなく、常に新しい情報をキャッチアップし、学び続ける姿勢が不可欠です。しかし、日々の業務に追われる中で、体系的に学習時間を確保し、モチベーションを維持し続けることは、決して容易ではありません。プログラミング学習を継続するための重要な要素の一つは、明確な目標設定です。自分がどのようなスキルを習得したいのか、どのような開発に携わりたいのかを具体的にイメージすることで、学習の方向性が定まり、モチベーションを高く保つことができます。次に、学習を習慣化することが挙げられます。毎日決まった時間に少しでもコードを書く、技術系の記事を読むなど、無理のない範囲で学習を日々のルーティンに組み込むことで、着実に知識やスキルを積み重ねていくことができます。また、インプットだけでなく、アウトプットの機会を意識的に作ることも重要です。学んだ知識を使って実際にコードを書いてみたり、個人で開発プロジェクトに取り組んだりすることで、理解が深まり、実践的なスキルが身につきます。プログラミング学習は孤独な作業になりがちですが、積極的にコミュニティに参加することも継続の鍵となります。他の学習者や現役のプログラマーと交流することで、刺激を受けたり、疑問点を解消したり、新たな学習リソースを発見したりすることができます。オンラインのフォーラムや勉強会、イベントなどに積極的に参加し、仲間との繋がりを築くことは、長期的な学習意欲の維持に繋がります。そして、学習の過程で壁にぶつかったり、挫折感を覚えたりすることは誰にでもあります。そのような時、大切なのは諦めずに、原因を分析し、解決策を探す事です。エラーメッセージを丁寧に読み解いたり、ドキュメントや参考書を再度確認したり、時には人に質問することも有効です。また、完璧主義になりすぎず、小さな成功体験を積み重ねていくことも重要です。簡単な課題をクリアしたり、小さなプログラムを完成させたりする事で、達成感を得られ、次のステップへのモチベーションに繋がります。プログラミング学習は、終わりなき探求の旅のようなもの。焦らず、自分のペースで、楽しみながら学び続けることが、目標達成と成長への確実な道です。(ここまでで2,000文字)

PowerShellは、Microsoftが開発した強力なコマンドラインシェルです。PowerShellはスクリプト言語としてWindowsに標準搭載され、システム管理、構成管理、自動化タスクなど多岐にわたる用途でITプロフェッショナルに不可欠なツールです。その核となるのは、特定のタスクを実行するために設計された直感的で覚えやすい「動詞-名詞」形式のコマンドレット群であり、例えば実行中のプロセス一覧を取得するGet-Processやサービスの状態を確認するGet-Serviceなどが挙げられます。PowerShellは単なるコマンドラインシェルに留まらず、変数、制御構造、関数などを備えた強力なスクリプト言語としての側面も持ち合わせ、複雑な処理を自動化することで、繰り返し行う定型的な作業を効率化して、人的ミスを大幅に削減することが可能です。さらに、.NET Frameworkを基盤としているため、.NETの豊富なクラスライブラリを利用でき、ファイル操作、ネットワーク処理、イベントログの操作といった高度な処理も比較的容易に実装できます。PowerShellはWindows環境だけでなく、LinuxやmacOSといったクロスプラットフォーム環境でも利用可能であり、Microsoft AzureやAmazon Web Services (AWS) などの主要なクラウド環境の管理にも対応し、クラウドインフラの構築や運用を効率化するための専用モジュールも提供されています。PowerShellを利用する主なメリットとしては、豊富なコマンドレットによる迅速かつ効率的なシステム管理、スクリプトによる自動化による時間と労力の節約、オブジェクト指向による柔軟な処理、Windowsとの深い統合による強力なシステム操作、クロスプラットフォーム対応による多様な環境での利用、クラウド管理の強化、そしてMicrosoftの公式ドキュメントや活発なオンラインコミュニティによる豊富な学習リソースの存在が挙げられます。これらの特長とメリットにより、PowerShellは現代のIT環境において、システム管理者、ネットワークエンジニア、開発者など、多くのITプロフェッショナルにとって日々の業務効率を向上させ、より高度なシステム管理や自動化を実現するための強力な武器となるでしょう。(ここまでで3,000文字)

C#は、Microsoftによって開発されたモダンで多用途なオブジェクト指向プログラミング言語であり、.NETプラットフォームの主要な言語の一つとして、エンタープライズアプリケーションからゲーム開発、モバイルアプリ開発、クラウドサービスまで幅広い分野で活用されています。その特徴としてC++の強力さとJavaの簡便さを兼ね備えている点が挙げられ、静的型付け、ガベージコレクション、豊富な標準ライブラリ、そして強力な統合開発環境であるVisual Studioとの親和性の高さが、開発効率と保守性の向上に大きく貢献しています。Visual Studioのコード補完機能はバージョンを重ねるごとに進化し、使いやすさとコーディング効率が向上しています。C#の「何か」を具体的に示すならば、オブジェクト指向プログラミングの原則を忠実に守りながら、ラムダ式やLINQ(Language Integrated Query)、非同期処理といった高度な機能もサポートし、開発者はより簡潔で効率的なコード記述が可能です。また、ジェネリクス、プロパティ、イベントなど、現代的なプログラミングに必要な機能が豊富に用意されていて、エンジニアの多様な要求に応えています。C#の「メリット」は多岐に渡り、まず挙げられるのは、.NETプラットフォームとの強力な連携による広範な開発領域への対応力です。Windowsデスクトップアプリケーション、Webアプリケーション(ASP.NET Core)、モバイルアプリケーション(Xamarin/MAUI)、ゲーム開発(Unity)、クラウドサービス(Azure Functionsなど)、IoTデバイス向けアプリケーションなど、様々な種類のアプリケーションを一つの言語で開発できるため、技術スタックの統一化や開発チームのスキルセットの有効活用に繋がります。さらに、Microsoftによる強力なサポートと活発なコミュニティの存在も大きなメリットであり、豊富なドキュメント、ライブラリ、ツールが提供され、問題解決や最新情報の入手が容易です。エンタープライズレベルの大規模なシステム開発から、個人開発の小規模なプロジェクトまで、C#はその高い生産性と信頼性から多くの開発者に支持されており、現代のソフトウェア開発において重要な役割を果たしていると言えるでしょう。(ここまでで4,000文字)

Javaは、1995年にSun Microsystems(現Oracle)によって開発された、プラットフォームに依存しないオブジェクト指向プログラミング言語です。Javaは、「Write Once, Run Anywhere(一度書けば、どこでも実行できる)」というコンセプトのもとで、エンタープライズアプリケーション、Androidモバイルアプリ開発、Webアプリケーション、組み込みシステムなどの、きわめて広範な分野で利用されています。その特徴としては、仮想マシン(JVM)上で動作することによって、異なるオペレーティングシステムやハードウェア環境でも同じように動作することが挙げられ、高い移植性と安定性が魅力です。Javaの「何か」を具体的に示すならば、それはクラスベースのオブジェクト指向言語であり、強力なメモリ管理機能(ガベージコレクション)、豊富な標準ライブラリ、堅牢なセキュリティ機能など安定した稼働システムを備えており、大規模なシステム開発に適しています。また、マルチスレッド処理をサポートしており、効率的な並行処理が可能となります。Javaの「メリット」は数多く、まずそのプラットフォーム非依存性により、開発者は特定の環境に縛られることなくアプリケーションを開発でき、多様な環境への展開が容易になります。次に、長年の歴史の中で培われた豊富な実績と巨大なコミュニティの存在は、学習リソースの豊富さ、問題解決の容易さ、そして常に最新の情報や技術が共有されるという点で大きなメリットです。エンタープライズ領域においては、その安定性と信頼性から基幹システムの開発に広く採用されており、Webアプリケーション開発においては、Spring FrameworkやJakarta EEといった強力なフレームワークが存在し、効率的な開発を支援します。Androidアプリ開発においては、長らく主要な言語として採用されており、多くのモバイルアプリケーションがJavaを基盤として開発されています。さらに、組み込みシステムやIoT分野でも利用されており、その汎用性の高さが伺えます。Javaは、その成熟度、安定性、そして広範な適用範囲から、現代のソフトウェア開発において依然として非常に重要な役割を果たしており、多くの開発者にとって習得しておきたい言語の一つと言えるでしょう。(ここまでで5,000文字)

Pythonは、シンプルで読みやすい文法を持つインタプリタ型の高水準プログラミング言語であり、その汎用性の高さからWeb開発、データ分析、機械学習、人工知能、科学技術計算、自動化スクリプトなど、非常に幅広い分野で世界中の開発者に利用されています。その特徴として、コードの可読性を重視した設計がされており、インデントによるブロック構造や豊富な組み込み関数、そして多様なサードパーティライブラリの存在が、開発効率を飛躍的に向上させています。Pythonの「何か」を具体的に示すならば、動的型付け言語でありながら、オブジェクト指向、手続き型、関数型プログラミングといった複数のパラダイムに対応しており、開発者はプロジェクトの要件に応じて柔軟なコーディングスタイルを選択できます。また、そのシンプルさから初心者にも学びやすく、教育現場でも広く採用されています。Pythonの「メリット」は枚挙にいとまがなく、まずその学習曲線の緩やかさから、プログラミング未経験者でも比較的容易に習得できる点が挙げられます。「There should be one– and preferably only one – obvious way to do it.」というスローガンがあり、標準的なコーディングスタイルが定められていることにより、初心者は学び易くベテランもミスを減らせます。次に、PyPI(Python Package Index)を通じて提供される膨大な数のライブラリやフレームワークの存在は、開発期間の短縮や高度な機能の実装を容易にし、例えばWeb開発ではDjangoやFlask、データ分析ではPandasやNumPy、機械学習ではscikit-learnやTensorFlow、PyTorchなどが広く利用されています。さらに、活発なオープンソースコミュニティによる継続的な開発とサポートも大きなメリットであり、常に最新の情報や技術が利用可能です。プラットフォームに依存しないため、Windows、macOS、Linuxなど、様々な環境で動作するアプリケーションを開発できる点も魅力の一つです。Pythonは、その強力な機能と使いやすさから、現代のソフトウェア開発、データサイエンス、AI分野において中心的な役割を果たしており、今後もその重要性は増していくと考えられます。(ここまでで6,000文字)

JavaScriptは、当初はWebブラウザ上で動作する軽量でインタプリタ型のスクリプト言語として誕生しましたが、現在ではデスクトップアプリケーション開発、モバイルアプリ開発、Node.jsの使用によるサーバーサイド開発など、その活躍の場は非常に多岐にわたっています。その特徴としては、動的型付け、プロトタイプベースのオブジェクト指向、非同期処理を容易にするイベントループなどが挙げられ、Webページのインタラクティブ性を高めるための主要な技術として、ほぼ全てのWebサイトで利用されるようになっています。JavaScriptの「何か」を具体的に示すならば、ECMAScriptという標準規格に基づいており、モダンなWeb開発においては、React、Angular、Vue.jsといった強力なフレームワークやライブラリを活用することで、複雑なユーザーインターフェースを効率的に構築できます。また、JSONとの相性が良く、Web APIとの連携も容易です。JavaScriptの「メリット」は数多く、まずその圧倒的な普及率により、フロントエンド開発においては事実上の標準言語としての地位を確立しており、多くの求人や情報が存在します。その点で、職業プログラマーを目指す上では、必須のプログラミング言語といっても、過言ではないでしょう。次に、Node.jsを利用することで、フロントエンドとバックエンドの両方をJavaScriptで統一的に開発できるため、開発効率の向上やチーム間の連携強化に繋がります。さらに、React NativeやIonicなどのフレームワークを利用することで、iOSやAndroid向けのモバイルアプリをJavaScriptで開発することも可能です。豊富なサードパーティライブラリやフレームワークの存在も大きなメリットであり、UI構築、データ可視化、テスト、状態管理など様々な用途に対応したライブラリを利用することができます。活発なコミュニティによる継続的な開発とサポートも魅力であり、常に新しい技術や情報が共有されています。Webの進化とともにJavaScriptも進化を続け、現代のWebアプリケーション開発において中心的な役割を果たしており、そういった点では、フルスタックエンジニアを目指す上では、習得必須の言語と言っても、過言ではないでしょう。(ここまでで7,000文字)

C言語は、1972年にベル研究所のデニス・リッチーによって開発された、歴史が長い手続き型プログラミング言語です。UNIXオペレーティングシステムの開発に用いられたことで広く普及し、その効率性と柔軟性から、システムプログラミング、組み込みシステム開発、オペレーティングシステム開発、ゲーム開発など、多岐にわたる分野で活用されています。C言語の大きな特徴の一つは、低水準のハードウェア制御を可能にする点です。メモリのアドレスを直接操作できるポインタを持つ事で、高度なメモリ管理やハードウェアへの直接的なアクセスが可能となり、パフォーマンスが重視される場面でその強みが発揮されます。また、コンパイル型の言語であるため、実行前に機械語に翻訳され、高速な実行速度を実現します。標準ライブラリも豊富に用意されており、基本的な入出力、文字列操作、数学関数など、多くの処理を容易に行うことができます。C言語は、手続き型プログラミングのパラダイムに基づいており、プログラムは一連の関数(手続き)として記述されます。そのシンプルさゆえに、プログラミングの基礎を深く理解するのに適しています。C言語の主な用途としては、オペレーティングシステム(Linux、Windowsなど)、組み込みシステム(家電製品、自動車制御システムなど)、デバイスドライバ、ゲームエンジン、高性能なアプリケーションなどが挙げられます。これらの分野では、処理速度やメモリ効率が非常に重要となるため、C言語が依然として主流な選択肢となっています。C言語を学ぶメリットは数多くあります。まず、他の多くのプログラミング言語(C++、Java、Pythonなど)の基礎となっているため、C言語を習得することで、これらの言語の理解が深まります。また、低水準の操作を学ぶことで、コンピュータの仕組みや動作原理をより深く理解することができます。さらに、処理速度やメモリ効率が求められる開発現場ではC言語の知識は非常に有用です。移植性が高いという特徴もあり、様々なプラットフォームで動作するプログラムを開発することができます。現代においても、C言語はシステム開発の基盤を支える重要な言語であり、プログラマーにとって習得しておきたい言語の一つと言えるでしょう。そのシンプルさと強力な機能は、長年にわたり多くの開発者に支持され続けています。(ここまでで8,000文字)

オブジェクト指向プログラミング(OOP)は、現代のソフトウェア開発における中心的な考え方の一つで、プログラムを相互に作用し合う「オブジェクト」と呼ばれる独立したエンティティの集合として組織化するパラダイムです。オブジェクトは、現実世界の具体的な「モノ」や抽象的な「概念」に対応し、データ(属性)とそれに関連する振る舞い(メソッド)を内包しています。例えば、犬というオブジェクトは、名前、年齢、犬種といった属性を持ち、「吠える」「歩く」「食べる」といったメソッドを持つことができます。OOPの根幹をなす概念の一つが「クラス」です。クラスは、オブジェクトの設計図またはテンプレートとして機能し、そのクラスから生成されるオブジェクトがどのような属性を持ち、どのような操作を実行できるかを定義します。実際にプログラムが実行される際このクラス定義に基づいて具体的な「オブジェクト」がメモリ上に作成されます。「カプセル化」は、オブジェクトの内部状態(データ)と実装(メソッド)を外部から隠蔽する原則であり、オブジェクトの内部構造が直接外部に公開されるのを防ぎデータの整合性を保ちプログラムの安全性を高めます。外部からは、オブジェクトが公開しているインターフェース(メソッド)を通じてのみその機能を利用できます。「継承」は、既存のクラス(親クラスまたはスーパークラス)の特性(属性とメソッド)を新しいクラス(子クラスまたはサブクラス)が受け継ぐメカニズムです。これにより、コードの再利用性が向上し、共通の機能を持つ複数のクラスを効率的に定義できます。「ポリモーフィズム(多態性)」は「多くの形を持つ」という意味であり、同じ名前のメソッドが異なるクラスのオブジェクトに対して異なる振る舞いをすることを可能にします。これによりプログラムの柔軟性と拡張性が向上します。OOPを採用する主な利点としては、コードの再利用性の高さ、保守性の向上、拡張性の容易さ、現実世界の複雑なシステムを自然にモデル化できることなどが挙げられます。大規模で複雑なソフトウェアシステム、GUIアプリケーション、ゲームなど、現代のソフトウェア開発の多くの分野において、OOPは不可欠なプログラミングパラダイムとなっています。これらの概念を理解する事で、より効率的で柔軟かつ保守性の高いソフトウェア開発が可能になります。(ここまでで9,000文字)

子供のおもちゃに例えてみます。「クラス」というのは、おもちゃを作るための設計図のことです。例えばワンワン吠える犬のおもちゃのクラスという設計図には、「名前は何にしましょうか?」とか「どんな色にしましょうか?」、そして「お鼻はどんな形?」といった、そのおもちゃについての詳しい情報が書かれています。この設計図に基づき工場で一つ一つ作られたおもちゃが「オブジェクト」なんです。つまりポチという名前で茶色い色の犬のおもちゃも、シロという名前で白い色の犬のおもちゃも、実はみんな同じ犬のクラスという設計図から生まれた別々のオブジェクトなのです。次に、「カプセル化」ですが、これは中身がブラックボックスの宝箱のような物です。中の仕組みがわからなくても、宝箱の鍵穴に鍵を差し込んで回すと、中から素敵な音楽が流れてきたり、キラキラ光る宝石が出てきたりします。このように、オブジェクトの中身の詳しい仕組みは隠しておき、外からどのように使うか、どんな事ができるかだけ決めておくのがカプセル化なのです。「継承」もし、犬のクラスの設計図をもとに、もっと特別な機能を持った新しい犬のおもちゃを作りたいと考えたとします。「空を飛べる犬」のおもちゃの設計図を作る時に、普通の犬の「名前」や「色」、「ワンワン吠えることができる」という基本的な部分はそのまま受け継いで、「空を飛ぶことができる」という、これまでにはなかった新しい機能だけを付け加えることができるのです。これが継承という、とても便利な仕組みです。「ポリモーフィズム」例えば同じ言葉をかけても、違うおもちゃがそれぞれ違う動きを見せてくれるとします。みんなで「動いて!」と元気よく声をかけた時、地面をトコトコ歩く犬のおもちゃもいれば、空をビューンと飛び回る犬のおもちゃもいるかもしれません。同じ「動く」という言葉で、おもちゃの種類によって違う動きをするのがポリモーフィズムという面白い特徴なのです。オブジェクト指向プログラミングは、このように設計図(クラス)から色々な種類のおもちゃ(オブジェクト)を作り出し、それぞれのおもちゃが自分の得意な機能を使い、まるでみんなで楽しく遊んでいるかのようにプログラムを動かすとても創造的な方法なのです。この考え方を使うと、複雑なプログラムも整理しやすくなりみんなで協力して大きなものを作るのに役立ちます。(ここまでで10,000文字)

…一万文字を超えてしまいました(;’∀’)正直、一万文字まで書ければ実用上なんの問題もないので、この調査は終了とします。
前回記事の文字数も遠く超えています。前回記事のデプロイ失敗は、他の原因のようなので、あとは地道に探っていきます。

では

「なっくるすきるす」ホームに戻る