Diagramme d'Ishikawa (arête de poisson)

À propos des diagrammes d'Ishikawa

Un diagramme d'Ishikawa (également appelé diagramme de causes et effets ou diagramme en arête de poisson) cartographie les causes potentielles d'un problème sur une épine horizontale qui se termine à l'« effet » — le problème à résoudre. Chaque branche principale représente une catégorie de causes ; les sous-branches portent des détails contributifs. Kaoru Ishikawa a introduit cette technique en 1968 comme outil de contrôle qualité pour la fabrication ; elle s'est depuis étendue à la santé, au génie logiciel et aux opérations métier comme méthode de brainstorming structuré pour l'analyse des causes profondes. Les équipes l'utilisent dans les rétrospectives, les phases d'amélioration DMAIC et les post-mortems d'incidents pour éviter la fixation prématurée sur l'hypothèse la plus bruyante.

Schematex suit les conventions de causes et effets d'Ishikawa (1968) avec les 6 catégories de fabrication standard (Main-d'œuvre, Machine, Matière, Méthode, Mesure, Milieu/Environnement) et leurs variantes de services (Personnes, Processus, Lieu, Politique, Procédures, Patron). Deux styles de rédaction — structuré et compact — peuvent être mélangés dans un même document. Références externes : Ishikawa, K. — Guide to Quality Control (1968) · ASQ Cause-and-Effect Diagram · ISO 9001:2015 §10.2 — Corrective Action.

fishbone·§ Ishikawa 1968
↘ preview
100%
Solder Joint Defect Rate — Root Cause Analysis — Fishbone diagram Ishikawa cause-and-effect diagram. Effect: 3.2% solder joint failure rate. 6 categories. Solder Joint Defect Rate — Root Cause Analysis 3.2% solder joint failure rate Man Operator training gap Shift handover not documented Material Solder paste past shelf life PCB pad oxidation Measurement AOI false-accept rate rising Machine Reflow oven temp drift Squeegee blade worn Method Stencil aperture undersized Pick-and-place speed too high Environment Humidity spike in Q3 ESD grounding gaps
UTF-8 · LF · 19 lines · 634 chars✓ parsed·15.9 ms·7.8 KB SVG

1. Votre premier diagramme d'Ishikawa

Le plus petit diagramme d'Ishikawa utile : trois catégories, une cause chacune, une avec une sous-cause.

fishbone·§ Ishikawa 1968
↘ preview
100%
API latency spike — Fishbone diagram Ishikawa cause-and-effect diagram. Effect: P99 > 2 s after deploy. 3 categories. API latency spike P99 > 2 s after deploy Code N+1 query in new endpoint Data Index missing on accounts table Infra DB connection pool exhausted
UTF-8 · LF · 9 lines · 273 chars✓ parsed·0.7 ms·4.2 KB SVG

Quatre règles couvrent 80 % des usages :

  1. Commencez par fishbone, optionnellement suivi d'un titre entre guillemets.
  2. Déclarez chaque branche avec category id "Label" — l'id est une clé interne courte, "Label" est ce qui s'imprime sur le diagramme.
  3. Ajoutez des causes avec id : "texte de cause" sur leurs propres lignes.
  4. Indentez une ligne d'au moins 2 espaces et commencez-la par - pour créer une sous-cause (branche de second ordre) sous la cause précédente.

Les commentaires peuvent commencer par #, //, ou %% en style Mermaid sur leur propre ligne.


2. Éléments constitutifs

L'épine et l'effet

effect "Énoncé du problème" place le texte dans la tête du poisson. Si effect est omis, le parseur utilise le titre du diagramme comme solution de repli.

fishbone "Title"
effect "Specific problem statement"

La tête se place à droite par défaut (config direction = right). Utilisez config direction = left pour l'inverser.

Catégories (arêtes principales)

category id "Label" déclare une branche. L'id est utilisé en interne pour assigner des causes ; le "Label" entre guillemets apparaît sur le diagramme.

Les catégories acceptent également des propriétés optionnelles dans […] :

PropriétéValeursEffet
color: "#hex"chaîne couleur hexadécimaleCouleur de la branche et de l'étiquette
side: top / side: bottomtop, bottomForce cette branche sur le rail supérieur ou inférieur (par défaut : alternance)
order: NentierPosition dans son rail — les nombres inférieurs sont plus proches de la queue
category rework "Rework" [color: "#E53935", side: top, order: 1]

Causes (arêtes secondaires)

Deux styles sont acceptés et peuvent être mélangés dans un même diagramme :

Style A — structuré. Déclarez d'abord les catégories, puis assignez les causes avec id : "texte" :

category code "Code"
category infra "Infra"
code : "N+1 query in endpoint"
code : "Missing cache layer"
infra : "Auto-scaling lag"

Style B — compact. Étiquette de catégorie et causes sur une seule ligne, séparées par ; ou , :

category Code: N+1 query; Missing cache; Synchronous call
category Infra: Auto-scaling lag; CDN misconfigured

En style compact, l'id est auto-dérivé du texte de l'étiquette (en minuscules, espaces → tirets). Les guillemets sont optionnels pour le texte des causes.

fishbone·§ Ishikawa 1968
↘ preview
100%
Conversion rate drop — Fishbone diagram Ishikawa cause-and-effect diagram. Effect: Checkout conversion -12% MoM. 3 categories. Conversion rate drop Checkout conversion -12% MoM UX Confusing multi-step form Slow page on mobile Pricing Price-anchoring missing No annual discount shown Coupon field too prominent Trust No payment security badge
UTF-8 · LF · 10 lines · 344 chars✓ parsed·0.8 ms·5.0 KB SVG

Style C — raccourci mindmap Mermaid. Une ligne nue de premier niveau devient une catégorie, et les éléments - indentés deviennent des causes de niveau 1 frères sous cette catégorie :

fishbone "Why is the site slow?"
effect "Page LCP > 4s"
Content
  - heavy hero image
  - too much above-the-fold text
Tech
  - JS bundle too large
  - render-blocking CSS

3. Sous-causes (branches de second ordre)

Indentez une ligne - d'au moins 2 espaces après une cause de niveau 1 pour lui attacher une sous-cause. Le tiret - fait partie de la syntaxe ; le texte le suit.

method : "Stencil aperture undersized"
  - "Tolerance spec from 2018 board revision"
  - "No re-validation after material change"
method : "Pick-and-place speed too high"
  - "Speed limit lifted during overtime run"

Les sous-causes apparaissent comme de petites arêtes plus courtes et plus étroites se ramifiant à partir de leur arête parente.

fishbone·§ Ishikawa 1968
↘ preview
100%
Medication error increase — Fishbone diagram Ishikawa cause-and-effect diagram. Effect: Errors up 18% in Q3. 2 categories. Medication error increase Errors up 18% in Q3 Process CPOE alert fatigue 5-Rights verification skipped People Float staff unfamiliar with unit Handoff communication gaps
UTF-8 · LF · 12 lines · 420 chars✓ parsed·0.5 ms·4.0 KB SVG

4. Options de configuration

Les lignes config key = value peuvent apparaître n'importe où après l'en-tête. Les clés et valeurs inconnues sont silencieusement ignorées.

Clé de configValeursDéfautEffet
directionright / left (aussi ltr / rtl)rightDe quel côté la tête de l'effet apparaît
sidesboth, top, bottombothQuelle moitié de l'épine héberge les branches
densitycompact, normal, spaciousnormalEspacement entre les arêtes — affecte combien de branches tiennent avant chevauchement
slope (ou ribslope)gentle, normal, steep, ou un nombre (0–3)normal (0.6)Angle des arêtes — diagonal peu prononcé vs. accentué
causeside (ou cause-side)head, tail, bothheadDe quel côté d'une arête les sous-causes se ramifient
widthentier pxautoRemplace la largeur du canevas
heightentier pxautoRemplace la hauteur du canevas
config direction = left
config density = compact
config slope = gentle
config sides = top

5. Étiquettes et commentaires

  • Titre du diagramme : fishbone "Website Traffic Drop" — première ligne, optionnel.
  • Étiquette d'effet : effect "30% organic traffic decline" — le problème à la tête du poisson.
  • Étiquette de catégorie : category id "Nom lisible" — imprimé sur la branche.
  • Texte de cause : entre guillemets "comme ceci" ou sans guillemets (espaces autorisés en style compact).
  • Texte de sous-cause : après le - initial, entre guillemets ou sans.
  • Commentaires : #, //, ou %% au début d'une ligne (après un éventuel espace blanc initial). Les mêmes marqueurs démarrent également des commentaires en fin de ligne en dehors des chaînes entre guillemets.

6. Mots réservés et échappement

Réservés en début de ligne : fishbone (en-tête), effect, category, config.

Le préfixe - sur une ligne indentée est réservé comme marqueur de sous-cause. Pour inclure un tiret littéral au début du texte d'une cause, mettez-le entre guillemets : code : "- old deprecated path".

Les chaînes avec des espaces dans le texte de cause en style structuré doivent être entre guillemets doubles : code : "N+1 query". En style compact (category Label: ...), le texte court jusqu'au séparateur ; ou , et les guillemets sont optionnels.

Les marqueurs de commentaires (#, //, %%) démarrent un commentaire sauf à l'intérieur d'une chaîne entre guillemets doubles.

Séquence réservéeContexteAlternative
# en début de ligneMarqueur de commentaireMettez le texte entre guillemets si # fait partie du contenu
- en début après ≥2 espaces d'indentationMarqueur de sous-causeGuillemets : - "- text with dash"
category, effect, config, fishboneMots-clés en début de ligneNe peuvent pas être utilisés comme identifiants de catégorie

7. Erreurs courantes

Vous avez écritLe parseur ditCorrection
cause1 : "text" sans category cause1 préalableFishboneParseError: Unknown category "cause1"Déclarez category cause1 "Label" avant d'assigner des causes
- "sub-cause" au début du fichier (sans cause de niveau 1 précédente)FishboneParseError: Sub-cause … has no preceding Level-1 causePlacez la ligne de sous-cause immédiatement après une ligne id : "cause"
- "sub-cause" avec seulement 1 espace d'indentationTraitée comme une ligne de cause, pas une sous-causeIndentez avec au moins 2 espaces
category Code: cause one, cause twoParsé en style compact — , et ; sont tous deux des séparateursComportement attendu ; les deux séparateurs fonctionnent
config direction = centerValeur inconnue — silencieusement ignorée, reste rightUtilisez right ou left
config slope = 45Hors plage (doit être 0–3 exclu) ; silencieusement ignoréUtilisez un préréglage (gentle, normal, steep) ou une valeur comme 0.5
fishbone: "Title"Parsé correctement — les deux points après le mot-clé sont optionnelsfishbone "Title" et fishbone: "Title" fonctionnent tous les deux
Catégorie nue en style mindmap MermaidParsée comme une catégorie impliciteContent suivi de lignes - item indentées fonctionne sans category

8. Grammaire (EBNF)

document       = header (blank | comment | effect | category | config | cause | sub-cause | implicit-category)*

header         = "fishbone" ":"? ( WS quoted-string )? NEWLINE
effect         = "effect" ":"? WS quoted-string NEWLINE
config         = "config" WS config-key WS "=" WS config-value NEWLINE
config-key     = "direction" | "width" | "height" | "sides"
               | "slope" | "ribslope" | "density" | "causeside" | "cause-side"
config-value   = bare-word | number | quoted-string

category       = "category" WS id WS label-or-compact ( "[" category-attrs "]" )? NEWLINE
implicit-category
               = bare-text NEWLINE                         # top-level, no ":"

label-or-compact
               = quoted-string                            # structured form: category id "Label"
               | id WS ":" WS compact-causes             # compact form: category Label: cause; cause

category-attrs = category-attr ("," category-attr)*
category-attr  = "color:" quoted-string
               | "side:" ( "top" | "bottom" )
               | "order:" integer

cause          = id WS ":" WS cause-text NEWLINE         # structured form
cause-text     = quoted-string | bare-text

sub-cause      = INDENT≥2 "-" WS cause-text NEWLINE

compact-causes = compact-cause ( (";" | ",") compact-cause )*
compact-cause  = quoted-string | bare-text

comment        = ( "#" | "//" | "%%" ) any NEWLINE
id             = [a-zA-Z] [a-zA-Z0-9_-]*
quoted-string  = '"' any-char-but-unescaped-quote* '"'

Source faisant autorité : src/diagrams/fishbone/parser.ts. En cas de divergence avec le parseur, le parseur a raison — veuillez ouvrir un ticket.


9. Conformité aux normes

Les diagrammes d'Ishikawa de Schematex suivent les conventions de causes et effets d'Ishikawa (1968) : une épine horizontale avec une tête étiquetée (l'effet) et des arêtes diagonales pour les grandes catégories causales, chacune portant des arêtes secondaires (causes individuelles). La hiérarchie à deux niveaux (catégorie → cause → sous-cause) correspond à la profondeur de descente traditionnelle des « 5 Pourquoi » utilisée dans les workflows Six Sigma DMAIC et ISO 9001 d'action corrective.

Ce qui est implémenté aujourd'hui :

  • ✅ Style structuré : category id "Label" + id : "cause"
  • ✅ Style compact : category Label: cause; cause; cause
  • ✅ Sous-causes (niveau 2) via préfixe - indenté
  • ✅ Couleur et côté par catégorie en remplacement
  • ✅ Config direction, density, slope, sides, causeside
  • width / height explicites optionnels
  • ⏳ Sous-sous-causes de niveau 3+ (le parseur stocke les enfants mais le moteur de rendu s'arrête à la profondeur 2)
  • ⏳ Suggestion automatique d'ensembles de catégories standard (6M, 8P, 5P)
  • ⏳ Rendu de l'order par catégorie (parsé mais pas encore appliqué par le moteur de disposition)

Références :


10. Exemples associés

fishbone·§ Ishikawa 1968
Fishbone diagram — Website traffic drop — Fishbone diagram Ishikawa cause-and-effect diagram. Effect: Traffic decline. 6 categories. Fishbone diagram — Website traffic drop Traffic decline Content Publishing frequency down Content too generic Keyword gaps Low-quality AI content Backlinks High-quality backlinks lost High ratio of low-quality links Referring domain growth stalled Low anchor text diversity Competition New competitors entering AI tools replacing search Weakening brand recall Competitors publishing faster Technical Core Web Vitals failing Crawl coverage drop Crawler blocked by WAF Missing structured data UX Bounce rate rising Poor mobile experience Slow above-fold load Excessive popup ads Algorithm Core Update penalty Weak E-E-A-T signals AI Overviews / SGE cutoff Search intent drift
Website traffic drop root-cause analysis
Ishikawa fishbone for a website traffic drop — six causal categories covering content, technical SEO, backlinks, UX, competition, and algorithm changes.
business & operations

11. Feuille de route

Planifié — pas encore parseable. N'utilisez pas ces fonctionnalités dans le DSL généré aujourd'hui ; le parseur les rejettera ou les ignorera.

  • Sous-sous-causes de niveau 3 — un troisième niveau d'indentation ; la structure AST le supporte mais le moteur de rendu s'arrête actuellement au niveau 2.
  • Remplacement causeside par catégorie — définir cause-side sur des catégories individuelles plutôt que globalement.
  • Suggestion automatique de catégories standard — raccourci template: 6M / template: 8P qui pré-remplit les noms de catégories de fabrication ou de service standard.
  • Bloc de légende — mot-clé legend pour déclarer une clé de codage couleur affichée à côté du diagramme.
  • Bloc metadata: — métadonnées structurées clé-valeur (facilitateur, date, révision) affichées dans une annotation de coin.

Suivez les tickets GitHub si vous avez besoin de l'un de ces éléments plus tôt.

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.